Lew said:
Adlai said:
just trying to point out the strength, flexibility, and, despite your
preconceptions about a language second only to FORTRAN in its age,
modernity of Common Lisp.
LISP was "originally specified in 1958". [1] ALGOL 58 was specified in
1958. [2] It may be that LISP is third, not second, in age among
third-generation languages.
Common Lisp didn't appear until 1984. [3] Claiming that it's "second
only to FORTRAN in its age" is disingenuous.
Not if it has been designed with ascendent compatibility and it's
still able to run programs that ran on LISP.
http://www.informatimago.com/develop/lisp/small-cl-pgms/wang.html
Works on LISP started in 1958, but the first paper "specifying" it was
AFAIK AIM-8, dated March 1959.
Lisp today resembles LISP of 1958 about as the C-ish languages and
Java of today resemble ALGOL of 1958 and as Fortran today resembles
the FORTRAN of 1957.
No. You can basically run the programs written in AIM-8 LISP in
Common Lisp. You need very little "glue".
The semantics are different in details, but a "normal" lisp program,
ie. a program that doesn't mess with implementation details will
mostly run the same in Common Lisp as in the first LISPs.
After all, you cannot have it both way, complain about CAR, CDR, CONS,
COND and LAMBDA, and imagine that programs using these old operators
don't work anymore.
There are indeed some significant changes in the internal semantics,
eg. the introduction of lexical closures.
But otherwise Lisp grew mostly by adding layers and staying compatible
with the previous iterations. Common Lisp in particular was designed
to be compatible as much as possible with all the lisps that existed
at that time.
For example, one significant late addition, the CLOS, was implemented
at first as a library implemented in CL, and strongly inspired from
the various older object systems.
This is an important characteristic of Lisp, because it means that
Lisp programmers (not Lisp designers) may augment and morph the
language themselves. If a new programming paradigm appears it can be
implemented as a library by anybody and once a concensus appears, it
may be standardized (but we don't lose much time in standarizing
anyways, because it's enough to have this Common Lisp core
standardized, all the rest being add-ons).
Which doesn't prevent implementers to modify their implementations to
take into account these new features that are implemented as libraries
at first, if they can justify the cost by increased performance.
Nowadays, CLOS taken into account by the compiler and produce efficient
code.