
I won't argue with you that Go is simple, but it's not revolutionary. The CSP model was implemented by Rob Pike in at least 3 different languages previous to Go (Newsqueak, Alef and Limbo) and theory behinds it dates to research by Tony Hoare in the late 1970s. Sure, you can disambiguate your method calls, but you could do the same in C++ and Python.Īs for Go's approach for concurrency obviously isn't new. In Go you essentially get the same nasty diamond problem of multiple inheritance, with none of the benefits. This doesn't just give you better control over which functionality you wish to expose, but also avoids conflict when two member objects implement the same interface.

With proper composition, your child objects are named, and you can choose which interfaces you want to delegate to which object. What Go has, despite all the hype, is not real composition with delegation though, but a crippled form of inheritance. Kotlin even made it part of the language: Granted, delegation in COM aggregates was based on conventional interface and not structural typing, and it was implemented using ugly C macros, but dynamic languages made it easier and far more flexible. Using object Composition/Aggregation is a very old, and composition as the recommended paradigm dates back at least to COM (that's just my memory, it's probably older). > Go is a very original language in this aspect as well as with concurrency
Java to swift converter 2017 code#
They later killed it to the point I don't want to deal with Java code anymore. I hope that Go will preserve this simplicity. The best way to express it is that with Go programming is fun again. I'm beyond 50 years old, and too me this makes a huge difference. But the effort required to learn, read and write a language of 1000 words is much lower than a with a language of 10000 words. It's true that the language with 10,000 words is more expressive and richer. As I explained to a friend who is a strong advocate of D, the difference with other programming language is the same as dealing with a spoken language of 1000 words instead of 10,000 words. To me the most remarkable property of Go is its simplicity. Understanding and mastering these properties goes beyond simple syntax analysis. Go is a very original language in this aspect as well as with concurrency. This provides a multiple inheritance equivalent without all the complications on C++ and that most OO oriented languages forbid because of that complication.

The author skips this Go specific and original interface typing. The interface concept of Go makes programming with composition much more flexible and powerful than with the class model. Actually, in modern programming composition is considered superior to inheritance. I don't see any "strength" in the classical object oriented programming model as found in C++ or Java.
