Friday, November 18, 2005

It's been interesting to see the play that Ruby has been getting recently. I first heard about Ruby years ago but didn't think much of it. It seemed to be a bit of Smalltalk rolled up with some other concepts. Interesting, but not compelling. Rails seems to have launched Ruby to megastar status in the Next Big Thing sort of way.

What I can't quite tell is whether this is just people fawning over more Lisp features that have again crept into the collective conciousness, like GC when Java first became popular--listening to some reports you would have thought Java invented it--or whether there is something more to it. I have checked out the Ruby on Rails web site and it all looked like stuff that Lisp was probably capable of doing better, but it was hard to tell without spending lots of time on it.

This article describes why some key Java folks are starting to look more at Ruby. Now the question is, why not Lisp?

Why not Lisp? Tate resumed it with one word: catalyst. Ruby is a great language, though not the best. The implementation is good, but could definitly be better. So what is about Ruby? Rails. Rails is Ruby's killer application, and Rails is so good at what it does that people are willing to start project in Ruby on Rails without even knowing either!

I'm sure the Lisp folks can come up with something that will make everyone want to use it, because it means access to Lisp's killer appplication. You just need to find what people need.

All it needs to do is go incogito, come up with a new name, and a new set of buzzwords and hey presto, everyone will be talking about this new language, Klapton, with parentensis based program development acceleration and syntax encrustation!

Yep, e.g. even an admittedly great company such as Apple spent (and spend) great amount of money on marketing. It is a good thing people are staring to notice because of Paul Graham and now even Joel Spolky (!) is talking about it.

Why not Lisp? Well, for me it is because I have completely failed every time I've tried to set up a working Lisp environment to learn the language. Ruby, OTOH was already installed, and Rails took about five minutes to set up.

Lisp isn't easy to just "pick up", and it carries a lot of mindshare baggage. Ruby smells fresh and exciting and accessable to Perl, Python, and C programmers; they can get from zero to "Hello, World" in less time than it takes to pick which Lisp interpreter to download.

The "Why not *your-favorite-language-here* question" is tricky for any language. True, Lisp isn't easy to just "pick up", specialy for traditional C/Java programmers and Ruby has many benefits for the kind of programming needed in a web environmente. Maybe Lisp can be an option, who knows. But the fact is that nobody has done it yet. I like Rails because it is a very productive environment, and I use it even if I had to learn a new language. Besides, the Ruby basics are not that difficult.

Nick has it exactly right. Ruby is "good enough" and Rails installs almost instantaneously compared to CL/Araneida/UCW/CLSQL/CL-PPCRE/ etc. etc. etc. Experienced Lisp programmers can do things that RoR could never do but how many experienced Lisp programmers are out there building web-enabled CRUD apps? Very few. I vastly prefer Lisp to Ruby but I can certainly understand why others make the more pragmatic decision.

If we had LoL In A Box there might be a different answer but I think that will take a while for the tiny Lisp community to put together.

Simplest answer as to why I am using RoR instead of doing the Lisp thing. With RoR there is one obviously right way. With lisp there is at least five different ways just to install the base language, and then there is a bunch of different web servers which work on some, but not all, implementations of lisp.

In short, the cognitive distance to getting to first base in lisp for a web developer is too far. RoR consists of about three commands to a working webapp.

Actually, when I first saw the Ruby on Rails site I thought it was only a matter of days before a Lisp on Rails site sprung up. But, alas, the world is still cuckoo for OOP. One could probably marry the CLOS and clsql and achieve a similar result.

Their framework isn't perfect though. It's not RESTful for instance, which has caused some problems.

I think that people frequently give entirely to much of a technological spin to the reasons "why not Lisp?"

IMHO the reasons are more likely to resemble the one Brett Morgan gave, (i.e "In short, the cognitive distance to getting to first base in lisp for a web developer is too far.").

[I'm speaking here as someone who loves Lisp and Ruby. Please note that my comments really apply only to Common Lisp (if at all).]

Lisp culture isn't very newbie friendly in general, and thus tends to select out the non-macho-geek people. Making a clueless remark on a Lisp newsgroup (or whatever) always seems to bring on someone who seems angry that there are people who don't know about... (whatever it is that is being asked about). This does not encourage return visits.

Lisp doesn't have a culture that values putting together robust open source tools, frameworks, libraries and the the like (If so, where are all of them? I count less than a hundred). The Ruby culture has thousands of these, and it beats Lisp by a long shot (although it isn't as well[?] developed as the Perl world).

Also Ruby has the advantage that it doesn't have a strongly fixed identity. This means it can find a new niche (I guess this is basically the same as what John Connors said in reverse).

Lastly, Ruby feels more familiar and isn't very far from Lisp in expressive power. Sure you don't have Macros, but you usually don't miss them (like in Smalltalk). Ruby block syntax (i.e. easy lambdas) makes it easy to do without for many of the things for which you would want a macro in Lisp. Not all of them, but many of them. And Ruby has very good reflective capabilities that allow a lot of things (some of which are frankly a bit of a pain in Lisp).

I'm just starting to play around with lisp after a long time because of Paul Graham's essays (Hackers and Painters). Excellent read btw.

However, I notice that there isn't a whole lot of stuff forthcoming from the "lisp community". And by "stuff" I mean some open source "killer apps" that others can learn from. Even though Paul talks about open source and how great it is, I don't know if Paul has actually opensourced a via-web clone. Or something to that effect. Lisp has an elitist mindset, and that may very well be, but then don't expect the "multitudes" (dumb or not) to flock and beat the path to your door.

I see the same thing in the FORTH community, where everyone talks about how GRRRRRREAT they are at writing a device driver in 20 lines of forth, but then when you look at the landscape, there is NOTHING!. Sorry, but in the democratic market of ideas, elitism doesn't go very far. Therefore, the FORTH community has whithered away as the hackers have grown older and more belligerant (possibly age related).

Sometimes the lowly, hardy species wins where the sleek, mighty highly evolved just can't cope.

Not everyone reads (or even understands "Thus spake Zarathustra") but everyone loves Dr. Phil to death like he is the one who came down from the mountain. Go figure.

Barriers to entry for Neitzsche are just too high, and for good reason, but we can't expect everyone to be the uber-man now can we? And no one in the lisp community is big enough to write something worthwhile and have the heart to give it away (and I'm not talking about free lisp books or interpreters, I'm talking about a down-to-earth Killer app which doesn't poo-poo the mid level hacker..)

sorry, I'm not trying to say that Ruby folks == Phil fans. What I'm trying to say is that Ruby and now with RoR , it is good enough. And with low barriers to entry, a lot of people are trying it, and eventually there will be real cool stuff which will happen in RoR and Ruby just because there are so many brains working on it.

Frameworks of computing functionality are becoming very valuable. Better frameworks greatly reduce the long term cost of programming. The economic value of frameworks seems to be rising, languages follow if they integrate well.

While Ruby is aligning with various frameworks (ie Rails), the Lisp community is still kicking tires. An important mass of the Lisp community values individual technical craftsmanship very highly. Caution slows progress.

Maybe these framework discussions will galvanize the community to understand how it plans to remain relevant. I might appreciate Lisp's elegance and power, but my employer won't adopt it if it remains an isolated niche product.