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

Re: what is the problem?



Ack, forgot a big one: 

5.5  Programs are trees of expressions, each consisting of 
an operator plus zero or more arguments, which are evaluated
depth-first, each expression yielding a value.  (This is why 
you never see an explicit return in Lisp except to get out of 
the middle of a block.)

Not sure which languages have adopted this idea so far.
Most of the functional ones must have.

--- Paul Graham <paulgraham@yahoo.com> wrote:
> 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, 
> because
> 
> (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
> http://www.paulgraham.com/rootsoflisp.html
> 
> 
> --- 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


__________________________________________________
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