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.↩