Whitespace as syntax (was Re: Python Rocks!)
neelk at brick.cswv.com
Tue Feb 8 21:32:09 EST 2000
Paul Prescod <paul at prescod.net> wrote:
> You're right. I didn't really mean to say that either Lisp or Smalltalk
> are doomed in the "all development ceases" sense. I meant that they
> would never become mainstream languages.
> Weirdo syntaxes also do not help. Python's syntax is a little weird. But
> Smalltalk, Lisp and (now) Rebol seem to go out of their way to
> antagonize Algol-family-trained programmers.
> If it takes more than fifteen minutes to retrain the eyes from the old
> language to the new language, most programmers will never make the jump.
> Why would they, when there are already too many languages to learn that
> do not demand eyeball retraining?
Lisp does what it does for a pretty good reasons; namely, it makes it
easier to let programmers extend the language through the syntactic
macro facility. Being able to extend the language in sophisticated
ways is a *really* powerful feature. For example, when doing matrix
computations reordering the operations can save enormous amounts of
memory and time; teaching CL to transparently find good multiplication
orders for matrices is a straightforward project of a week or so for a
single Lisp hacker. The comparable effort in C++ is staggering; look
at the Blitz++ libraries for how much work it takes. (And it's not
even possible in Java.)
The effort to make this available to an infix language is seriously
nontrivial; it took the Dylan designers something several years to get
right, and they had wizards of the first rank working on the language.
And it's still not (yet) as powerful as Common Lisp's macros. (Though
it is a match for Scheme's hygienic macros.)
So, basically, I don't care if Lisp never becomes "mainstream", if it
means giving up what makes Lisp powerful and useful. I'm willing to
put in the work it takes to reap the benefits, both intrinsic to the
language and of not having to deal with people too lazy to spend 15
minutes retraining their eyes. ;)
PS. I like Haskell, and Mercury, and Cecil, too. :)
More information about the Python-list