What matters more? A programming language's ergonomics and features or the libraries available for that language?
Libraries are often the reason why programmers adopt languages.
- Most programs contain much more third-party code than code you wrote
- Libraries create network effects, not languages
- All languages are just worse versions of Lisp
If you're working with data science or machine learning, you're probably choosing Python. Programmers will even rewrite the performance-critical parts of a library in a different language and deal with the ergonomics of language bindings (but that's hidden as an implementation detail). Those libraries serve as the foundation for others until a whole ecosystem of dependent libraries forms that would take a significant effort to replicate in another language.
Systems programmers will often choose Rust or Go – not because they are superior to others, but probably because a client library or particular interface is already implemented. You can use any language if you're working with container or Kubernetes APIs. However, you'll go much quicker if you're using Go.
That's why I think that the problem of sharing code is the most critical question that language designers have to contend with. Or why languages should have a package manager as a first-class citizen. Developers need a strong standard library to build with, and eventually, easily consumable libraries for everything else.
Libraries win over languages today, but that might change in the future.
- Code might be able to be transliterated to different programming languages.
- Common runtime targets like WebAssembly might make cross-language function calls easier.
- There will always be developer arbitrage in manually porting a library to a different language.