Visual Guide to Programming Language Properties

Software53 Chinese translation Feb 20, 2013 – Filed under:

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.

enable (but do not always imply) other , as shown by arrows. Properties result in both benefits and detriments to a language, as shown by arrows.

result in both and 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.

Tools

Tool Details C++ ObjC Java Haskell Python Ruby Lisp Code coverage - - EMMA hpc coverage.py 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

Spectrum of Languages by Hardware Distance Visualizes programming languages by their distance from the hardware.

Unique Features of Various Programming Languages Discusses several programming languages and their unique features. Describes some properties mentioned in this article in more detail.



Series This article is part of the Programming for Perfectionists series.

Please send comments and corrections to David Foster.