Python syntax in Lisp and Scheme

Andrew Dalke adalke at mindspring.com
Wed Oct 8 22:29:58 EDT 2003


Pascal Costanza:
> He provides more information at http://www.paulgraham.com/icad.html

The page I referenced (http://www.paulgraham.com/power.html)
appears to be a refinement of some ideas on that page.

It's somewhat funny that on the page I mentioned he says:

   So any language comparison where you have to meet a predefined
   spec is testing slightly the wrong thing.

while on the page you reference he gives a comparison between various
languages based on a predefined spec.  And he uses as his test case
something I've not needed.  By comparison, following Kenny Tilton's
lead, the Bagley Shootout Page suggests that in an aggregate of small
but non-trivial problems, OCaml is the most succinct language, with
Python roughly comparable to Lisp/Scheme.

I have run across his pages before, and have a hard time
symphathizing with his view of things.  For example, the start of
the icad essay mentions that Lisp is already "kind of unusual"
compared to C because it includes a full interpreter.  But
effectively all Python programs shipped include a full interpreter
as well, and many give access to that interpreter, so I don't
see what's unusual about it.  Ditto for Tcl apps.  Even some of
my command-line perl apps included a way to pass in perl
code on the command line, as for a search filter.

The phrase "they had hard-headed engineering reasons for
making the syntax look so strange." reminds me of the statement
"better first rate salespeople and second rate engineers than
second rate salespeople and first rate engineers" (and better
first rate both).  That's saying *nothing* about the languages;
it's saying that his viewpoint seems to exclude the idea that
there are hard-headed non-engineering reasons for doing things."

Consider one of those "hard-headed engineering reasons", at
http://www.paulgraham.com/popular.html

   It has sometimes been said that Lisp should use first and
   rest instead of car and cdr, because it would make programs
   easier to read. Maybe for the first couple hours. But a hacker
   can learn quickly enough that car means the first element
   of a list and cdr means the rest. Using first and rest means
   50% more typing. And they are also different lengths, meaning
   that the arguments won't line up when they're called,

That to me is a solid case of post hoc ergo proper.  The
words "1st" and "rst" are equally as short and easier to
memorize.  And if terseness were very important, then
what about using "." for car and ">" for cdr?  No, the reason
is that that's the way it started and it will stay that way
because of network effects -- is that a solid engineering
reason?  Well, it depends, but my guess is that he wouldn't
weight strongly the impact of social behaviours as part of
good engineering.  I do.

And entirely off the topic of programming, his essay at
 http://www.paulgraham.com/nerds.html
has little resonance with my memory of high school.

                    Andrew
                    dalke at dalkescientific.com






More information about the Python-list mailing list