This quote: "Russ: The most important thing I learned is that a successful programming language is about far more than the language itself."<p>and the article linked from that comment is why I think Go is posed to become dominant over other new languages like Rust.<p>Go's documentation, tutorials, videos, support, community - what forms the ecosystem, basically - is really the reason why I keep coming back to it.<p>The core language might not be super-exciting, and it might not be as fast as others, as elegant as others, as "powerful" as others, as feature-rich as others, but the overall experience is very, very pleasant.
I like Go and was seduced by channels and go routines. But, I found time to learn Rust (still learning really - Rust is an epic and amazingly rewarding to learn!) and have to admit Rust is far and away the most modern, state of the art and most important programming language of our time. Go compiles easily (pay for it later!) and is sponsored by Big-G. Rust doesn't compile easily but when it does there's a lot of guarantees. And, it does concurrency just as well. Apples to oranges really though.<p>After picking up Rust I feel like Go just offers nothing. Why not use Java or .Net instead of Go? Highly unlikely Go will be more performant than the JVM. Want something less safe and easier to write in, why not use Python, etc?<p>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.<p>Go has a couple built-in features that other languages can and will get with library addition. Go is a 1-trick pony I feel sometimes. It's an "in thing" that doesn't serve much of a purpose overall I feel. It looks like C but lets face it, it's nothing like it in terms of performance and never will be. It isn't a replacement for C.<p>Is it Google looking at the same strategy as Sun/Oracle and Microsoft? Who knows. But, after using it for awhile and letting the glimmer fade, it feels like a regression. Developers, developers, developers!
I think Go's unique selling point is: it's the anti-LISP, the programming language that isn't particularly programmable and you don't miss it, because the built-ins are sufficient. As a result, code in Go tends to be far more about solving the problem than is the norm; in most languages, you'd first be solving the language or replacing the stdlib. Concurrency is an example, yes, but so are the HTTP and the TLS libraries.
Another post about Go where the Rust crowd comes out to play. I cannot wait for your language to stabilize so that you will no longer feel the emotional need to bash on golang :)
The lack of generics in Go is a non-starter for me. There's polymorphism in built-in types, but these throw out compile time correctness guarantees.