This is a creation in Article, where the information may have evolved or changed.
This was a short blog post explaining what I believe that Go and Rust was not competitors.
Why people think Rust and Go is competitors
To explain why I think Rust and Go is not competitors, I want to lay out of the reasons why I think the question is being asked in the first place.
- Rust and Go were announced around the same time. Go is conceived in and became public in November of 2009. Rust appeared a few months later in, although Graydon hints this rust may has been conceived much earlier. In the either case, both languages has a distinguished pedigree of influential predecessors. In the case of Go, Hoare ' s CSP, Alef, and Pike ' s newsqueak. Rust is viewed as an extension of the ML family of languages.
- Rust and Go are both touted as memory safe. While the statement is absolutely true, both languages won't tolerate unsafe memory access, what's more important is The world would not be tolerate any new language which are not memory safe. It just so happens that Go and Rust is the first and the languages to emerge after decades of evidence ' in the real world , programmers as a whole, cannot safely manage memory manually.
- Both is young languages, Go achieving 1.0 status on, and Rust earlier this year, implying ambition and upward mobili Ty towards a space occupied by incumbent languages.
These is the arguments that I see used to justify why Rust and Go is competitors. Laying them out as this, it's hard to find them compelling, indeed they appear circumstantial.
Why I think Rust and Go is not competitors
So, why does I think that Go and Rust is not competitors?
- Rust is focused on the "free of charge" abstractions. If This sounds familiar, this have been the catch cry for C + + for decades. As a language which defers many low level actions to their runtime, Go sacrifices some performance for its goals of Simplici Ty and orthogonality.
- Rust is designed-interoperability with C; Rust code is expected to being embedded in other large programs which follow the C calling convention. Go does allow some interoperability through CGO, it is clearly not the expected it's the go programs'll be written .
- Go is focused on concurrency as a first class concept. That isn't to say you cannot find aspects of Go's actor oriented concurrency in Rust, but it's left as a exercise to th E programmer.
- Go is focused on programmer productivity, across the whole software development lifecycle. Rust, as a front end to LLVM, punts on many of those decision.
Rust and Go is not competitors
Go is focused on making large teams of programmers efficient, though rigid application of simplicity-ideas which was not Simple or leads to non orthogonal corner cases is rejected.
Rust is focused on a class of programs which cannot tolerate unsafe memory access (neither can Go, I don ' t think there are Any appetite for a new unsafe programming languages) or runtime overhead-ideas which is unsafe, or come with O Verhead, is rejected or at least pushed out of the core language.
Rust competes for Mindshare with C + + and D for programmers who is prepared to accept more complex syntax and semantics (a nd presumably higher readability costs) in return for the maximum possible performance. For example, micro controllers, AAA game engines, and Web rendering engines.
Go competes for Mindshare in the post 2006 Internet 2.0 generation of companies who has outgrown languages like Ruby, Pyt Hon, and node. JS (V8) and has lost patience with the high deplo yment costs of theJVM based languages.
Related Posts:
- Pointers in Go
- Hear me speak about Go performance at OSCON
- The empty struct
- Another go at the Next Big Language