5 ms·
One of the best essays of my youth. Launched a decade long quest to understand and use lisp. The most surprising thing is there people still dismiss it. Irony o
by sillysaurusx 4y ago
One of the best essays of my youth. Launched a decade long quest to understand and use lisp. The most surprising thing is there people still dismiss it. Irony of ironies is that the dismissal comes on a site powered by lisp. Indeed, HN wouldn’t have been possible without it.
I went back and read it again, and unsurprisingly pg addressed this point too:
> But I don't expect to convince anyone (over 25) to go out and learn Lisp. The purpose of this article is not to change anyone's mind, but to reassure people already interested in using Lisp-- people who know that Lisp is a powerful language, but worry because it isn't widely used. In a competitive situation, that's an advantage. Lisp's power is multiplied by the fact that your competitors don't get it.
Every time you feel like discounting Lisp, just remember “The world wouldn’t have Hacker News.”
- aidenn0 4y agoAs someone who was already learning lisp when this essay came out, I do want to point out that the world was very different when Viaweb launched. Recent versions of Javascript are probably closer to lisp than any of the languages their competitors were using; Python has come a long way, and mainstream backend choices are more varied than Perl, C, or a buggy C++ implementation. There is still an astonishing dearth of languages that take both dynamicism and performance seriously[1], but you're even starting to see bits of metaprogramming become more mainstream. Tooling is still mostly terrible outside of the lisp and smalltalk worlds ; I have mixed feelings about LSP, because while it greatly improved things, it appears to have done so by establishing a local maximum that few development environments will escape from. Jupyter is really cool, but it's the exception that proofs the rule. So compared to the '90s, your backend language will probably support garbage collection, anonymous functions, higher order functions, and maybe symbolic computation and/or a rich type system. It's harder to beat the averages when the average has gotten closer to where you are. 1: While performance is a property of implementations (not languages), performance is not just about implementation. The Lisp standard has several places where limits are placed on allowed dynamic modifications specifically for performance.
- lisper 4y agoYes, the world has been busily re-inventing (parts of) Common Lisp for 20 years. But they still haven't got one of the most important features: generic functions, and so every programmer who doesn't use Common Lisp has to shoulder the cognitive burden of figuring out whether to write x.f(z) or f(x,z) every single time they want to invoke f. I shudder to think of the aggregate effort wasted by this additional cognitive load over all the non-Lisp code that has been written over the years.
- aidenn0 4y agoOff the top of my head, Generic Functions have these features: 1. Dynamic Dispatch 2. Multiple Dispatch 3. Auxiliary Methods 4. Namespace independent of specialization parameter(s) I find it interesting that you focus on #4. People coming to Lisp complain about #4 a lot, and people leaving lisp complain about the lack of #4. If you aren't going to use multiple dispatch (which, empirically is rare in CL code), then #4 seems to be more a matter of what one is used to. Heck, when I program in a Lisp-1, I struggle with the semantic overhead of avoiding accidentally binding a variable that happens to be the name of a function. Also, the fact that many Lispers end up writing GFs named things like widget-frobnicate and sprocket-frobnicate might indicate that coupling the namespace with the primary operand might not be completely unwanted. Also, Python is almost certainly the worst offender with consistency here -- e.g. "len(x)" vs "x.len()". P.S. C++, Javascript, and Python have libraries available implementing multiple dispatch.
- lisper 4y ago> many Lispers end up writing GFs named things like widget-frobnicate and sprocket-frobnicate If they do that, they're doing it wrong. Probably because they are bringing in ideas from the non-Lisp world, not realizing that these techniques are not actually good programming practice, they are strategies for dealing with deficiencies in mainstream languages. IMHO languages should be made to serve programmers. Programmers should not have to work to serve the language. So if I want to frobnicate something I want to be able to write (frobnicate the-thing) and have it Just Work. Common Lisp gives me that (when it's is used properly). No other language does. > when I program in a Lisp-1, I struggle with the semantic overhead of avoiding accidentally binding a variable that happens to be the name of a function Yes, that is why Lisp-2 is the Right Answer.
- waynesonfire 4y ago> Lisp, just remember “The world wouldn’t have Hacker News.” Great insight because Lisp is the only general purpose programming language.
- rcoveson 4y agoI think you're being sarcastic, but it wouldn't suprise me if Erik Naggum once said this and meant it.
- santoshalper 4y agoHacker news could have been built in any number of languages. HackerNews is built using Lisp because Paul Graham likes Lisp. I also like Lisp, but nothing about HackerNews required it.
- jackallis 4y agonow, my question is does PG still feels the same way after 20 years. Would he amend the article?
- yellowstuff 4y agoLisp is great, and Paul Graham has done some good things with it, but the only other people who ever actually listened to PG and tried to build something practical in Lisp lived to regret that decision: https://web.archive.org/web/20051207043012/http://reddit.com/blog/2005/12/night-of-living-python.html https://web.archive.org/web/20051207043012/http://reddit.com...
- deleted 4y ago[deleted]
- goto11 4y ago> Indeed, HN wouldn’t have been possible without it. This seems a rather extreme claim. Can you back that up?
- simonebrunozzi 4y ago> Indeed, HN wouldn’t have been possible without it. It would have been possible with CGI scripts. Or PHP. Or Perl. Or a myriad other things.
- zh3 4y agoQuite - it's the simple but effective design that matters (not whatever language it's implemented in). It could be that Lisp because forces one to think more than just hacking out code, the end result is better designed.
- deleted 4y ago[deleted]
- AnimalMuppet 4y agoSlashdot was written in Perl, so I'm pretty sure that HN didn't need to be written in Lisp. HN is, primarily, the community it developed, not the code running on the server. Crediting Lisp seems like you're reaching.