Books of Note

Practical Common
LispThe best intro to start your journey. Excellent coverage of CLOS.

ANSI Common
LispAnother great starting point with a different focus.

Paradigms of Artificial Intelligence
ProgrammingA superb set of Lisp examples. Not just for the AI crowd.

Thursday, May 13, 2004

Back to the future with Lisp 

I saw a link to this article, titled Extensible Programming for the 21st Century, posted today on OSNews. The author, Dr. Gregory V. Wilson, is basically suggesting that next-generation programming systems need to be extensible. Specifically, he says:

This article argues that next-generation programming systems will accomplish this by combining three specific technologies:
  • compilers, linkers, debuggers, and other tools will be plugin frameworks, rather than monolithic applications;
  • programmers will be able to extend the syntax of programming languages; and
  • programs will be stored as XML documents, so that programmers can represent and process data and meta-data uniformly.

The author goes on to describe "frameworks," which allow extension of the compiler/linker, and "extensible syntax," better known as macros, as being key to the next-generation language.

I found this quite funny. When I read it, all I could think of is that back-to-the-future, next-generation language called Lisp. Interestingly, the author seems to like Lisp as he mentions it (Scheme, in particular) several times during the paper. However, the author concludes that some XML-based storage format will be required to realize these things.

The author then recognizes that a pure XML-based programming language would, well, suck. So instead he suggests that XML will just be the storage format and special editors will transform the XML into something more human-readable at edit time. The author suggests this as a sort of "model/view" issue: the model is XML while the view is whatever the editor wants it to be. It could be something Lisp-like or something Java-like, for instance, depending on the programmer's preference.

The author seems to want to recreate Lisp in XML. My main question was, if you want Lisp, why not just program in Lisp? Toward the end, the author suggests that this is, in fact, Lisp (Scheme), but that Lisp failed because of the parenthesis:

Scheme proves by example that everything described in this article could have been done twenty years ago, and could be done today without XML. However, the fact is that it didn't happen: as attractive as parenthesized lists are conceptually, they failed to win programmers' hearts and minds.

In contrast, it has only taken HTML and XML a decade to become the most popular data format in history. Every large application today can handle it; every programming language contains libraries for manipulating it; and every young programmer is as familiar with it as the previous generation was with streams of strings. S-expressions might have deserved to win, but XML has.

And yes, there are better (i.e. more succinct, and hence easier to process) ways to represent the semantics of programs than XML, but we believe that will turn out in practice to be irrelevant. XML can do the job, and is becoming universal; it is therefore difficult to imagine that anything else will be so compelling as to displace it.

Hmmm.... I think I'll stick with Lisp.

Post a Comment

Links to this post:

Create a Link

This page is powered by Blogger. Isn't yours?