Visual Guide to Programming Language Properties

Here’s an interactive chart showing high-level properties of various programming languages.
You can filter the chart to only show the properties that your favorite language supports.

Interesting observations:

  • Some properties enable (but do not always imply) other properties, as shown by arrows.
  • Properties result in both benefits and detriments to a language, as shown by arrows.
  • Sometimes it is necessary for multiple properties to be present for a particular benefit to manifest, as shown by arrows interrupted by a vertical bar.

Type System

† “Programming with collections” is discussed in Lisp vs. Pascal Design Philosophies.

Resource Management

§ See also the idea of monadic regions for block-scoped resource management.

¶ Objective-C is the only known language that supports automatic reference counting.

Domain Specific Language Support

‡ Beyond the Lisp family, Prolog is the only other language I know of that is homoiconic.
   Its syntax is reasonably easy to read, unlike Lisp.


  C++ ObjC Java Haskell Python Ruby Lisp
Code coverage - - EMMA hpc SimpleCov varies
Unit test automation - - JUnit HUnit unittest many varies
Package manager - - - Cabal pip gem varies
Environment isolater - - - cabal-dev, hsenv virtualenv rvm varies

Related Articles


This article is part of the Programming for Perfectionists series.

Please send comments and corrections to David Foster.