top | item 10119730

State of the Common Lisp Ecosystem

199 points| dwc | 10 years ago |eudoxia.me | reply

104 comments

order
[+] WalterGR|10 years ago|reply

   The fact that it’s built on Emacs is a problem, as telling a new user they
   have to learn Emacs before using SLIME (which is not strictly true) is a
   significant artificial barrier to entry.
Yes, it is true. It's ridiculous to expect a person new to a language to also learn Emacs. It is absolutely a significant barrier to entry.
[+] rayiner|10 years ago|reply
It is a significant barrier to entry for everyone else, no doubt. But what are you going to do? There isn't any money in commercial Lisp environments anymore, at least outside certain niches. And the people who like Lisp enough to write an IDE for it already know how to use Emacs.

But you're not everyone else. Individually, it's worth learning for sure! I haven't encountered an environment quite as productive as SLIME/SBCL. I hear Clojure is all the rage these days and it has an IDE, but functional programming with immutable objects is a bit over my head.

[+] deepaksurti|10 years ago|reply
When I started learning CL, I tried Emacs for a week, but then gave up. I was a VIM user already.

So this is my development environment and I have been using it ever since, professionally as well. I have one tab in terminal which has VIM, another tab that runs CL REPL (I mostly use LW Professional that allows building a non IDE image or SBCL).

I start my REPL as such: rlwrap -D 2 -m " \ " sbcl OR rlwrap -D 2 -m " \ " lw-console

Then I my REPL I can just press: [Ctrl + ^] and it opens a temporary VIM Buffer, so I can type away my Lisp expression and when I quit the buffer, the expression is available on the REPL prompt.

I have the usual suspects: tagbar and exuberant ctags, to help. I don't use auto complete much (a quirk probably).

But the fact that I can save my lisp image and come back later and start where I left is the big difference, which I can't do in Python or C++ (AFAIK).

So a simple setup with Vim, rlwrap (with ability to open temp vim buffer) in a Lisp REPL is possible and also productive. Still Vim is another beast, so the rider here is one knows Vim, but may be another text editor should also work.

[+] richardjdare|10 years ago|reply
It would be nice if there was something like DrRacket[1] for Common Lisp, or maybe something like Haskell for Mac[2] that was on HN yesterday[3]. You could package it with SBCL and a link to "Practical Common Lisp" and newcomers could be typing in code within 5 minutes.

I like using Emacs myself, but a lot of people find it intimidating. I know coders who are smarter than me, (vim using C++ finance programmers even!) and I can't persuade them to try SBCL/SLIME.

Emacsophobia may be irrational (I didn't find it hard to learn once I stopped expecting to use modern ui conventions) but asking people to face up to their misgivings about a product is a hard sell compared to offering something slick and attractive.

[1] http://www.racket-lang.org/

[2] http://haskellformac.com/

[3] https://news.ycombinator.com/item?id=10114767

[+] guiomie|10 years ago|reply
I tried learning lisp with SLIME and I hated it so much (especially compared to Visual Studio) that switched to notepad++ and running SBCL in my console. Eventually I lost interest in lisp, id like to get back to it, but SLIME has really left a bad impression on me.
[+] eudox|10 years ago|reply
I should have expanded on the 'not strictly true' bit: for a while I wrote code on Sublime Text and used the REPL from SLIME, with the windows side by side, as SublimeREPL was pretty terrible. And I was fairly productive, too.

Eventually I just caved and learned Emacs.

[+] informatimago|10 years ago|reply
It's also ridiculous for a computer user not to know emacs. What do they teach in kindergarden schools?
[+] Mikeb85|10 years ago|reply
Why? When someone learns Java they learn Eclipse or IntelliJ IDEA. When someone learns C++ they learn Visual Studio or QtCreator/KDevelop/CodeBlocks... And so on.
[+] pnathan|10 years ago|reply
It absolutely is. I have spent some time hacking on the Eclipse Lisp plugin in an effort to remediate this, but I simply don't have the motivation anymore to do it for free - the code is in Java (and the codebase is in disrepair), the Eclipse plugin system is fragile, and I'd not really use the output (I use Emacs... a lot). If someone came to me and said that they'd like to use the tool, or offered to compensate me somehow, I'd go on and make it better.
[+] melling|10 years ago|reply
It takes 15 minutes to learn Emacs at a basic level.
[+] TeMPOraL|10 years ago|reply
And here I thought I was up to date on gamedev-related libs in CL... Thanks for the list!

At first look the list may look very opinionated ("use XYZ and just XYZ, forget about anything else"), but I understand the CL world has a bit of a discovery problem - it's often hard to tell e.g. which library is stable, and which is stabl-ish (e.g. made good enough for basic cases and then abandoned). Promoting top-of-the-line tools seems like something the community needs right now.

[+] eudox|10 years ago|reply
When writing things like this you have to tread a line between "I am somehow an expert on Everything, trust me" and "here's 200 different libraries, and sixty pages of reviews and benchmarks, it's your choice in the end".

The latter is basically in the situation when you go to a Cliki page[0], or when someone on freenode/#lisp asks what library they can use for X, and was what I mainly wanted to avoid.

[0] See http://www.cliki.net/xml for an illustration of choice paralysis

[+] WalterGR|10 years ago|reply
Gamedev? Do you mean the Graphics section?
[+] mark_l_watson|10 years ago|reply
That is a really good writeup - thanks.

I started using Common Lisp in 1984 when Xerox rolled out CL as an update for my 1108 Lisp Machine. 31 years seems like a long time.

The Common Lisp community is great and with Zach's contribution of Quicklisp, most of the hassles of setting up a good CL dev environment are solved.

I especially liked seeing the two machine learning packages.

[+] mindcrime|10 years ago|reply
I just started making a serious effort to learn CL (finally, after having it "on the list" for over a decade) a few nights ago. I'd already been an Emacs user, but not an Emacs "power user". Still, it took me 20 minutes or so to get Emacs, SBCL and Slime all setup. Once it was all working, I just had to spend a few minutes learning a few key combinations I'd not bothered much with before (like how to move between frames, and then the Slime specific ones for compiling and loading Lisp files), and I was off to the races.

Now granted, I already knew my way around Emacs a little (emphasis on little), but I was pleasantly surprised how easy it was to get up and running with that environment. And now I have even more motivation to truly master Emacs. Personally, I'm pretty happy with the state of the Common Lisp Ecosystem, approaching it as Lisp beginner (but not a programming beginner). shrug

[+] dominicread|10 years ago|reply
Emacs feels like using a terminal connected to a minicomputer which is fine; and a good idea; if you are connecting to a Lisp app in the cloud. Something a bit more unified and graphical would be nice when working on your own PC.
[+] aidenn0|10 years ago|reply
Out of curiosity, how are you approaching learning it? Practical Common Lisp seems to be the most popular entry point for non-beginner programmers learning lisp.
[+] VitoVan|10 years ago|reply
I'd like to translate and repost this article, but can't find a license. Can you grant me the permission?
[+] kazinator|10 years ago|reply
Before this page, I've never seen anything defeat the Print Edit add-on for Firefox --- the last resort for reading something. Wow!

Can we have this in a nice, less ironic format, like, say:

  ((:domain "Web Development"
    (:subdomain "Back End"
     (:entry "Clack" ...)
     ...)
    (:subdomain "Front End"
      ...)
    ...)
   (:domain ...))
[+] TeMPOraL|10 years ago|reply
Lisp is magic :). Apparently things related to it also get enchanted.

