Toward Go 2
Java`s generics have had issues due to use site variance, plus the language isn&#x27;t expressive enough, leading its users into a corner where they start wishing for reified generics (although arguably it&#x27;s a case of missing the forest from the trees).<p>But even so, even with all the shortcomings, once Java 5 was released people migrated to usage of generics, even if generics in Java are totally optional by design.<p>My guess to why that happens is that the extra type safety and expressivity is definitely worth it in a language and without generics that type system ends up staying in your way. I personally can tolerate many things, but not a language without generics.<p>You might as well use a dynamic language. Not Python of course, but something like Erlang would definitely fit the bill for Google&#x27;s notion of &quot;systems programming&quot;.<p>The Go designers are right to not want to introduce generics though, because if you don&#x27;t plan for generics from the get go, you inevitably end up with a broken implementation due to backwards compatibility concerns, just like Java before it.<p>But just like Java before it, Go will have half-assed generics. It&#x27;s inevitable.<p>Personally I&#x27;m sad because Google had an opportunity to introduce a better language, given their marketing muscle. New mainstream languages are in fact a rare event. They had an opportunity here to really improve the status quo. And we got Go, yay!