Showing posts with label programming languages. Show all posts
Showing posts with label programming languages. Show all posts

Sunday, July 8, 2007

Seven Wonders of Programming Languages

As is widely known, there has been a massive effort to vote for the New Seven Wonders of the World, an update to the classic list of antiquity.

A fun thought experiment is to list the 7 Wonders of Programming Languages.

Imagine someone is new to our planet, civilization, or computer science. You want to show them the definitive list of programming languages: 7 wonders. What do you pick?

Making a list is easy. Trimming a list is difficult, and that's the problem with Seven Wonders.

Especially when you consider all of the available languages. For a wonderful evolutionary map, see this photo from Wired.

My list is below. Roughly speaking, my criteria are:

  • Proven track record and legacy. Sorry, Groovy, much too soon.
  • Success either in terms of influence or outright usage. However, sheer popularity is not enough.
  • Consideration for brilliance and innovation.
  • Admittedly, there is some blurring of the line between pure syntax and the platform/libraries.
Here is my (biased) list, in approximate chronological order.

1. Fortran

Assembly is older, the Turing machine is much older, but Fortran takes the prize as the grand-daddy of computing. It is arguably the "Proto-Indo-European" of procedural languages. Indeed, it was ugly, was not as influential as, say Algol, and had major problems, but it has a strong argument for being "first".

2. Lisp

For decades, university profs have whipped out this functional language when they want to mess up students. After an initiation to the Algol-based languages, there is no preparation for a mind-trip without for loops or if statements. Massively influential in its space (i.e. non-procedural computing).

3. Smalltalk

Though Smalltalk never seemed to break out of its cult-following, it pretty much nailed OOP right on the head in terms of execution. Smalltalkers are rabid fans and the general community spawned a stunning array of ideas, from OO concepts to library design and development methodologies.

4. C

Does this language need an explanation? Though the syntax is still a bit smelly, even after all these years, this is the definitive iron workhorse, the Lou Gehrig of languages.

5. Python

Python is on the list for 3 reasons. One, it is an educator's dream. It is easy to learn and so friendly that the interactive window harkens back to a simpler time of computing. Second, it is extremely effective for handling the "currency of computing" -- strings. Finally, it is an excellent example of a language that "stays out of the way" even when projects scale in size (i.e. it can be used for newbie programming or high-end applications).

6. Java

Some may sniff that Java has been a hype machine for 10 years. Wrong. The hype has been huge at times, but I think Java is actually under-rated. With a strong lineage to C++ and Smalltalk, Java got a lot of things right. Reflect on the JVM, packages, naming of classes/files, Unicode support, reflection... the list goes on. One day, historians will say that the pervasiveness of Cobol "was like Java, only smaller in scale".

7. JavaScript

A tough call for the last spot. One can try to defend the theoretical side of JavaScript -- I once heard in a conference that the author was influenced heavily by Lisp. One can try to point out elegant examples of its use. But the truth is that it is inseparable from its platform and rides that tidal wave into this spot. Just as C gave us definitive access to the filesystem and sockets, JavaScript gives us the DOM, and Ajax. When you have connections like Google Maps, well, you get red-carpet treatement.

There's the list.... let the flames begin!

What's your list?

ps. Honourable mentions to C++, Visual Basic, Cobol, Perl, and APL.