Rust is what C++ programmers made to replace C

Go is what C programmers made to replace C

Note: this isn't just an analogy, this is actually true

Rust was made by Mozilla, whose flagship product is written in C++

Go was made by the plan9 alumni, whose flagship product was written in C


Also the difference in quality between Firefox and plan9 is revealing in and of itself

@sir I'm not informed enough to tell about the quality of both. And I kind of want to play with #Go too. But it still isn't clear for me what are it's "killing features" that distinguish it from the other languages/platforms, there must be some.

@amiloradovsky @sir My background is ANSI C (~15 years), read a few books on Scheme and Common Lisp and Erlang and later Elixir as well as an intro in lambda-calculus (in ML). I had to learn Go last year but current project is in Rust. I'd say wait for Go to get to 2.0 (I jokingly say "wait for an ANSI standard") as it's not as awesome as it could be -- but a decent python replacement. Rust has ML influence and is a *very* fast moving target. Last awesome stable feature is NLL.

@amiloradovsky @sir One big difference that reviewers often leave out but is an important thing for system programmers: Go doesn't use libc (it essentially reimplements it) and calls syscalls directly, while Rust prefers dynamic linking.

Thread model is different as well: Go uses it's own scheduler which results in a M:N model, while Rust moved on to 1:1 (rust thread is created via pthread_create). Most UNIX kernels follow 1:1 model which makes Rust 1:1:1 if you will and Go's M:N:N.

@mike @amiloradovsky @sir rust is a C replacement created by people who have actually used non-C languages

@amiloradovsky @sir isn't go's whole selling point *not* being featureful? It's all about being simple enough to scale to a codebase shared by lots of engineers.

Hence the whole "lol no generics" meme for the first few years of Go.

@max @sir I'd say "generics" ((type-)parametric structures/modules) is an important feature, although somewhat complex.
Being small and simple is an advantage, but only among the systems with roughly equivalent functionality. And there are languages/systems even simpler and smaller than it, yet more powerful.

@amiloradovsky @max I'm gonna be that fucking nerd who says that generics are dumb and go is better without them

@sir @max I value your opinion, honestly. Yet, many data-structures utilize them to a great benefit.

@amiloradovsky @max that's not really true. Data structures are just encoded into memory. What you mean is that their abstractions in programming languages often use generics

@sir @max How else would you define the type of a list or vector of elements of a fixed, but arbitrary, type?

@sir @max OK. It's built-in. But every possible parametric data-structure can't be built into the language.

@veer66 @amiloradovsky @max my concern is that this doesn't feel like a Go feature to me. Go has this awsome habit of sitting quietly on contentious features like generics for a while so all of the smart people involved in Go can have a good think on it, then finally coming out with an industry-shaking elegant solution to the problem. Go modules are a great example: it was shit for a long time and then a solution was found which puts every other dependency management solution to shame. I want to see the same thing happen for generics, and I'm prepared to wait as long as necessary for the right design to be found

@veer66 @amiloradovsky @max these proposals will work... but none of them have the elegance go is famed for

@sir Well, plan9 source code is quite interesting to read and is often nicely aesthetic while Firefox’s code is, well quite unreadable?

@sir @orekix @Rude @lanodan
Hm... incomplete...
Considering that of all POSIX-complaint systems, Linux has the most of Plan9's features (procfs, bind mounts, namespaces, etc), I think we still need it for the time being.

Sign in to participate in the conversation
Mastodon is a private Mastodon instance for friends of SirCmpwn.