EDIT: yes please for the easy format. Would gladly read it in Emacs, navigating it with Paredit :).

[+] crististm|10 years ago|reply
"CLIM is interesting and was the last attempt to do any kind of research on how user interfaces should be built, but is not a viable option in 2015." -hmmm, what!?

Am I the only one left who thinks that gui widgets without a context (think qt, gtk) lead to inconsistent and inferior interfaces? If anything, since it is the _last_ attempt at GUI research, then we should continue from there. Or not, if we think that the Unity/Metro are THE interfaces...

[+] aidenn0|10 years ago|reply
No, but a working GUI is better than a non-working GUI.
[+] _pmf_|10 years ago|reply
That's a really great resource. With the usual CL directories, it's completely opaque which libraries are maintained and usable and which are out of data.
[+] deepaksurti|10 years ago|reply
For the GUI toolkits, don't know why CAPI was not listed? Yes it is LW specific but it is a worthy choice. I prototyped an entire 3D game scene using CAPI using the OpenGL 1 FFI they provided and it was very productive.

Of course CEPL then would have made it more fun, though I don't know if CEPL works with LW CAPI.

[+] pjmlp|10 years ago|reply
I didn't find any information about commercial Common Lisp offerings like LispWorks and Allegro Common Lisp.
[+] mjn|10 years ago|reply
Of the things discussed in this post, the main area where I would seriously suggest a commercial Common Lisp system even for a newcomer, is if they are interested in GUIs, either on the development or runtime side. I can recommend LispWorks for those: it has a graphical IDE with graphical debugger, and a very nice cross-platform GUI library with native look-and-feel (called CAPI). I think compared to the open-source options, both of those will result in a lot less pulling out of hair. CommonQt is passable, but CAPI is far less of a hassle, especially for cross-platform deployment. The obvious downside is that LispWorks costs money and is not open-source, so is probably most attractive to people developing a commercial product. Also, in the case of using CAPI, you commit to LispWorks as your implementation.
[+] WalterGR|10 years ago|reply
I see Postmodern and Elephant mentioned frequently around the web - but not in this list. Are they no good?
[+] eudox|10 years ago|reply
Postmodern is very good, it just slipped my mind as I haven't used it except as a reference when implementing my own ORM.

But since Postmodern is Postgres-only, and is a very stable, maintained library (and I doubt the author has plans for the future, having mostly moved to JavaScript), it doesn't really fit into either 'future work' or 'consolidation'.

As for Elephant, IIRC it's no longer maintained, and I think the model it presents -- just serialize CLOS objects, with whatever backend -- is the wrong way to go about it. Most of the time, it's better to be aware that you're using SQL, or a JSON file, or whatever your storage is.

[+] zachbeane|10 years ago|reply
Postmodern is good. It works only on Postgres. It is fast, easy, and stable.

Elephant has been unmaintained for many years. I wouldn't recommend it.

[+] pvaldes|10 years ago|reply
"I’ve never done any graphics programming, so my knowledge of this area is lacking"

cl-ply for example: draw and manage 3d polygon meshes.

[+] ilurkedhere|10 years ago|reply
This is great. I've been out of the Common Lisp world for several years and stuff has really changed since.

CL-STMX is awesome!

[+] doomrobo|10 years ago|reply
This is unreadable on mobile
[+] eudox|10 years ago|reply
By popular demand, I've just updated it to regular unleaded scrolling. Might change back if I find some kind of jQuery library for portable parallax scrolling.
[+] ParrotyError|10 years ago|reply
It's unreadable on desktop too. What's with this new fashion?
[+] finnjohnsen2|10 years ago|reply
Horisontal works for me on my nexus 6 phone
[+] jlarocco|10 years ago|reply
Yeah, more than 4 words per line would be nice...
[+] 2400|10 years ago|reply
sorry, but it's impossible to read this site.
[+] deltaprotocol|10 years ago|reply
Wow, yes, dark theme huge letters, so simple, so nice, how most people get it wrong? And then... white wall of light almost gets me blind.