vanderZwan
Joined 13 years ago
Joined 13 years ago
I've heard stories of friends working in (say) such a niche part of fluid dynamics that there's two professors and a few dozen PhDs in the entire world who get it, and the professors refuse to work with anyone who ever cited the other in one of their papers.
On the other hand, I've worked as a programmer for molecular neurobiologists who were working on multi-million dollar research projects mapping out all cell types of the brain using single-cell RNA sequencing, and collaboration seemed much more common there.
The stakes don't get much higher than running the country you're from.
EDIT: Also, the city of Groningen elected a city council of young students and put a 24 year old in charge of the city’s traffic and urban development policy. We still brag about being one of he most bike-friendly cities in the country that was the result.
[0] https://en.wikipedia.org/wiki/Sayre's_law
[1] https://www.theguardian.com/cities/2015/jul/29/how-groningen...
But I do find it hilarious that apparently everyone assumes it to be the former, and that is quite telling about how most of this site's visitors think the other visitors of this site look at the world.
https://benbridle.com/projects/bedrock
In particular the reasoning for what he changed compared to Uxn might be insightful:
https://www.informit.com/articles/article.aspx?p=2213858&WT....
> Don Knuth: As you say, I've come to believe that P = N P, namely that there does exist an integer M and an algorithm that will solve every n-bit problem belonging to the class N P in n**M elementary steps.
Because "heavyweight SPA for a static blog" isn't exactly a rare problem.
One idea that came up was this: you could define a particuda function name as the "landing pad" for handling particular error kinds. Then you "wrap" calls to the library in a function with this name. Here's a part from a larger worked example:
fn catch_io<F: fn()>() -> IoError {
F();
return IoError{ message: "", ok: true }
}
let err = catch_io() { c(); };
https://gist.github.com/bkietz/9bf510299ab62bb4c7f7d2db6eff0...Mind you, this was just discussion, no experience with how well this would work in practice.
And these strings in Goose are 6 bytes, while the ones in C++ are apparently 16 to 24 bytes each.
For context: I'm very active on the Goose discord (and have been following WvO's languages since Lobster was announced on Google Groups eons ago). I goof around there too, and forgot for a moment that outside of that chat it wouldn't be obvious that I'm being tongue-in-cheek.
Note also the fact that e.g. array indexing has bounds checks without escape hatches for the programmer, but the compiler can elide quite a few of them, and the language has tools to help the programmer write code that is guaranteed to be check-free.
I think that suggests the ambition is to compete with Rust in the domain of combining safety with not compromising on performance.
"Just Git Gud First" - Wouter van Oortmerssen
For example, suppose we have a function with a growable array that calls another function (without passing said array) that also uses a growable array as some temporary scratch space. Then the first function's array isn't being used when the second is sleeping, so the inner function's array could safely share the stack because it will all be freed with a single pointer restore once the second function exits.
Now, I actually don't know how the compiler works but as I understand it does things similar to my example to optimize the number of stacks needed (but let's wait for WvO to confirm or deny whether my understanding matches reality).
> Goose: my latest programming language. Safer, faster and less memory than Rust/C++ for algorithms where tightly packed, flat data structures matter.
> It can represent more kinds of data structures as flat, pointer-free bytes than any language I know.
https://xitter.cf/wvo/status/2107979660558766351
So one way to answer might be: how often do you reach for unsafe when using Rust? If you don't I guess Rust is safer. If you do… it gets trickier.
As for UB, I guess you could try looking through the spec and/or the reference? Like, the code is mostly generated by Claude after WvO wrote a specification. If it were anyone else I'd be worried, but given WvO's cv I actually suspect that means the spec leaves basically no ambiguity.
However, Goose compiles to C. Does that by definition mean UB sneaks in, or is there a "UB free" C subset? I don't write C, so I don't really know.