The code bases were a complete mess to work on, and even new projects are suffering because of it - no lessons learned can fix it because the language is so weak.
The code bases were a complete mess to work on, and even new projects are suffering because of it - no lessons learned can fix it because the language is so weak.
That's what abstraction is for. Do you not use functions or something? Do you not group related ones in packages, and pay attention to how they model your domain?
What you're pointing out seems more like bad programming practice than a bad language. Even PHP doesn't have this problem.
Apart from these, the language does make it easy for novices to write performant one-offs similar to how Python enables them to write slower one-offs. I personally hate writing in it, but I will when I think it makes my life easier.
Nothing to do with the language. Other platforms provide the same features.
> goroutines and channels
Extremely verbose and also error prone. C#'s Tasks are much better abstractions for example.
> the language does make it easy for novices to write performant one-offs
Nothing to do with the language itself, it's just that it's compiled not interpreted like Python.