1,265 karma · joined May 24, 2013
This is a clear example of that. Implementing “polymorphism” with Go interfaces is abusing interfaces! Seeing embedding as inheritance misses the point of both embedding and inheritance. Comparing packages to namespaces isn’t that bad, but just delays you getting to know Go for real.
I’m not saying that these old concepts are bad or Go’s new approach is superior. (I believe in that; but that’s not the point here.) I’m saying if you’ve gotten used to these concepts so much that you can’t think or program without them, then there’s a problem. Don’t design a solution around polymorphism or inheritance and then try hard to force that into Go. Design your program with that your language is giving you.
No if you spend years on an app! Seriously, developing a good type, from the idea to the final font files, is massive undertaking and can’t be compared to developing software. (I’m an experienced software developer and also a not-so-experienced type designer.)
CoffeeScript took off because that was the best way to write client-side code with a cleaner language/syntax. But for server-side, if someone wants a better language/syntax, there are a lot of options to choose from and you don’t have to continue with PHP if you don’t like it.