Bill Clementson's Blog

Bits and pieces (mostly Lisp-related) that I collect from the ether.

January 2005
Sun Mon Tue Wed Thu Fri Sat
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Dec  Feb

Parallel Computing in Lisp - Part 3

Wednesday, January 19, 2005

At the Lightweight Languages Workshop #2 (LL2) in 2002, Todd Proebsting of Microsoft Research gave a presentation titled "Disruptive Programming Language Technologies" (see presentation, view video). In that presentation, he used Clayton Christensen's excellent book The Innovator's Dilemma to illustrate how even entrenched programming languages such as Java and C could lose dominance and market share when confronted with disruptive changes in technology. As part of that presentation, he listed a number of potentially disruptive technologies. One of these was "Concurrent Programming". He speculated that the opportunity for concurrent programming to be a distruptive technology is in that many applications are either explicitly or implicitly concurrent or distributed but are poorly catered for by concurrency features (OS threads, language threads, RPC) in use today. If a language provided superior concurrency capabilities, it could displace more popular languages in specific application areas. Once the "innovator" language assumes prominence in the "niche" area, it would expand further in usage and popularity and potentially displace the more popular languages in other areas as well.

At the same workshop, Joe Armstrong gave a presentation on "Concurrency Oriented Programming in Erlang" (see presentation, view video). In it, he illustrated how Erlang, with its built-in support for lightweight processes and extremely fast process creation, was far superior to either Java or C# in its ability to quickly create new processes. In fact, when an Erlang-based web server was compared to Apache (comparing KBytes/sec vs session load), the ability of Erlang to effectively support many concurrent, parallel processes meant that the Erlang-based web server was able to run over 80,000 sessions while the Apache web server died at around 4,000 sessions. (Note: in the illustration below, the green and blue plots represent Apache running locally and on an NFS file system, the red plot represents the Erlang-based web server running on an NFS file system)

Think of the types of applications that could benefit from a language with the ability to create huge numbers of lightweight, robust processes (e.g. -- parallel MRP/CRP runs in ERP systems, new types of airline fare searches, multi-user/process OS development, "swarm" applications, etc). A language with the ability to effectively support fast, cooperative, concurrent processing could have a significant "disruptive" potential in certain application areas and create the type of innovative disruption described in Christensen's book and Todd's presentation at LL2.

So, what would a language need to provide in order to have concurrency capabilities that are superior to existing popular languages? In his presentation, Joe Armstrong listed the characteristics of a COPL (Concurrency Oriented Programming Language):

In the past, Lisp has had concurrent/parallel implementations, but they failed for different reasons. The most famous concurrent Lisp, of course, was Connection Machine Lisp (see my earlier post). Richard Gabriel identified Multilisp, Qlisp, and Butterfly PSL as other early "real" parallel Lisp implementations as well. However, all of these early concurrent Lisps either never made it into commercial use or required specialized hardware which precluded their widespread usage. With the new emphasis on multi-processor architectures (see my previous post), it seems worthwhile to revisit parallel Lisp architectures.

So, what is being done today? In terms of current work on parallel/concurrent projects related to Lisp, there are a number of interesting developments. Some are Lisp(language)-related and some are Lisp(hacker)-related: I'd be interested in hearing other people's thoughts on this topic. I've had a number of interesting emails already (and there have been a couple of good related blog entries too) - I'll cover these in Part 4.

emacs Copyright © 2005 by Bill Clementson