It's Like Déjà Vu All Over Again
"You could probably waste an entire day on the preceding links alone. But why take chances? We also give you Paul Snively..." — John Wiseman, lemonodor
Paul Prescod @ 05/27/2002 03:57 PM. On "Revenge of the Nerds": I thought Paul Graham was wrong on a variety of points, including his "coolness" ranking of the three languages, the idea that Python was the closest to Lisp, his sense that Python is growing towards Lisp (as opposed to let's say Haskell, Icon, Smalltalk) and also on the interesting-ness of his microbenchmark on "language power". In follow-up discussions with him I took issue with his classification of mainstream programmers as "dufuses".
Common Lisp is a huge language. Of course it will share some overlap with Python. But Graham paints it as if he were Anakin Skywalker telling Luke that he knows that Luke will grow up to be just like him. Not likely!
There's a lot of turf to cover here, and I highly recommend that anyone who cares enough to be reading this to read Paul Prescod's (I have to spell out the names, since he, Paul Graham, and I are a gang of Pauls) excellent article at the link he provided above. Paul Prescod remains one of the clearest thinkers I've read, and it's a pleasure to have the opportunity to discuss issues of importance to both of us (and hopefully a larger programming community) with him.
I think when Paul Graham talks about "coolness," that's an awfully subjective thing. In some sense, so is "closeness to Lisp." Closeness how? Syntactically? Semantically? Specific language feature count? I think you make an excellent point in suggesting that if Python is approaching anything, it's probably more Haskell than Lisp. This reinforces a previous point of mine, which is that I think that saying that the comparison is between Python and Common Lisp is misguided; what's really being discussed is the Object-Oriented Paradigm vs the Functional Paradigm. If we generalize Paul Graham's point to say that "most modern programming languages evolve to support significant features of the Functional Paradigm," would the claim still be controversial?
I would also agree, in general, with your assessment of his example. The only caveat that I would offer, however, is the observation that, if you do happen to have a language that supports lexical closures, it's a ridiculously short step to support objects ("Objects are a poor man's closures." — Norman Adams, circa 1985.) In fact, a major reason why Scheme doesn't have a standard object system is the R5RS editorship's sense that to provide one would be gilding the lily—almost pure syntactic sugar with very little gain over what was already there.
I winced when I saw Paul Graham's comment about "dufuses." And yet... and yet... why does it seem to me like the principal benefit of Moore's Law is that our Excel spreadsheets recalculate faster? Of Metcalfe's and Reed's Laws that the amount of spam in our inboxes increases exponentially? In short, why has there not been a revolution in software development to accompany the revolution in hardware? I have to confess that it's tempting to believe that the difference is that anyone can buy a compiler and some books and start cranking; not just anyone can sit down at a silicon chip foundry and design a processor or even memory circuit. I have the impression that Paul Graham wishes we all were doing more sophisticated stuff as programmers. I certainly wish we were.
It's also true in a broad sense that the intersection of Common Lisp and any other language will likely not be the empty set. But I do think that Paul Graham made a stronger, and supportable, claim that Python, and in fact most modern languages, are evolving to support the Functional Paradigm (as I choose to interpret what he's written, rather than the narrower interpretation that modern languages are evolving to become more like Common Lisp).
9:14:06 PM