7 ms·
Steve Yegge: Lisp is not an acceptable Lisp. (2006)
- moscoso 17y agoThis article was published in 2006. Why is being posted again?
- steiger 17y agoI did it because I'd never read it before, and found it interesting.
- Ixiaus 17y agoI'm glad the OP posted it, I've never read it before today.
- zachbeane 17y agoDon't worry, it will soon grow a (2006) in the title, so people will know it's obsolete.
- raganwald 17y agoWith respect, old is not synonymous with obsolete. I find this especially ironic since we are talking about a post written less than half a decade ago talking about a language invented more than half a century ago. Of course, if you feel that the post is obsolete due to progress made in Lisp since the post was written, I'm extremely interested in hearing how things have changed.
- steiger 17y agoI agree. It was only written 3 years ago. Almost nothing changed in the last 3 years in the Lisp world. Maybe Clojure -- but there is some controversy.
- moscoso 17y agoThe article does not mention clojure, which is an acceptable Lisp.
- ynniv 17y agoThe article was written before clojure.
- dagw 17y agoFound reading it (again) now in light the ongoing hype surrounding Clojure almost more interesting than I did reading it the first time.
- raganwald 17y agoTrue, although I wouldn't go so far as to say it is "obsolete." That being said, English is a rather ambiguous language. Obsolete might mean it has nothing of value for the reader, and it also might mean there have been some developments since its publication so be sure to do further reading. Given that Clojure is not the only Lisp, I feel the article is still relevant although comments like yours and another poster pointing out the value of Clojure add value for readers.
- andreyf 17y agoClojure is not an acceptable Lisp. It's a step in the direction of Lisp from Java, but is a step backwards from most other Lisps.
- jamesbritt 17y agoHow so? I've been pondering Clojure as "Lisp with Java libs! Hooray!", but if there are notable flaws in its Lispiness I'd like to hear about them.
- jon_dahl 17y agoI think the common complaint is that that it isn't really Lisp all the way down - it's Lisp syntax that drives the JVM. Therefore, it is a False Lisp; it dresses like Lisp, and convinces the unwashed that it's Lisp, but it's actually leading us astray. See http://www.loper-os.org/?p=42 http://www.loper-os.org/?p=42 for more.
- wingo 17y agoI think Zach was being sarcastic.
- steiger 17y agoI did append the (2006) in the link, but not because i think it is obsolete at all. The ideas discussed in the text are still valid. As other mentioned, maybe Clojure was a big thing that happened to the Lisp world, but still, Clojure is a very small part of the Lisp world. I did append the (2006) just for the sake of information. I hope no one will decide to not read it based on that.
- gruseom 17y agoClojure is a very small part of the Lisp world. You have to distinguish between the real Lisp world, in which people work on Lisp programs and systems to solve real problems, and the Lisp hype-world, which is a parallel universe consisting of blog posts, arguments, and pronouncements generated by people who are (mostly) doing no such thing, including the OP. Clojure is now a big part of this parallel universe.
- lispm 17y agoI was just sunday on the European Common Lisp Meeting here in Hamburg. It was really nice, we heard of a bunch of actual applications and heard of new implementation facilities. The biggest plus: the event was completely free of random whining.
- cema 17y agoI made the same pleasant discovery at the Lisp conference in MIT this Spring. Face to face, lispers were much more respectful, polite and welcoming than one could have expected from following online lisp forums.
- gruseom 17y agoMany nice Lisp people don't bother with the online forums for the same reason that many nice non-Lisp people don't. I should have added "online forums" to my description of the hype-world. It might be worth mentioning that mailing lists for specific Lisp implementations and libraries tend to have high-quality and largely respectful discussions.
- biohacker42 17y agoIt's better then most of the full that's on the front page these days.
- mgrouchy 17y agoI wish he still wrote this blog.
- dunk010 17y agoI really wish that he did too. Seems that All the negative comments made it not worthwhile which is just a damn shame because the rest of the world has to lose out now.
- mgrouchy 17y agoI was hoping he would have done what other controversial(Zed Shaw) and not so controversial(Joel Spolsky) blog authors have done and just turn off the comments and moved on, rather than shut it down. However, he is not indebted to us to keep writing so my opinion doesn't really count in that regard.
- wglb 17y agoWrite him a letter telling him that you enjoyed his blog and would like to see more. (I did.)
- rikthevik 17y agoI know I shouldn't be surprised anymore, but it always amazes me that the users on Hacker News actually have positive and relevant things to say. I still find it odd (though pleasant) that there's a part of the internet that hasn't turned into a shithole yet. Thanks, guys!
- raganwald 17y agoAn interesting follow-up: Eric Kidd on "Why Ruby is an Acceptable Lisp" http://news.ycombinator.com/item?id=825809 http://news.ycombinator.com/item?id=825809
- andreyf 17y agoIt's always bothered me how imprecise we are with words as computer scientists. Lisp is not a language in the sense that Python or Java is. PLT Scheme is much (much!) farther from elisp in feature sets than Python is from Java. The only thing unique to Lispy languages (and really not at all that hard to understand) is the language syntax and the way the compilation rules are late-bound. That is, the compiler is intended to be extended by the user. Roughly, you're intended to be able to say "unless (...)" will translate to "if (!...)". The rest of the design decisions made aren't even that outlandish: you still have text which is parsed and either interpreted or compiled into machine code, which is run. More foreign (and interesting), I think, is the research being done at Alan Kay's lab now: http://piumarta.com/software/cola/ http://piumarta.com/software/cola/
- felideon 17y agoDon't miss Pascal Costanza's opinion in the comments, to put things in perspective from an expert Lisper: My impression is that you [haven't used] neither Common Lisp nor Scheme on a regular basis, and/or in a considerably sized software project. Most of the issues that you mention are "academic", in the sense that they are theoretical problems which tend not to bite you in practice
- kmcgivney 17y agoI am particularly amused by this guy's ranting about hygiene and macros. I have written quite a bit of lisp, and debugged plenty of macros, and once you have some experience with gensyms you really don't look back and wish there was a hygienic system.
- varjag 17y agoHygienic macros are a bigger deal in Scheme, where everything is conflated into single namespace (you know, the land of LST). His rant about macros and namespaces is a good hint he didn't practice Lisp that much.
- lispm 17y agoit is still Yegge: shallow and mostly wrong. People who actually use Lisp (opposed to people who only write about it) have no problem that there are extensions to the standard. The whole point of Lisp is that it is easily extended in many ways: the programmable programming language. Sure it brings a bunch of problems, but that's what it is and why people use it. The stuff he writes about CLOS is mostly wrong. CLOS is not implemented as a bunch of macros. CLOS is actually a three level architecture: the core is written object-oriented in CLOS itself, on top is a functional interface and for user convenience there is a bunch of macros for easy definition of classes, generic functions, methods and some other language objects. Then, macros are no problem. They are a feature. No, 'hygienic' is fine, but not needed. No they don't need to be rethought. They do a useful job like they are. No, Lisp will never be massively successful (because it is a bit too complicated, too dynamic, too powerful for many users) and bending the language trying to make it 'massively successful' won't improve anything. No, I don't want a dictator. Lisp has choice, various alternatives and a more democratic approach. Lisp is still a good choice for computing with symbols. If you don't need that, then you might not need Lisp. But that's not a reason that Lisp should change. Should a helicopter be changed in design because someone does not use it, but drives a car? Should the helicopter be changed, because more people drive cars, getting a drivers license for cars is easier than getting a pilot's license for helicopters? Lisp is different, for a reason and this difference will ensure its survival for many years. We have now fifty years that the basic ideas have proven to be useful and I don't see that this will change in the coming years.
- andreyf 17y agobending the language trying to make it 'massively successful' won't improve anything This needs to be repeated more often - quality isn't measured by popularity. It's obvious when we talk about food establishments (McDonald's being the equivalent of Java), but for some reason, the logic is completely lost on people when we start talking about programming languages.
- lispm 17y agoif you are a good cook, a sharp knife will be very useful. Others might only hurt themselves with it. No, the quality of things is not measured necessarily by the amount of uneducated users.
- anonjon 17y agoI know this is from 2006 its still FUD. Discussing scheme and common lisp in the same post is misguided from the start. They are very different. Solution to problem one: Look at the implementation's features/libraries and pick one. Solution to problem two: Having picked an implementation, use it. Use libraries that work with it.A lot of your code will be reusable across implementations, some of it won't. Three... Honestly most of section three doesn't really make sense. CLOS isn't implemented in terms of macros, slot-accessors are multi-functions, and no, CLOS doesn't match up with the Java version of OOP. CLOS is centered around stuff like multi-methods and multiple inheritance. He is completely wrong about any 'fix' being 'starting from scratch'. There is the meta object protocol, which essentially lets you customize the object system to be whatever you want (so you can do java style objects, if you must...) Four: First you have to learn how to write macros, (you know, the same way you learned to write code in any other new paradigm. I doubt you were immediately good at imperative or functional programming). If you are having hygiene problems with your macros, you have no business writing macros (in a production environment), and probably haven't read and experimented enough with them to be good at it. Macros are first class functions, they just get run at a different time than your other code. (This would imply that your macro code is just as debuggable as any other code that you write, you can even break it into sub functions and unit test it, if you want). "You should only use a macro when nothing else will do" Does not imply last resort, it implies the right tool for the right job. Newbie lisp programmers have a tendency to (once they figure out macros), use macros in places where they are completely inappropriate (because its fun!). The entire article is from the point of view of someone who hasn't actually spent the time to learn lisp (But still felt the need to inform us all of his opinion). It is kind of like reading a 'lisp misconceptions' greatest hits. Furthermore, he doesn't even mention the package and name-spacing system, which is really the biggest wart that CL has.
- jimbokun 17y ago"My prediction: someone will get tired of waiting, and they'll Torvalds Arc into obsolescence before it's ever released." This is what Rich Hickey did with Clojure, more or less. So this was a pretty accurate prediction.
- fogus 17y agoI wrote a blog post about this very thing about 6-7 months ago: http://blog.fogus.me/2009/02/06/yegge-clojure-arc-and-lolita-or-days-of-future-past/ http://blog.fogus.me/2009/02/06/yegge-clojure-arc-and-lolita...