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

Re: what is the problem?

Maybe GLS could answer this question better, but the
defining qualities of Lisp as described in McCarthy's
1960 paper seem to be

1. Conditionals. (Believe it or not, all there was at
the time was a conditional goto.  McCarthy, who was on
the Algol committee, got conditionals into Algol, whence 
they spread to every other language.)

2. All variables are pointers; meaning (a) values are what
have types, not variables, and (b) assigning or rebinding
variables means copying pointers (not what they point to).

3. Functions are first-class objects.  (What first-class
object means is that functions are a data type in Lisp
just like integers, strings, etc, and can be stored in
variables, passed as args, etc.  Recursion is implicit 
in this idea.)

4. GC.

5. A symbol type.  (Symbols differ from strings in that
you can test equality by comparing a pointer.)

6. A notation for code in terms of nested lists of symbols.

When Lisp was first invented all these ideas were far 
removed from ordinary programming practice (represented
at the time by Fortran I, which was basically a macro
assembler).  Over time, the default language, embodied
in a succession of temporarily popular languages, has 
gradually evolved toward Lisp.  1-4 are now widespread.  
Python has a form of 5, though there doesn't seem to be 
any syntax for it.  6, so far, is still unique to Lisp, 

(a) it requires those parens, or something just as bad

(b) if you add that final increment of power, you can no
    longer claim to have invented a new language, but only
    to have designed a new dialect of Lisp ;-)

BTW, if anyone is curious about McCarthy's original paper,
I once went through it and translated it all into running
Common Lisp to help myself understand it better.  See

--- Paul Prescod <paul@prescod.net> wrote:
> Christopher Barber wrote:
> > 
> > > Modula-3, which was based in part on Lisp.
> > 
> > This is news to me.  I thought Modula-3 was an outgrowth of of the
> Pascal
> > family.  It sure doesn't look very Lisplike.
> I would like further explanation of all of this "Python is like
> Lisp".
> They are both dynamically typed. But so are Perl, Smalltalk and PHP.
> Perhaps Lisp has so influenced the world that everything looks like
> it
> today. But I always associated a recursive, functional style of
> programming with Lisp whereas most naive Python programmers use more
> of
> a procedural style until and unless they learn more about Python's OO
> and functional features.
>  Paul Prescod

Do You Yahoo!?
Check out Yahoo! Shopping and Yahoo! Auctions for all of
your unique holiday gifts! Buy at http://shopping.yahoo.com
or bid at http://auctions.yahoo.com