Why are there so many comparisons between Rust and Go? They don't seem to be particularly similar languages, either in use-case or style, but it often feels like the community wants there to be a competition between the two, which doesn't seem appropriate to me.
Go should be compared to other high-level garbage collected languages: Java, Python, C# -- that kind of thing.
Rust should be compared to C++ and C, but I'd also love to see it compared to other languages with advanced type systems, or contrasted with languages with more traditional or simple type systems.
I think the comparison comes because Rust has fairly solid high-level ergonomics for a systems programming language, which allows to to "bleed" into comparison with traditional higher level languages even where one might initially think it doesn't belong. However, it's ultimately designed for systems programming so it will be hard for it to win on higher level ergonomics evolving in languages like Go or other.
I think they also get compared because they attract programmers that value similar things, just coming at it from two different directions.
I would agree with this one. I used to say stuff like "Go is kinda like Ruby/Python, looking down the stack, and Rust is kinda like C or C++, looking up the stack." It makes sense that there's some point where those two trajectories meet in the middle, even if on some level they have their own distinct strengths and weaknesses.
I find that for many projects I start, I seem to want:
- static types
- small, static binaries for deployments
- lower memory requirements and value semantics where appropriate
- a reasonably large ecosystem
- cross-platform with strong support for linux/cloud
These two languages usually end up at the top of my list when given these requirements.
Go has the ability to do what C or C++ can do to some extent while offering simplicity, easy to read and understand while rust gives you full control with its powerful type system because of that those complicated things can just be wrapped around someone’s library or function (.unwarp, .clone, Rc, Arc) coupled with rust ability to span in different domains of programming, rust will be compared to higher programming languages
If you are writing a web application, as many people do, they are direct competitors, as you could easily use either one of them (or many others) and get the job done. And for many people in this case developer experience is 10x more important than GC or some advanced language features (that 90% of webapps won't care about).
Btw. I really liked an introduction article about Rust in some Linux magazine (don't remember which one). Write hello world, print a number to stdout, handle option and result, no mention of pointers or algebraic data types theory. I am sure will get a lot of people into using it without scaring anyone. You really need very little to get started.
There's all sorts of ways to categorize languages.
Why group by "high-level" (whatever that means) and gc?
Why not say "why compare rust and go - go belongs in the minimal type system category with zig, C, python, lisp. rust belongs in the inferred thpe system category with haskell, ocaml, f# and so on"?
Or (as is the case with the article), why not group them by popularity for a domain/task and do a comparison in that light?
Comments
Why are there so many comparisons between Rust and Go? They don't seem to be particularly similar languages, either in use-case or style, but it often feels like the community wants there to be a competition between the two, which doesn't seem appropriate to me.
Go should be compared to other high-level garbage collected languages: Java, Python, C# -- that kind of thing.
Rust should be compared to C++ and C, but I'd also love to see it compared to other languages with advanced type systems, or contrasted with languages with more traditional or simple type systems.
I think the comparison comes because Rust has fairly solid high-level ergonomics for a systems programming language, which allows to to "bleed" into comparison with traditional higher level languages even where one might initially think it doesn't belong. However, it's ultimately designed for systems programming so it will be hard for it to win on higher level ergonomics evolving in languages like Go or other.
I think they also get compared because they attract programmers that value similar things, just coming at it from two different directions.
I would agree with this one. I used to say stuff like "Go is kinda like Ruby/Python, looking down the stack, and Rust is kinda like C or C++, looking up the stack." It makes sense that there's some point where those two trajectories meet in the middle, even if on some level they have their own distinct strengths and weaknesses.
I find that for many projects I start, I seem to want:
These two languages usually end up at the top of my list when given these requirements.Go has the ability to do what C or C++ can do to some extent while offering simplicity, easy to read and understand while rust gives you full control with its powerful type system because of that those complicated things can just be wrapped around someone’s library or function (.unwarp, .clone, Rc, Arc) coupled with rust ability to span in different domains of programming, rust will be compared to higher programming languages
If you are writing a web application, as many people do, they are direct competitors, as you could easily use either one of them (or many others) and get the job done. And for many people in this case developer experience is 10x more important than GC or some advanced language features (that 90% of webapps won't care about).
Btw. I really liked an introduction article about Rust in some Linux magazine (don't remember which one). Write hello world, print a number to stdout, handle option and result, no mention of pointers or algebraic data types theory. I am sure will get a lot of people into using it without scaring anyone. You really need very little to get started.
There's all sorts of ways to categorize languages.
Why group by "high-level" (whatever that means) and gc?
Why not say "why compare rust and go - go belongs in the minimal type system category with zig, C, python, lisp. rust belongs in the inferred thpe system category with haskell, ocaml, f# and so on"?
Or (as is the case with the article), why not group them by popularity for a domain/task and do a comparison in that light?