Thursday, March 22, 2012

The Failure of Programmable Programming Languages

There is this myth out there that the wave of the future is a programming language that can modify itself. This sounds odd at first, until you realize how cool that would be.  It means you could add any feature to your programming language that you need.  Right there.  Without waiting for the language designer to get around to it.

In theory...

In practice, the main languages people hold up as being capable of doing this--Lisp, Smalltalk, and Forth--seem to have totally failed.  I run both Windows and Linux and I can't think of a single application for either operating system that uses anyone of those three languages.

Let me say that again, so far as I can tell, neither Lisp (in any of its flavors: Common Lisp, Scheme, or Logo), nor Smalltalk, nor Forth are in production in any meaningful way at any level on any personal computer.

I kind of wish it weren't so because I love these languages, in theory, but in practice they always fall down.

That is about as damning as it gets.

Go ahead. Prove me wrong.


  1. emacs, GnuCash, TeXmacs, LilyPond....

  2. @Aaron

    I wasn't considering the instances of lisp embedded into larger programs as scripting languages. Of the ones you name, the only one I ever use is Emacs. Never heard of the others. Didn't GIMP and Autocad also have embedded lisps.

    Do you know of others?

  3. The majority of production applications written in Lisp are web applications. Paul Graham's Viaweb was famously written in Common Lisp, and has been an inspiration to generations of startup companies. ITA, recently acquired by Google is the engine for the most popular airline search engines, and is 100 percent Common Lisp.

    Clojure has brought about a new era in the history of Lisp languages, in no small part due to its high-level abstraction of time and change, making multi-core programming in many ways trivial. There has now been more mainstream adoptance of Lisp (in the form of Clojure) than at any time prior, and it is only growing in popularity at a fast rate as judged by conferences, books published, number of libraries being written and actively developed, local meetups, and participation in online forums. Some of the companies that have deployed Clojure in production as the majority of their core product are Runa, Sonian, Backtype (acquired by Twitter), Velocitude (acquired by Akamai), Relevance, and huge number of startups that are using Clojure to great profit.

  4. GnuCash is the free software version of Quicken, TeXmacs is a typesetting app, LilyPond is a music typesetting app--they all embed Guile, as do quite a few other GNU apps.

    And yes, GIMP has an embedded Scheme variant, TinyScheme.

    I remember a platform shooter, Abuse, published by Bungie (at least on the Mac) back in the 90's, which I believe was written in LISP.

    Somewhat OT, can I add that the new BlogSpot is one of the most unusable pieces of crap I've ever seen on the web?

  5. I'd suggest you check out Haskell as a self-modifying programming language that has applications people actually use.

  6. @Shapr - I've looked at Haskell, but can't find much benefit in it. I actually started a blog tutorial on Erlang, but then let it die. Erlang seems more usable to me.


  7. Smalltalk has been used commercially around the world for over three decades! Some of its most famous users include JPMorgan, Desjardins, UBS, Florida Power & Light, Texas Instruments, Telecom Argentina, Orient Overseas Container Lines, Siemens AG, and so on.

    Smalltalk has been used by the U.S. joint military to write a million-line battle simulation program called JWARS. It actually outperformed a similar simulation called STORM written in C++ by the U.S. Air Force.

    Here is a very recent example of a large commercial Smalltalk application: