10 ms·
I Miss Lisp
- redacted 16y agoI think Clojure addresses much of the author's points. I have greatly enjoyed learning the "Lisp" way to solve problems, while still having the option to use Java's massive ecosystem. It cannot, however, deal with the biggest (IMO) problem with Lisp: the fact that his list includes "Too Good" and "Too Smart" (and the elitist tone that accompanies them). It is off-putting to try and read about this apparently amazing language, and have large portions of every (hyperbole) article saying effectively that if people were just { smarter || better || less sheep like } they would use Lisp. Luckily, the Clojure community appears to have avoided this attitude so far. P.S. I mean no disrespect to the author, and I fully understand that language advocacy often takes a confrontational approach.
- deleted 16y ago[deleted]
- mtviewdave 16y agoIMHO, the biggest reason why Lisp never won out over imperative programming languages is exactly this attitude. Advocates of imperative programming languages took critiques of those languages seriously, while Lisp advocates wouldn't. Take the evolution of C, for example. First, you had ALGOL, but it had problems. So someone created CPL. But that had problems, so then we had BCPL. Then B. Then C. That’s five separate languages! People on the imperative side of the language divide were willing to throw stuff out and start from scratch, over and over, until they got it right. Lisp advocates were not. Fortunately, the creation of Clojure suggests that a willingness to change is finally making its way into some areas of the greater Lisp community.
- deleted 16y ago[deleted]
- nickik 16y agoyou didn't really follow the history of lisp did you? Plz at least go to wikipedia befor you write something.
- sedachv 16y agoYou seriously think that C is an improvement over Algol?
- chc 16y agoAre you really saying that Common Lisp and Scheme are that much more similar to primitive Lisps than C is to Algol-68? That isn't my impression at all. I'd say Clojure is to Scheme as C# is to C, roughly speaking.
- loewenskind 16y agoSince Lisp actually has changed a lot over the years, I guess what you're saying is that they should have changed the name every so often?
- gnosis 16y ago"the biggest (IMO) problem with Lisp: the fact that his list includes "Too Good" and "Too Smart" (and the elitist tone that accompanies them). "It is off-putting to try and read about this apparently amazing language, and have large portions of every (hyperbole) article saying effectively that if people were just { smarter || better || less sheep like } they would use Lisp." Perhaps you missed the wave of Perl hate that Python and Ruby rode to popularity on. This anti-Perl snobbery hasn't seemed to have hurt them any. Or how about the snobbery of C users against COBOL and FORTRAN? Once again, C got adopted despite (or perhaps even because) of it. Or the religious wars over static vs dynamic typing, functional vs imperative, OO vs procedural, and which editor or OS is superior. This kind of elitism is really endemic in the programming field, is by no means restricted to Lisp, and is probably not very relevant to the lack of adoption of Lisp in the general programming community. Rather, I'd chalk it up to more of a matter of marketing. Lisp is still viewed as more of a (difficult) academic language, rather than a practical one. It's also rather old by now, and doesn't have the shiny/new sparkle that helped Java and Perl (in their day), and Ruby and Python (more recently). Also, how many killer apps (that a typical programmer cares about) have been written in Lisp? Where is Lisp's Ruby on Rails?
- deleted 16y ago[deleted]
- chc 16y agoThere is a large distinction between hating on the language and hating on the users. Ruby and Python were both sort of anti-Perl, but it was not usually expressed along the lines of "Perl users are too stupid to write Hello World in our language." It was more like, "Dang, Perl users. How do you manage to get anything done with that rotting fish-head of a language? Check out what we have over here in civilization!"
- chromatic 16y agoIt was more like, "Dang, Perl users. How do you manage to get anything done with that rotting fish-head of a language? Check out what we have over here in civilization!" ... which is ironic for students of language design who realize that none of (for example) Ruby, Python, and PHP get lexical scoping anything close to correct, that none of them do object systems particularly well, none of them do an extension system particularly well, and only Python comes close to the amount of available and accurate documentation or the robust test coverage of the language and its features. You can discount a lot of the rest of the criticism as "I didn't bother to learn what makes the language unique before writing a bunch of awful code" and "I don't like sigils but am embarrassed to sound that much a snob."
- Almaviva 16y agoIt absolutely needs to be admitted that it is easy to make a well intentioned unmaintainable mess in Lisp and other highly dynamic languages. Brilliant programmer A will add a lot of layers and abstractions that make sense in one context, which is great until brilliant programmer B does so in a different context. This all seems to break down somewhere when the number of programmers exceeds 1.
- deleted 16y ago[deleted]
- ScottBurson 16y agoI've worked on several large Lisp systems, and have never had this problem. You can make a mess in any language. I will grant that Lisp offers more ways to do that than most languages, but so does C++ (template metaprogramming, anyone?).
- tumult 16y agoTemplate metaprogramming is awesome. All of the C++ messes I've seen are related to ridiculous OO crap.
- deleted 16y ago[deleted]
- ScottBurson 16y agoWell, my point is that you can make a mess using template metaprogramming. Maybe that doesn't actually happen too often, because anyone smart enough to use TMP at all is smart enough not to make a mess :) But you're right, the actual messes I've seen in C++ have not involved TMP. Come to think of it, most of them have been around "const" misuse.
- deleted 16y ago[deleted]
- mahmud 16y agoWhat does "add a lot of layers and abstractions that make sense in one context" mean? Is that like "entities and/or actions placed or performed in a certain manner for a particular purpose, or to carry out a certain task"? Everything in a high-level programming language is an "abstraction". And anything outside the grammar of the language is a convention.
- ScottBurson 16y agoI couldn't find a date on this essay, but it must have been written around 10 years ago. The open source Common Lisp ecosystem, though still small, is much larger than it was then. (For instance, he doesn't mention SBCL or OpenMCL/Clozure CL in his list of open source implementations, and he claims there aren't any with multithreading, which hasn't been true for years.) So if he still misses Lisp, he should come back. Common Lisp is still around, and in better shape than it was, and there's also Clojure.
- m0th87 16y agoI think the author misses the biggest reason why lisp never caught on: too many developers are simply aversive to s-expressions. Maybe Clojure, with its slightly richer syntax, will solve this.
- Homunculiheaded 16y agoThe problem with this argument is that it's one of the key reasons most lispers like lisp and where the language draws many of it's strengths. You're essentially writing an AST, which gives you lots of flexibility and makes things like advanced macros and DSL programming viable solutions to problems. A dislike of s-exps may fall in the "too smart" problem category.
- cageface 16y agoOther languages have absorbed just about all the other key lisp ideas. Garbage collection, first-order functions, dynamic typing etc are all uncontroversial now. I don't think it's an accident that s-exprs have been conspicuously unpopular in comparison. I actually find the Clojure syntax harder to parse. Nested mixtures of }, ], and ) are very difficult to pick apart visually.
- oconnore 16y agoMacros.
- adambyrtek 16y agoWhat about them?
- oconnore 16y agocageface missed the major reason why Lisp in general is powerful: prefix notation is really the only clean way to implement macros. The rest is just icing on the cake.
- 16y ago
- mahmud 16y ago"I miss lisp" articles are almost as old as Lisp itself. In fact, I miss the days when nostalgic pieces about Lisp where far more eloquent, and well argued. The pinnacle of Lisp yearning was reached when Dick Grabriel wrote A Critique of Common Lisp, and never since has anyone opined Lisp as rightly. The decline of sentimental prose about Lisp is largely caused by the standardization of Common Lisp. Its specification at 1500 pages, people never had any time left to learn basic essay writing. The Lisp community also shares the blame for this deterioration in the expression of melancholy. The comp.lang.lisp newsgroup and its brash, unwelcoming denizens haven't exactly helped people be more wistful for Lisp in their absence.
- thomas11 16y agoHopefully, if we promote the ideas in your post, "Lisp Yearning" will become a recognized literary genre and we will read more of it from young, aspiring authors. Let's just hope Quicklisp and Clojure are not too successful.
- zandorg 16y agoc.l.l. is the best newsgroup I've ever used.
- deleted 16y ago[deleted]
- gibsonf1 16y ago"There are free implementations of Common Lisp (GCL, CMU Common Lisp, CLISP), but they came late and incomplete. " SBCL is open source and free and complete and performs incredibly well with multi-threading etc. I wonder how old this article is?
- samuel 16y agoThis is only true for SBCL on Linux, isn't it?
- sedachv 16y agoBesides Linux, SBCL supports multithreading on FreeBSD, Mac OS X, and Windows.
- jpr 16y agoLast time I tried SBCL on FreeBSD, the binary package didn't have threads enabled, and when I compiled it from ports, the configuration dialog had me enable the threading manually and said it was "experimental".
- SeanDav 16y agoI am not sure that Lisp not being mainstream is very much to do with Lisp at all, but much rather not being in the right place at the right time. Would we really be having this conversation if Sun or Microsoft had promoted Lisp?
- sedachv 16y agoFor the record parent is the only non-stupid post in this entire thread. If I really wanted to read arguments about why Lisp sucks from people who don't program in Lisp, and complaining about issues that have been solved half a dozen years ago from people who can't be bothered to check a web page, I'd go read comp.lang.lisp archives. The rest of you can go back to trolling about how Lisp sucks and Clojure will solve all its problems even though you've never used Lisp and have no plans to ever use Clojure.
- tygorius 16y agoYeah, if only Microsoft had promoted Lisp the way they had Xenix, or the Zune, then _everybody_ would be using Lisp! Or if Sun had picked up the cause, then Lisp would be used in all those set-top boxes the way Java is today. Oh, wait... Microsoft actually did have a diversity approach for their language tools division in the 1980s -- ever heard of MuLISP? The problem was that Lisp on MS-DOS or Windows 3 was not really a good fit for most (any?) personal computer at that time. Certainly not when compared with the likes of Turbo Pascal, say. It seems to me that programming languages get their moment in the sun if they offer some significant technical advantage for that particular time and market. Perl took off because it did seem better for some things at the time, for example, while the latest versions have seemed (to me, at least) as a desperate cry for attention when other dynamic languages have gotten most of the programmer love. If there's anything the last dozen years of language adoption have shown us, it is that "promotion" is only part of the equation and it can manifest in either a top-down or bottom-up fashion. (See Python or Ruby for examples of the latter.)
- chc 16y agoNot trying to sound hostile here, but your comparisons seem a little disingenuous. You're equating Lisp with an ancient operating system and a music player? Lisp is a programming language. Microsoft has other products in the category of programming languages. The ones it has pushed — Visual Basic, C# and (to a lesser degree, since it's NIH) C++ — have all been tremendously successful. This is because Microsoft has a monopoly on Windows dev tools and APIs that it can exploit to get developers using things. This monopoly is less useful for pushing Zunes. And to try and argue that Java is unsuccessful because it isn't used in set-top boxes? I don't even know what to say to that. The fact that Java's successes were in other domains than the one you hand-picked for your comparison does not somehow make them disappear. You may as well say that C was never very popular because no Ruby on Rails apps were ever written in it. The fact is that Lisp has not had any major backers since the AI craze fizzled out. If a Lisp had received the same kind of support as Java, C#, Objective-C or JavaScript, the language landscape might very well look quite different.
- dchest 16y agoFound the date: 2006. http://web.archive.org/web/20061119052800/www.technicat.com/writing/lisp.html http://web.archive.org/web/20061119052800/www.technicat.com/...
- agavin 16y agoFrom the late 80s through the early 2000s Lisp was my language of choice. The post author went through many of its advantages -- mostly true. I even went so far as to write an entire compiler and environment (a several man-year endeavor) to design two different runtime oriented dialects called GOOL and GOAL used in 8 Naughty Dog Crash Bandicoot and Jak & Daxter games. All 30-60 FPS action games -- 40 million copies sold. All written in Lisp! (more or less) Eventually, it was Ruby that got me off Lisp. It does most of what made Lisp great, and the support factor is huge. There are clean standard libraries for everything, the garbage collector is good (the one in ACL is was so awful and dated -- I last used it in '07 -- you pretty much had to turn it off. I miss the S expressions and the macros. But you can do most macro like things with a good block expression in Ruby, and you can even do auto-generated macro like functions with strings. It just isn't as elegant as Lisp. The Ruby class system is a bit baroque, but it's actually better in many ways than CLOS, which suffers from being too dated. In Ruby you can do a lot of very cool things with extend and include. It's just a slightly different way of thinking. The implementation isn't the fastest, but it's good. The Lisp implementations were all clunky and felt like 80s codebases. Oh wait, they are. Support. The rate of change in Ruby is 1000x that of Lisp. Some new website has an API -- someone writes a Gem immediately. In Lisp you don't even have a really standard networking library!
- shaunxcode 16y agoInterestingly (maybe ironically?) it was reading about your success w/ GOOL and GOAL that turned me onto lisp! Are you using ruby for game development?
- sedachv 16y agoThe ironic thing is that you were doing it during the 90s, which is possibly the worst time to be a Lisp programmer ever and Lisp's "lost decade." Everything that came out of Symbolics got thrown away (RMS turned out to have been 100% right about that), no one was doing free software libraries except for Haible and Steingold (ok, huge exaggeration), and aside from CL-HTTP everyone completely dropped the ball on the whole web thing (AllegroServe only came out in 2000!). What are you doing right now with Ruby? I remember a couple of years ago at a CRACL meeting the conversation turned to Naughty Dog, and someone (I think it was Chris Baker) was like "Oh yeah, Andy lives in LA. He's writing books now."
- melipone 16y agoExactly what I feel. I miss the integrated debugger and trace facilities the most. You can see exactly what your code is doing in lisp. What happened 10 years ago was the dot.com craze and the demand for Java programmers went through the roof. I am now trying to get back into Lisp maybe through Clojure too.
- loewenskind 16y agoI wish they would fix this in SBCL. The stepper is such a pain to set up and use. Smalltalk has really spoilt me in this regard.
- sandGorgon 16y agoAlso wanted to plug "Shen" here, an offshoot of the lisp-based Qi language. Shen is VM agnostic, so it will run on Python, Clojure, etc. Javascript is its first target. Here is the appeal by its creator - Mark Tarver (and Carl Shapiro) http://www.lambdassociates.org/Shen/appeal.htm http://www.lambdassociates.org/Shen/appeal.htm or http://news.ycombinator.com/item?id=1921347 http://news.ycombinator.com/item?id=1921347 The qi syntax was previously posted on HN : http://www.lambdassociates.org/Book/page000.htm http://www.lambdassociates.org/Book/page000.htm