Let me be a little pedantic.

On Sep 4, 2009, at 2:18 PM, Eris Discordia wrote:
Above says precisely why I did. LISP is twofold hurtful for me as a naive, below average hobbyist.

FYI, it's been Lisp for a while.

For one thing the language constructs do not reflect the small computer primitives I was taught somewhere around the beginning of my education.

Like what? The if statement, which was invented by Lisp? The loop statement, for expressing loops? It sounds like you got a dose of Scheme rather than Lisp to me.

For another, most (simple) problems I have had to deal with are far better expressible in terms of those very primitives. In other words, for a person of my (low) caliber, LISP is neither suited to the family of problems I encounter nor suited to the machines I solve them on.

This hasn't been true for a while. Common Lisp is a general purpose language like any other. The only thing I have ever found obnoxious about CL was the filesystem API. Most CL implementations are compilers these days and they produce surprisingly efficient machine code. The Scheme situation is more diverse but you can definitely find performance if that's what you're eluding to.

Its claim to fame as the language for "wizards" remains.

I think this has more to do with Lisp users being assholes than anything intrinsic about Lisp. This is one of the nice things about Clojure. It's a break from tradition in this regard, as well as many others.

Although, mind you, the AI paradigm LISP used to represent is long deprecated (Rodney Brooks gives a good overview of this deprecation, although not specifically targeting LISP, in "Cambrian Intelligence: The Early History of the New AI"). One serious question today would be: what's LISP _really_ good for? That it represents a specific programming paradigm is not enough justification. Ideally, a language should represent a specific application area, as does C, i.e. general-purpose system and (low-level) application programming.


It's as though you have the up-to-date negative propaganda, but not the up-to-date facts. Lisp is "really good for" the same kinds of things other general purpose languages are good for. The main benefits it had in AI were features that came from garbage collection and interactive development. You get those benefits today with lots of systems, but that doesn't mean they aren't still there in Lisp. An advantage it has these days is that it produces code that performs better than, say, Python or Perl. I definitely would not call being a "general purpose system" and suitability for "application programming" a "specific application area." This is like saying agglutinative languages are worse for conquering the world with than isolating languages because the Ottoman empire fell before the English empire.

Please don't interpret this as "Lisp kicks C's ass." I'm saying, you're only seeing the negative half of the situation, and seeing too much causality. I think it's mostly happenstance. Lots of languages succeed despite having a killer app or app area. Python's a good example. Isolating the exact ingredients for the success of any language is probably impossible. I'd say only with C is it really clear what led to success, and it wasn't exclusively features of the language itself (though it was a part of it), but also that it came with Unix along with the source code. If the quacks had chosen C instead of Lisp for their "AI research" perhaps C would have taken a big hit during the so-called AI winter instead of Lisp. Perhaps if the Lisp machine vendors hadn't misunderstood basic economics so thoroughly, their machines would have become more common and taken Lisp with them the way Unix brought C. There are simply too many variables to lay the blame at Lisp's alleged functional basis. Especially today when languages like Haskell exist that take functional so much further they make Lisp look like a procedural language by comparison.

—
Daniel Lyons


Reply via email to