5 ms·
Lisp is Not an Acceptable Lisp (2006)
- isnoteasy 16y agoReality is not an acceptable reality. I have been waiting for four month and nobody complain about reality, is time to proclaim it and discuss why reality is not an acceptable reality, but before starting, let tell us about your desired heaven. Well, I'm glad Steve is posting again, more stuff for happily procrastinating. By the way, I'm reading a book about Joomla!, php people don't have macros but they have something that works perfectly to make a huge infrastructure for web programming, so being easy to program and deploy is the best macro for the humble web programmer.
- jacquesm 16y agoI wonder if Steve has updated his views on this since he wrote this (2006) in light of the emergence of clojure.
- ananthrk 16y agoHis come-back blogpost ends thus: I used to have lot of open, long-standing concerns about the future of programming and productivity, but my sabbatical last year finally brought me some clojure. Take what you will from that :)
- prog 16y agoWhen I started to learn Lisp, the "Which Lisp?" problem was the first thing to hit me. Same with Scheme. I eventually went with CLISP and PLT (Racket). Issues like hygiene didn't really bother me too much. As long as you are aware of it its not an issue. While I really like the power of Lisp/Scheme (especially macros), I find that for most programming task Python or Ruby are good enough. There was an interesting post along similar lines 'Why Ruby is an acceptable Lisp'[1]. One thing I am really interested is in seeing how Perl 6 works out. It supports Lisp style macros (by making the parser available to the programmer) while using conventional syntax. While I am a Python fanboy myself I would seriously consider Perl 6 once there is a CPython grade implementation available. [1] http://www.randomhacks.net/articles/2005/12/03/why-ruby-is-an-acceptable-lisp http://www.randomhacks.net/articles/2005/12/03/why-ruby-is-a...
- aufreak3 16y agoMy prediction: someone will get tired of waiting, and they'll Torvalds Arc into obsolescence before it's ever released It certainly looks like Arc has been "Rich Hickeyed" judging by the recent announcement of funding for Clojure. Think about that for a moment - a commercial organization is actually funding development of a new lisp!
- WilliamLP 16y agoHas Paul Graham ever addressed in writing the disconnect between the amount of hype Arc got before it was released versus nearly instantly vanishing almost completely from public mind-share?
- Zak 16y agoAt the risk of predicting future fashion trends, which is rarely a good idea, I'll venture that objects are going to continue to be trendy for at least a few more decades. This article is four years old, but since the prediction spans decades, I think it's fair to pick on it a little. The OOP trend seems to be waning. The languages people are getting excited about lately seem to be de-emphasizing OOP and providing other mechanisms for some of the useful attributes of OOP. Haskell and Clojure don't have OOP as most people know them, but Clojure's multimethods and Haskell's typeclasses replace OO polymorphism to a large degree. Scala and F# have OOP, but using it is optional. Ten years ago, a new language intended for practical work and lacking OO wouldn't be taken seriously. That has changed, and the change seems to be accelerating.
- jules 16y agoAs often happens, the good bits of a trend will remain (polymorphism and open recursion for example) and the bad bits (elaborate design patterns) and the irrelevant bits (public, private & protected) will be removed.
- fauigerzigerk 16y agoYou're right and I'm glad OO is waning a bit. But I think what's really happening is that some popular features of OO are getting more ingrained and others are shed. Take clojure for instance. Initially it had multimethods, which is a really useful and general facility. I like it. But now they're adding that dispatch-on-first-parameter special case back in. Similarly, Go has omitted most of OO, but they use interfaces to support that same special case.
- DrJokepu 16y agoThat reminds me, I've read a very interesting paper on OOHaskell (object-oriented Haskell) a few years ago, you can find it at http://homepages.cwi.nl/~ralf/OOHaskell/paper.pdf http://homepages.cwi.nl/~ralf/OOHaskell/paper.pdf
- pbh 16y agoI don't disagree, but it seems like you're overstating your point by calling OOP "optional" in Scala (and possibly F#). Scala is explicitly marketed as a hybrid OOP/functional language. At least from "Programming in Scala," it seems as though writing idiomatic Scala really requires both paradigms. I see Scala as adding functional programming rather than de-emphasizing OOP, the former being a common thread in new (multi-paradigm) languages.
- Confusion 16y agoPrevious discussion of this article and the article that inspired it. http://news.ycombinator.com/item?id=825746 http://news.ycombinator.com/item?id=825746 http://news.ycombinator.com/item?id=416589 http://news.ycombinator.com/item?id=416589
- brlewis 16y agoAbout "which Lisp": I think most people recommend PLT Racket for newbies. I do, even though I use Kawa Scheme daily. About macros: If I recall correctly, Scheme got hygenic macros in 1991 with R5RS. If I recall incorrectly it was earlier, definitely not later. Many Scheme implementations clone CL's defmacro, which is non-hygienic unless you're careful, but is useful. There's also syntax-case, which is hygienic by default, but let's you break hygiene explicitly. Macros should be used only when functions won't do, and not because of tool support. Macros act at compile time, not run time, so they aren't run-time objects that can be used flexibly the way functions can.
- lelele 16y agos/Macros should be used/Macros must be used/ ;-)
- nickik 16y agoHow is it to work with kawa. I only no that it exists not more. Some question: 1. Can you use it professionally? 2. Whats the benefit over clojure? 3. Does it live close to java and is it still lispy to work with java (clojure does well there I think) 4. How fast is it?
- brlewis 16y ago1. Yes 2. Scheme is a better-established standard. Nice macro system. 3. Easy Java integration and totally lispy...not 100% Schemey because you can't do continuation capture. 4. It's way faster than PHP4. I haven't benchmarked it in years, because performance hasn't been an issue.
- mahmud 16y agoFor every coding Lisper, there are 99 opinionated non-Lispers waxing poetic over its glory, or barking polemic over its demise.
- quadhome 16y agoOdd ratio. I hazard it's inverted for the Javas and C/C++s of the world.
- seis6 16y agoIn a real world of webs applications and jobs for the net, macros are a dream for another universe. Php people don't dream, they step by step are making what macros can't do: expanding their universe. Joomla! they say.
- nickik 16y agono the just really GROW the language. Some new features somewhere else that they don't understand just trick it somehow in there. convert it to string and back or just stuff everything in some global variable or something. If it breaks you can just make a ugly fix on it with the next version.
- tkahn6 16y agoCan anyone explain why Steve thinks Haskell is 'doing it wrong' when it comes to type systems?
- chc 16y agoMy inference from the times I can remember him mentioning it: Basically, Steve likes dynamic typing. He feels that arbitrary language-enforced constraints just get in the way. Haskell is the most strongly statically typed language in existence, so obviously it's not his cup of tea. If you read his most recent rant, you can see that although it's technically about visibility modifiers, it can read as a condemnation of compiler-enforced constraints in general.
- rsaarelm 16y agohttp://steve-yegge.blogspot.com/2007/01/pinocchio-problem.html http://steve-yegge.blogspot.com/2007/01/pinocchio-problem.ht...