The very fact that that is a headline make me think I'll wait a bit before introducing Go into my tech stack.
The very fact that that is a headline make me think I'll wait a bit before introducing Go into my tech stack.
Yes, a lot of people have gone to production with crappy technologies, this is meaningless. The real question is: could they have done it more easily using a better technology?
I don't think that's meaningless. I take it to mean that your (our, my) valuation of technologies does not hold the relative importance (or correctness) that it's perceived to hold.
As a programmer using Go, I think the comparison is spot on -- if you credit Go for having a much cleaner architecture, vastly better design around security, and profoundly well thought out trade offs.
With some work on libraries and tooling, Go could well become the basis of the next PHP, and become the tool of choice for small web projects. If this happened, the world would be a better (in terms of software-sanity, performance, and security) place.
50 years ago there were a ton of companies that were confidently using hex machine code for large systems in production. That doesn't mean things wouldn't have been 100x easier for them with higher level languages and more modern tools.
Of course I can get by without a debugger if I really need to, but that doesn't mean I won't be a lot more productive with one.
https://github.com/derekparker/delve delve as mentioned other places is more of a true go debugger
Mdb support for Go will be significantly improved in the short term.
Also note that since Go has (optional) frame pointers, tools like DTrace, ktap, kprobes and uprobes, etc work much better (almost as well as for C). SystemTap works too, just that it chokes on Go DWARF without a patch. I will probably fix this soon.
Go, however, is kind of like a memory-safe C...it's almost impossible to actually create super high-level abstractions where you can't tell what the code is doing.
For me, unit tests and the occasional log/print cover 99% of my Go debugging needs.