tjt@kobold.UUCP (T.J.Teixeira) (12/02/83)
I agree that the Lisp programming environment (i.e. support tools) is
responsible for making Lisp highly productive, along with being an
interpreted language and providing automatic storage management (i.e.
garbage collection). At the same time, production Lisp's have avoided
being mere toys by providing good compilers so that the interpreter is
mainly used as a debugging aid for large programs.
I can only think of two features of the language itself that explain
why Lisp is the only major language supporting this type of programming
environment:
1) Data types are associated with values, not variables, and are
determined at run time. Without an interpretive environment, this
is a bad idea (consider all the trouble you can get into in typeless
languages such as assembly language or BCPL), and it is definitely
worth while to include type declarations that can be checked at
compile time. Using an interpreter (and incremental compiler) makes
it very much cheaper to correct this type of mistake.
2) There is a unique, simple and obvious way of representing programs
as data. I don't think the advantage is so much that Lisp is easy
to parse (the reason that is usually expounded), but rather that the
parse trees are easy to manipulate. For most other languages, if
you have n different independently developed compilers, you will
have as many different internal representations of parse trees.
This makes it extremely difficult to build on previous work.
--
Tom Teixeira, Massachusetts Computer Corporation. Westford MA
...!{ihnp4,harpo,decvax,ucbcad,tektronix}!masscomp!tjt (617) 692-6200