This old argument. I won't say a thing about Lisp. Let's talk about Ruby. For those of you who were using Ruby in 2005 when Rails was released. Are there any of these arguments that you haven't heard at least <i>once</i> in the last eight years about Ruby? That it's too powerful, that programmers make their own idiosyncratic worlds, that programs are too complicated to understand, &c. &c.<p>Yet, somehow, There is tons of working Ruby code in production and people have found a way to harness its power. People are awfully clever, I very much doubt that any serious language (i.e. a language not designed to confuse) can't be whipped into shape by a team of reasonable people who are motivated to succeed.<p>The "failure" of Lisp has a very simple explanation, so simple that people gloss over it. Every successful language began as the scripting language of some system that was itself exploding in popularity.<p>To be a hit, a language must arrive in the mass market's consciousness in tandem with its "platform." Objective C failed until the iPhone was a hit. C was a hit with Unix and then Windows. Ruby was a hit when Rails was a hit.<p>Lisp was the scripting language of Lisp machines. When the "AI Winter" hit Lisp machines, it hit Lisp. It never became the scripting language of something else that was exploding in popularity.<p>Today JavaScript is the scripting language of browsers, so it is a hit, and it doesn't matter whether its first-class functions are elegant (they are), whether its semantics have stupid corner cases (they do), or whether its inheritance model is obscure (prototypes!?).<p>Just show me something exploding in popularity, and I'll show you a successful programming language.<p>UPDATE:<p>I see folks are arguing about what colour to paint the phrase "Scripting Language." Must a scripting language be interpreted? Is Java interpreted? What about JIT techniques for JavaScript? When we transpile CoffeeScript to JavaScript, what is going on? I have a CPU that executes microcode. Is ASM for this CPU really an interpreted language?<p>All good stuff. By the way, Lisp was originally interpreted, compilers didn't come along until later. So... Was it a scripting language until it was "compiled?"<p>Have fun, but please remember to leave room in the shed for me to park my tandem.
The original post is right: Lisp by itself is an incredibly powerful yet incredibly basic language. It's a functional Assembly for declarative DSLs. The most talked about Lisp nowadays is arguably Clojure, and this is probably so because Clojure provides much more built-ins and libraries out-of-the-box than other Lisps, where you'd have to build these things yourself. At the end of the day, we just want to call "solveMyProblems()", commit that 1 function call, and move on to our next project. The lower-level a language is, the further away from that goal it is, and the less reasons there are to use it.
I suspect LISP is too unstructured for its power. It's very hard to scale something to more than one programmer or to a large size in a completely free-form dynamic language. It's easy to blow off other peoples' feet, and totally dynamic languages with many contributors to a project often yield an unmaintainable rats' nest of mixed metaphors and hacks.<p>Java is one of the most successful languages for massive projects because it imposes a set of common idioms and semantics. Look at Eclipse... an absolute monster but a living, breathing, and pretty darn successful one.<p>I can't imagine Eclipse in Ruby or JavaScript, let alone LISP... not with the number of contributors it has. It would melt into a puddle of slag not unlike the "corium" that forms at the bottom of a melted-down nuclear reactor.<p>For those dismissing this as FUD and ignorance: LISP, despite its power, isn't really used for much. I think there <i>has to be</i> a reason for that, and I don't think "everyone is dumber than me" is a valid reason. There are tons of outstanding programmers, and the majority of them do not choose to code real-world stuff in LISP.<p>I suspect Ruby, which is fairly powerful but not as freeform or succinct as LISP, is more successful because it has more structure around its power. It seems to have enough structure to make large long-lived code-bases possible in the "real world." (But like I said I'm still skeptical that you could write Eclipse in Ruby.)<p>The question is: would it be possible to build enough structure <i>or tooling</i> around LISP to fix this problem? Could something like Light Table with deeper refactoring and visualization tools deliver a workable LISP environment for modern large applications? I know there were things done in the past during the "80s AI era" that might bear re-examination and resurrection.
This is just a giant page of FUD.<p>Every language has flaws and using languages effectively means knowing what those flaws are and how they affect your program's processes. Does Lisp code produce unmaintainable masses of code? Perhaps. Ever read the IOCCC entries? Or pull apart exactly what a given Ruby script is actually doing? Yet people write good software using these languages all of the time and the world hasn't blown up yet.
The page is down for me, so Google cached: <a href="http://webcache.googleusercontent.com/search?q=cache:c2.com/cgi/wiki?LispIsTooPowerful" rel="nofollow">http://webcache.googleusercontent.com/search?q=cache:c2.com/...</a>
Lisp is perhaps the most powerful language there is. But no language is 'too powerful' considering the software that is being built today. It has not enjoyed commercial success because it gained reputation as an inefficient language and the average programmer cannot become proficient in it unless he has a certain amount of discipline and learning he is prepared to invest. C and C++ are much easier to learn and are taught more in colleges. So the reason lisp isn't popular is because people are not learning it. And even those who learn it have less opportunities to use it because of the C, C++ and Java legacy.
Lisp is the most powerful language in the world - as witnessed by its power to cloud the minds of otherwise intelligent and articulate engineers and scientists.
What is the definition of a "powerful" language?<p>It sounds to me like arbitrarily taking a word with good connotations to mean something that is convenient for promoting what you're interested in; regardless of the literal meaning.
Here is a nice 1986 MIT lecture on Lisp given by... Harrison Ford? :) - <a href="http://www.youtube.com/watch?v=2Op3QLzMgSY" rel="nofollow">http://www.youtube.com/watch?v=2Op3QLzMgSY</a>
"But I have yet to see a good demonstration that Lisp significantly simplifies things beyond what other languages can do... It only slightly simplifies things."<p>The circularity is impressive.
<i>Lisp</i> is not a problem. Lisp is fine. So are Scala, Ocaml, and Haskell, under most use patterns. Python's not perfect, but I'll gladly use that. It works. Actually, I like Clojure better than CL, but that's irrelevant. I had one experience of being burned by "Lisp's power". I was in a company where I had to work with a programmer who used Lisp in ways the rest of us found to be irresponsible (poor documentation).<p>He actually wasn't a bad programmer. He was actually a pretty good one, but management had been riding him with unreasonable feature requests and ridiculous deadlines, so no one ever got to do anything right in that company. My code was better, not because I'm inherently better but because I fought back and simply padded the shit out of estimates so I <i>knew</i> I'd have the time to do things right.<p>These problems that get blamed on languages are usually the result of terrible management.<p>Even bad code is not pure evil. Bad code is just logic, poorly fashioned and presented, often because of shitty business practices rather than poor programmers. The evil is the manager who <i>forces you to use</i> bad code (instead of letting you replace it) because "we can't afford" doing things right, even though you're in a rich company that pays managers extremely well. That's the enemy. Let's stop warring about cosmetic differences among good languages and focus on that guy.