My top-languages-per-use-case list

I have spent considerable time trying to keep up with what happens in the programming language world, perhaps with a little hope of finding the "ultimate programming language" ... that I can use for all my projects :)

Of course, what I have found instead, is that really, the most languages have quite sharp niches, and that it turns out to be hard to find a silver bullet that is good for a lot of stuff. A bit disappointing, since I don't think that is out of ultimate necessity. As the wisdom goes, one should "use the right tool for the job".

Anyway, then there still remains to find out which is the right tool for the job, within a lot of different areas (I'm aspiring to do stuff in a lot of these areas), and so I have tried to sum up my impressions and patchy knowledge about the different current languages, and have concluded the following top list, for different categories:

  • Simple system scripting: Bash
    • Python is often overkill, and is not as readily interoperable as bash scripts.
    • IPython scripts might come close though.
  • Various automation scripts and commandline tools that need to integrate with a lot of tools and languages: Python
    • Go has too bad support for things like bindings to R
  • High performance command-line tools or web services: Go
    • D has too cumbersome multi-threading support
    • Python is not high performance enough
    • C is awful for working with strings
  • High performance tools doing some more advanced high level stuff, or native linux user interfaces: D
    • Go lacks generics and a good user interface library for linux
  • Cross-platform native user interfaces: Free Pascal and Lazarus
  • Things that has to run on the JVM: Java / Scala
  • Web sites: PHP (With ProcessWire or Laravel)
  • Distributed Systems: Elixir
  • Expert systems and rule based reasoning: Prolog