Zach Beane, a Common Lisp developer and creator of Quicklisp, shares Lisp libraries, tools, and archived Usenet articles.
HN commenters link it for Common Lisp resources, his Vecto library, the Naggum article archive, and background on projects like Quicklisp.
I think this article (of sorts) is definitely helpful for onlookers to Common Lisp, but doesn't provide the full "story" or "feel" of Common Lisp, and I want to offer to HN my own perspective.
Disclaimer #1: I've been working professionally as a Common Lisp programmer---not as a contractor!---for the past decade. I have a vested interest in the language and hiring for it.
Disclaimer #2: I am going to ignore commercial implementations of Lisp here, which provide very useful and advanced features, like GUI development, a user-friendly IDE, paid support, etc. [1,2]
So let's get started. Common Lisp's best feature is that it allows you to be insanely productive at the "raw programmer" level. You can write, edit, and debug code very quickly and incrementally, and end up with safe & performant code.
There's a price to pay: currently the best-in-class experience is still Emacs and SLIME (which come nicely packaged here [3]). As an Emacs fan, that's the best news, but to my fellow PyCharm/VSCode/vim users, it's terrible and alienating news. My colleagues who aren't Emacs users managed to learn just enough Emacs to be productive in a week, but they still frequently fired up their editor of choice in times of need.
It really is worth underscoring that the Emacs+SLIME experience truly fits Common Lisp development like a glove, and the experience, in my opinion, is better than almost every mainstream editor environment out there.
Common Lisp's worst feature is that it feels like…
mikolajw> I am not aware of any evidence that there was an intent to offend. The only source for etymology I know here is an old interview with one of the original developers where he said that he blended the words GNU and Image Manipulation Program, and soon afterwards realized that he heard that word before in a film.
That's wrong on every count. The primary source is Peter Mattis' own words in the GIMP Gazette interview, January 1, 1997, by Zachary Beane:
https://www.xach.com/gg/1997/1/profile/1/
Mattis> "It took us a little while to come up with the name. We knew we wanted an image manipulation program like Photoshop, but the name IMP sounded wrong. We also tossed around XIMP (X Image Manipulation Program) following the rule of when in doubt prefix an X for X11 based programs. At the time, Pulp Fiction was the hot movie and a single word popped into my mind while we were tossing out name ideas. It only took a few more minutes to determine what the 'G' stood for."
So the sequence was: IMP (rejected) -> XIMP (rejected) -> Pulp Fiction inspires "GIMP" -> they reverse-engineered "General" as the G. The Pulp Fiction reference was the generative act, not an afterthought.
The GNU backronym came later. Same interview:
Mattis> "the GIMP originally stood for General Image Manipulation Program, but has since been dubbed GNU software by Richard Stallman (with our agreement). Spencer and I decided that GNU Image Manipulation Program is a better usage of the 'G'."
He didn't…
> I do subscribe to namespaces, since it allows global referencing of names
I have been forced to use XML one way or another for a variety of uses (mostly integration, not document storage - but still), and have not ONCE had a use for namespaces or multiple DTDs in a single document. I suspect no one has statistics, but I wouldn't be surprised if this is true for 99.9% of {users,documents,systems} - which, if true, means that 1/1000 burdens the rest needlessly. But of course, this is mere speculation.
> I also do subscribe to formal grammars, mature standards, and good documentation.
XML is enticing by appearing to have those, but it actually doesn't, as Naggum articulated in[0]. XML schemas can describe a superficial structure, but not anything non-trivial and definitely not any semantics. Naggum is entertaining though he holds nothing back, see e.g. [1].
> It's just that I think XML got an undeserved bad reputation and many of the 'good parts' have been forgotten.
The problem with XML is that, like lawyers, 95% of the population gives an undeserved bad reputation to all the rest. XML did have some good ideas, but they are almost nowhere to be find in practice.
> This allows us to connect, say, 'com.facebook:Person' with 'com.google:Person' with a global equivalence relation. It allows us to specify bridges between standards.
No it doesn't, unless they are semantically equivalent - which they never are. They might be superficially similar, with some translation…
Yes, I cited it an above comment: https://www.xach.com/gg/1997/1/profile/1/
Here is the full quote:
> > Your home page says that you created GIMP to address the lack of free or inexpensive Unix graphics tools. How did you guys actually get together to tackle this? Was it like in Blues Brothers? Were you on a mission from God?
> Spencer was my brother's roommate for four years. (He's been my roommate for the past six months). So I knew who he was when we decided to take the compilers course here together. Big mistake. During one of the impossibly boring assignments we decided we wanted to do something which wouldn't suck. The idea of doing the GIMP actually fell out fairly naturally.
> It took us a little while to come up with the name. We knew we wanted an image manipulation program like Photoshop, but the name IMP sounded wrong. We also tossed around XIMP (X Image Manipulation Program) following the rule of when in doubt prefix an X for X11 based programs. At the time, Pulp Fiction was the hot movie and a single word popped into my mind while we were tossing out name ideas. It only took a few more minutes to determine what the 'G' stood for.
It only seems weird in so far that you are ignorant (aren't we all?) of the generic function approach to object orientation.
In the message passing approach you dispatch based on the type of the first argument to the method. Because it would be redundant to explicitly write down the argument it is commonly syntactically elided (though not fully in Python) and you get coupling of the methods and the object. This is not a fundamental property of OO but accidental feature found in most OO languages.
In the generic function approach, the dispatch is extended so one can dispatch on the type (among other things) of (ideally) all of its arguments. Julia follows this approach afaik and if one is familiar with the generic function approach it is not a controversial claim at all.
Erik Naggum explains it here in more depth: http://www.xach.com/naggum/articles/3243735416407529@naggum.no.html
There are whole lot more supplementary rants:
http://www.xach.com/naggum/articles/search?q=xml
In particular:
http://www.xach.com/naggum/articles/3224334063725870@naggum.net.html
with key words being "Whather what you are really after is foo, bar, or zot, depends on your application.".
His articles on SGML are mandatory reading too.
Several years ago someone posted these links and it opened wonderful world of Lisp to me. Not the language per se (there are many languages) but whole another Universe of how things could be done. I swear I jumped on the chair reading every page of CL standard, how brilliant it is on every level to C. Eventually it led me to rethink attitude to C and Unix in general, core parts of which I despise now.
So here am I returning favor, maybe someone will follow these links too.
Thank you, Erik.
Rest in peace.