[net.lang.lisp] lisp productivity question

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