Newsgroups: comp.lang.dylan,comp.lang.lisp
Path: cantaloupe.srv.cs.cmu.edu!das-news2.harvard.edu!news2.near.net!howland.reston.ans.net!ix.netcom.com!netcom.com!netcom2!jrd
From: jrd@netcom2.netcom.com (Jon Degenhardt)
Subject: Re: A Dylan implemented on Common Lisp
In-Reply-To: gclement@keps.com's message of Thu, 09 Mar 1995 08:33:46 -0500
Message-ID: <JRD.95Mar10123027@netcom2.netcom.com>
Sender: jrd@netcom2.netcom.com
Organization: NETCOM On-line services
References: <3jdh0j$ib4@news.internex.net> <1995Mar6.221932.28468@franz.com>
	<3jgef0$fnt@cantaloupe.srv.cs.cmu.edu> <D5345w.3xC@cogsci.ed.ac.uk>
	<3jirll$r0g@cantaloupe.srv.cs.cmu.edu>
	<gclement-0903950833460001@155.50.21.58>
Date: Fri, 10 Mar 1995 20:30:27 GMT
Lines: 44
Xref: glinda.oz.cs.cmu.edu comp.lang.dylan:3665 comp.lang.lisp:17027

In article <gclement-0903950833460001@155.50.21.58> gclement@keps.com (Geoffrey Clements) writes:

   .... I currently don't work on AI. None of the programs that I work on
   need to use AI techniques. I really don't have a need for Lisp. ...

   In Dylan I see a language that feels like a static language that has
   borrowed all the best features of Lisp. This makes it attractive as a more
   general programming language. A language like C makes a good application
   programming language. But try writting an expert system in it. Conversely,
   Lisp is a great language to write AI type programs in. But try writing a
   word processor with it. It would be just as easy to write a word processor
   in Dylan as it is to do in C. And it would be just as easy to write an
   expert system in Dylan as it is in Lisp.

In many respects, Lisp is a superior general programming language than
C/C++. One example is the exception handling system, which provides a more
powerful model for handling recoverable errors (those that don't terminate
the application) than C/C++. I have built large database style applications
having very high reliability and recovery characteristics using the Lisp
condition system. Sure, the core of these systems was an AI system, but the
reason the were useable was high reliability/recovery. The power of the
Lisp condition system was the main reason it was economically feasible to
put these characteristics into these applications.

My general observation has been that C/C++ apps don't try to include good
error recovery into apps unless it's absolutely critical. More often, the
application tries to terminate gracefully and puts the recovery burden on
the user. The reason is cost. It's quite a bit of work to put good error
recovery into a C/C++ app.

Lisp has its downsides as a general purpose programming language, such as
image footprint. I no longer build systems for small numbers of well paying
customers who can buy Sparcstations, and instead develop shrink-wrapped
MS-Windows software. It's built in C++, for reasons such as image footprint
size. But to conclude that Lisp is an AI programming language without
significant advantages for general purpose programming is incorrect.

My hope, of course, is that Dylan will be able to eliminate some these
downsides while retaining the advantages of Lisp. If the Lisp vendors can
do it also, great! By the way, the Dylan manual has an excellent writeup on
exception handling.

--Jon Degenhardt
  DocuMagix Inc.
