| I'm not the person you're responding to, but I agree with most of what they said, and here's how I would respond to what you're asking: >> Go compiles easily (pay for it later!) > By easily, I assume you mean quickly. How do you pay for it later? I think they actually meant easily, not quickly, in the sense that the type system doesn't require a lot from the user. However, you pay for that later when your codebase becomes larger and you start experiencing bugs that could have been caught by a more sophisticated type system. >> Rust doesn't compile easily but when it does there's a lot of guarantees. > Like what? Rust guarantees a number of kinds of memory safety. It's important to note that this is in comparison to C, not to Go (Go actually has stronger guarantees because of GC, I think). But Rust's strong typing also catches a lot of kinds of bugs that are hard to quantify mathematically but are pretty apparent to anyone who has worked in both strongly and weakly typed languages. I wouldn't call these "guarantees" but I would say that I'm definitely more confident in strongly-typed code than in weakly-typed code. >> After picking up Rust I feel like Go just offers nothing. > Why? Because after using both languages, he hasn't found anything that Go offers. What exactly do you think Go offers that isn't available in other languages? >> Why not use Java or .Net instead of Go? Highly unlikely Go will be more performant than the JVM. > It already is, in some ways. Can you be more specific? For general use cases, the JVM has years of tuning behind it. You can't get more specific than that, as obviously there are some use cases where Go might shine. But as projects grow large, many use cases come out and it's highly unlikely that an arbitrary project will just happen to only have use cases that favor a new language without years of performance tuning behind it, especially when the designers of that new language shows no interest in looking at the last few decades of language research. >> Want something less safe and easier to write in, why not use Python, etc? > Go is less safe than rust? Absolutely. Go's type system is decades behind. C++ has a stronger type system. Rust's, meanwhile, is extremely sophisticated, using ideas from strongly typed functional languages. There are some cases where compromises were made to allow low-level memory access which might allow some bugs which aren't likely in Go, but those are calculated compromises. Go's type system offers neither the safety of a modern statically-typed language nor the flexibility of a modern dynamically-typed language. Go's type system is just pitiful. >> You can't write real time systems in Go and you never will be able to. You probably shouldn't write "systems" programs in Go. > Why do you personally think that? Because GC simply isn't to the point where it can be used for real-time programming, and systems-level access often is just easier to do with manual memory management. >> it feels like a regression > From what? Why? From any other major recent language, because it offers no new innovations and actively doesn't include ones that have proven effective elsewhere. |
Much like that Camaro in my cousin's front lawn. The JVM has years of tuning behind it because nobody can make it work. It is so awful that there exist genetic algorithms[1] just to try to set all the GC parameters to something with good throughput and minimal pausing. Meanwhile, the number of times I've been paged in the middle of the night because my Go server's new-gen permanent eden survivor ratio was critically low has been exactly zero.
https://github.com/sladeware/groningen