Hacker News new | ask | show | jobs
by sk0g 1421 days ago
Most compiled languages have fractured build ecosystems, and may require some tricky invocation orders, external+not-included dependencies, or some funky flags depending on your compiler version. Or may just not work because you have the wrong compiler, missing their preferred build scripting runtime, etc.

NPM (packages) frequently go down, doesn't resolve packages, or just does something unexpected. Java has the Gradle/Maven split, C++ has a few extra common ones - Make/CMake, Autotools, Ninja, Meson, etc. Modern C# is the one that's got a similar scene to Go from what I've seen.

Go is simple and consistent. It adheres to the Zen of Python, particularly "There should be one– and preferably only one –obvious way to do it.", better than Python itself does (IMO). You check out a repo, you run go build, and 90% of the time you have a binary. A 5 line Python script could automate this process, good luck doing the same with Java or C++.

3 comments

That is 100% fair. I mostly develop on .NET+TS at $dayjob so I never really have experienced particular problems with nuget, and I've had the luck of never having an npm package go down on me either - so I just never really experienced the problems that people are frustrated about.
I wrote a post about this topic. Consistent tooling is very valuable.

https://earthly.dev/blog/programming-language-improvements/

This is really the selling point of Go for me that makes up for it's shortcomings. I've probably lost years off my life thanks to gradle.
When your build scripts require the power of a full-blown programming language, I do have to wonder what catastrophe lead to such complications! I'm sure there's a reason for it and all, but it's just not something I will deal with unless I am being paid (handsomely) to do so.