Remember folks, choose the right tool for the job…
You can’t read about programming languages these days without Google’s Go programming language being discussed with much praise. I agree that Go is good, but I recently ran across a post addressing some short comings titled Another go at Go…failed! The criticism is constructive and a good read. Bottom line:
- If your problem domain involves patterns that benefit from type parameterization or polymorphism that is easily achievable through inheritance, Go is a poor choice.
- If you find your Go code evolving into having few interfaces but many higher-order functions (or methods) that resort to frequent type assertions, Go is a poor choice.
- Go runtime can learn a trick or two from JRE 7 as regards performance.
I thought it was going to be more bashing by a naive developer but it’s far from the case. It goes to show the point that not all tools are the right tool for the job and not a single programming language is right in all cases.
Developers tend to use a tool, programming language or framework, and try to fit the problem’s solution to the tool. It doesn’t always work that way.