[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: A Dylan implemented on Common Lisp



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

   When you ask
   people what they are using Lisp for, most answer with some form of AI
   problem. 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.

This is one of the big misperceptions about Lisp that we're hoping
won't become a big misperception about Dylan.  The area of Lisp's
greatest advantage is not the small number of constructs built-in to
make symbolic programming ("AI") easier -- those could easily be added
to C or whatever -- but rather the "dynamic" orientation of the whole
language.

By "dynamic orientation", I mean that Lisp and Smalltalk and Dylan are
optimized to make it easy to get a prototype program running quickly
and easy to change things later, even on the fly.  Many elements go
into this: automatic storage management, incremental everything, a
not-too-restrictive, hierarchical, extensible type system, a lot of
high-level facilities so that the user is not constantly twiddling
pointers and word-lengths, and so on.  (Yes, some of these things,
under some conditions, have a cost in efficiency.  Often the benefits
of fast, flexible development outweigh that cost.)

This is hard to add on after the fact -- just ask the
people who were trying to build Energize, Lucid's attempt to build a
dynamic C++ environment.  (Yes, there have been some partial successes
in similar projects.)

These dynamic languages are ideal for "evolutionary" or "exploratory"
or "incremental" software development, by which I mean any software
development in which you don't know exactly what you want before you
start programming.  It can be argued that practically ALL programming
is of this kind, and that we should stop fighting that idea and start
building tools to make it work better.

It is perhaps not surprising that most of these dynamic langauges grew
up in and around AI research groups.  AI is one of the fields where
the evolutionary nature of software development is right there in your
face and can't be avoided.  AI people can't even pretend that they
know what they are doing, unlike Software Engineers, who can pretend.
and sometimes even convince others.  :-)

Anyway, the goal of Dylan is to get most of the benefits of this more
dynamic, evolutionary approach, while minimizing the extra cost that
keeps these languages from being more widely used.

   Please don't flame me on this...

I don't think this is a flame, but feel free to take it as one if you
like.  As the ancient proverb says: "If you can't take the heat, don't
tickle the dragon."

-- Scott

===========================================================================
Scott E. Fahlman			Internet:  sef+@cs.cmu.edu
Principal Research Scientist		Phone:     412 268-2575
School of Computer Science              Fax:       412 268-5576
Carnegie Mellon University		Latitude:  40:26:46 N
5000 Forbes Avenue			Longitude: 79:56:55 W
Pittsburgh, PA 15213			Mood:      :-)
===========================================================================