4 ms·
From https://github.com/graydon/rust/wiki/language-faq https://github.com/graydon/rust/wiki/language-faq : *Have you seen this Google language, Go? How doe
by neilk 16y ago
From https://github.com/graydon/rust/wiki/language-faq https://github.com/graydon/rust/wiki/language-faq :
*Have you seen this Google language, Go? How does Rust compare?*
Yes.
Rust development was several years underway before Go
launched, no direct inspiration.
Though Pike’s previous languages in the Go family
(Newsqueak, Alef, Limbo) were influential.
Go adopted semantics (safety and memory model) that
are quite unsatisfactory.
- Shared mutable state.
- Global GC.
- Null pointers.
- No RAII or destructors.
- No type-parametric user code.
There are a number of other fine coroutine / actor
languages in development presently. It’s an area of
focus across the PL community.
- quanticle 16y agoThanks for that. It wasn't clear from the linked article that Rust was started before Go. The overall impression that I got from TFA was that Rust is another instance of the garbage-collected system language fad.
- ramchip 16y agoWhat are the other instances? Besides Go, I don't recall many languages that fit the bill. There's D, but it's not very new and certainly not a fad language.
- steveklabnik 16y agoAnd it's only garbage collected if you want it to be. (My friends are making an exokernel in D)
- konad 16y agoI think the fact that Rust is older and yet Go has 1000s of active programmers is indicative of something. "Ship early, ship often" springs to mind. The Plan9 community has been working like that for years, almost every day an updated version is available (the distro cdrom is rebuilt every night) with bug fixes / improvements / new stuff.
- hga 16y agoGo is the product of people who's work automatically gets attention and is backed by Google. You still might be right, but Go is probably not a useful example.
- supersillyus 16y agoI don't know that all of the Go bullet points are correct. For one, Go doesn't have RAII or destructors specifically, but it has "defer" and runtime.SetFinalizer which provide similar capabilities. Also, does Go necessarily have global GC? My understanding is that it currently does, but that's not part of the language spec... could it not in theory use reference counting or per-thread GC? The other points seem pretty dead-on.. Rust seems to prioritize safety over simplicity, which is probably a good thing.