3 ms·
Soon Go will have both generics and package management, two things the maintainers really didn't think it needed on Day One. I don't say this to insult anyone,
by habosa 7y ago
Soon Go will have both generics and package management, two things the maintainers really didn't think it needed on Day One. I don't say this to insult anyone, Go has always been a great and unique language. I say this as a plea to any aspiring language designers out there: please don't try to make a modern general purpose language without these things. We really do need them.
- hello_moto 7y ago> two things the maintainers really didn't think it needed on Day One Deep down they know they need these in order for the language to survive in the modern world. I'm guessing that the reason they chose that tone back then was because they wanted to release the language as small as possible so that people can start using, learning, and grow in moderate fashion. And also they can't solve all problems at once.
- eloff 7y agoActually, I think the success of Go has proven the contrary. You can make a modern language without those features. In fact for an MVP you want to cut difficult or not absolutely necessary features from the first version. So I think Go did fine here and I encourage other language designers to follow their lead. One cavaet is if you don't think about at least how generics might work in your language in a backward compatible way, you box in your future options. See java for how this goes poorly. If you look at the generics proposals for Go you see how this has greatly complicated the task. That doesn't automatically mean it was a mistake to do it that way though. If you try to do everything at the beginning you might take so long that you fail outright or don't get the early adopters who help shape the language. Plus you'd be behind the curve on adoption. So I think Go did the smart thing here.
- StandardFuture 7y agoYou and the parent are correct. Package management and generics are essentials for any general-purpose programming language. But, they fall lower than many other features (like syntactic consistency and simplicity) ranked by importance for developer productivity and usefulness.
- james-mcelwain 7y agoThere's nothing wrong with Java generics. Reified generics are a design choice. As someone who uses a lot of non-Java JVM languages, I'm thankful interop is easier.
- eloff 7y agoThere's a lot wrong with them. You may like the design choice, but I can find plenty of people who hate it.
- pron 7y agoThose "plenty of people" think they hate it because they don't understand it (especially the problem of variance). The only languages (in relatively common use) that reify generics for variant types are C++ and C#, and both of their variance models are fucked up, albeit in different ways. If reference-type generics were reified, Java couldn't serve as a platform for so many languages. In other words, they might hate it, but they would have hated the alternative even more. Specializing generics for invariant types is another matter, and Java is getting those.
- pjmlp 7y agoWithout Google, Docker and Kubernetes, Go would have been as successful as Limbo and Oberon-2, its two main influences.