Ivan Khodyrev
2 min readDec 23, 2020

--

Go and Rust are great languages for their niches, but it's hard to compare them to Java.

Go doesn't have generics and thus lacks high level structure and collection processing options, which is quite bad for maintainability. I was a bit scared, when I saw the code of my friend which was overfilled with cycles just in order to filter and map some values, it looked really ugly even in the end of 2015 and nothing changed since that time. Also it seems creators of Go have quite narrow view of its possible applications, which lead to less choices of how we could use it. For example Go has only one garbage collector, which is mostly suitable for small heaps. In garbage collecting there is no silver bullet, each GC algorithm has its strengths and weaknesses. Developers of Java know it and thus Java has a variety of collectors which increases its applicability to different situations.

Rust looks quite low level for now, which is maybe OK for system level applications where it competes with C/C++, but not for higher level areas, where Rust's necessity and maintainability are questionable. Its syntax is filled with specifics like as_ref(), borrow() and different special characters which are needed conceptually but seem clunky and temporary when you try to work on the high level. As an experienced programmer I really like the concept of ownership, it is beautiful, shifts your mind a bit and makes you think different which is cool, but at the same time this concept greatly increases the entry threshold for new programmers, which naturally reduces the size of community and thus the diversity and quality of ecosystem.

I don't mention the object oriented approach which both Go and Rust simply don't support. My personal preference is to have this option in a language, especially if it tries to target wide range of applications.

--

--

Ivan Khodyrev
Ivan Khodyrev

Responses (1)