In this small post I will tell you why I think that Go and Rust are not rivals.
Why do some people think that Go and Rust are rivals?
Rust and Go announced at about the same time. The development of the Go language was started in 2007 and in November 2009 it saw the light of day. Rust appeared a few months later, in 2010, however, Graydon said that the development began much earlier . In any case, both languages ​​clearly differ influential predecessors. In the case of Go, this is CSP Hoare, Alef, and Newsqueak Pike. Rust is considered as an extension of the ML-languages ​​family.
What Rust, what Go - both are considered safe (in terms of memory management). While this statement is absolutely true, both languages ​​do not encourage the use of unsafe code; more importantly, today the world simply will not accept language without such guarantees of reliability. It just so happened that Go and Rust are the first languages ​​that have been able to prove, after decades of evidence, that in reality programmers simply cannot safely handle memory manually.
Both are very young: Go reached 1.0 in 2012, and Rust in mid-2015. Both are more than ambitious and clearly ready to press the "old-timers".
Why do I think that Go and Rust are not rivals?
Rust's focus lies on “free of charge” abstractions. Sounds familiar, doesn't it? For the past few decades, it has been the battle cry of all C ++ programmers! Since Go does too many things during the execution of the program, you have to sacrifice some performance in favor of simplicity and orthogonality.
Rust was initially made compatible with the C language; Rust code, by definition, is easily embedded into programs that support calls from C. Go is also compatible with the convention of calls C through cgo, but it is worth using it only when it is really necessary.
Go focus lies on a first-class, priority implementation of competitiveness. Not that aspects of this competitiveness could not be found, for example, in Rust, but in Go they are part of the language.
Due to the widespread imposition of "simplicity", Go makes large development teams more efficient. Complex ideas or ideas that lead to non-orthogonal behavior are cut off. Rust marks on a class of software that does not allow unsafe memory usage or how much is a significant overhead. ')
Rust competes for the attention of C ++ and D programmers, who are ready for much more complex syntax and semantics (and, which is also important, for a significant decrease in readability) in exchange for high performance. Microcontrollers, AAA games, web page rendering engines. Go is competing for the attention of Internet 2.0 companies that have simply outgrown languages ​​such as Ruby, Python or Node (V8) and can no longer tolerate the high demands of languages ​​with JVM.