State of the Union in Programming Languages (2015)

Some programming languages are better at some tasks than others. Below I have presented my own assessment of how various languages stack up against each other for the following common classes of tasks:

  • Programmer-bound: Degree of expressive power. Magnitude of what you can implement with a small development staff. Affected by design simplicity, platform stability, and library availability.
  • I/O-bound: Suitedness for programs that spend most of their time performing I/O.
  • CPU-bound: Suitedness for programs that spend most of their time calculating.

Additionally, some programming languages are on the rise or on the decline, for a wide variety of reasons. So I have also provided an assessment of:

  • Platform longevity: Degree to which the language is likely to attract and retain people and resources.

The rating scale is:

  • Excellent (+2)
  • Good (+1)
  • Okay (0)
  • Poor (-1)
  • Fail (-2)

Application Domain / General Purpose

  Python Java C# C C++
Programmer-bound Excellent Okay Okay1 Poor Okay2
I/O-bound Good Good Good Good Good
CPU-bound Poor Good Good Excellent Excellent
Platform longevity Good Okay3 Excellent Excellent4 Good

Web Domain

  JavaScript5 PHP6 NodeJS Ruby Go
Programmer-bound Okay7 Okay8 Poor Good9 Okay
I/O-bound Okay? Okay? Excellent Good Excellent
CPU-bound Good10 Okay? Good11 Poor Excellent
Platform longevity Excellent12 Good13 Good14 Good15 Okay

Other Domains

  Objective-C Haskell Perl Fortran Lua
Domain OS X, iOS Academia SysAdmin Computation Game Mods
Programmer-bound Good16 Okay17 Good18 ? Good
I/O-bound Good Poor19 Good? ? Good
CPU-bound Excellent Good Poor? Excellent Good
Platform longevity Good Good20 Poor21 Good Okay

Other Worthy-of-Consideration Languages

  • Swift
  • Clojure - a Lisp dialect
  • OCaml
  • Standard ML
  • Ada
  • Rust
  • Idris
  • Forth

  1. Normally Good, but still leans verbose, similar to Java.

  2. Normally Poor, based on the language design, but has a good standard library and massive corporate support for tooling.

  3. Normally Good, but Oracle is a poor steward for the language.

  4. Cemented as the just-above-assembly language of all CPUs.

  5. Specifically JavaScript used on the frontend in a web browser.

  6. Is actually a Web Framework masquerading as a Programming Language.

  7. Normally Poor, but has a huge number of external libraries and massive corporate support for tooling around inefficiencies in the language.

  8. Normally Poor, but has easiest deployment model of any web framework.

  9. Normally Excellent, due to massive community support, but degraded by platform instability and lack of language specification, which retards tooling development.

  10. Normally Poor, but has highly performant VMs due to massive corporate support.

  11. Normally Poor, but has highly performant VMs due to massive corporate support.

  12. Cemented as the assembly language of the web browser.

  13. Normally Okay, but being propped up by cheap web hosting providers and an army of amateurs.

  14. Drafts off of JavaScript’s popularity.

  15. Normally Okay, but being propped up by startups.

  16. Normally Okay, but has a top-class standard library.

  17. Normally Good, but degraded by impenetrable documentation and pervasive speculative generality.

  18. Normally Excellent, but degraded by excessive redundant syntax.

  19. Normally Good, but degraded by making I/O difficult to perform.

  20. Normally Okay, but is being propped up by academia.

  21. Normally Fail, but lives on as a preinstalled scripting language for Linux.