But about something completely different. I’m doing quite some Web programming. And have looked into quite a few web development frameworks. There was this question out:
“But Why? Lisp is good. Lisp excels at Domain Specific Languages. Lisp has the REPL for goodness sake. It can’t just be that there are many Lisp dialects / implementations and that it’s a bit hard to get, say, a socket library that works on all of them… can it? I mean, the MediaWiki runs on PHP (I think) and everything I’ve seen or heard about PHP is “…ick…”. So why does the MediaWiki have all the loving goodness and we have the CLiki? (This isn’t to diss the CLiki by the way, it’s cool; I like it but as wikis go there isn’t much there and nothing much has happened to it for ages.)”
his blog is out of order since 4 years. Still there are quite some points about this question:
My take on an answer was:
Lisp and Web Development
why not why?
Friedrich Dominicus response
An essay about why
Gary King write in his blog
Lisp just isn’t there yet when it comes to building web applications quickly and easily unless you want to make it half your own private research project.
But Why? Lisp is good. Lisp excels at Domain Specific Languages. Lisp has the REPL for goodness sake. It can’t just be that there are many Lisp dialects / implementations and that it’s a bit hard to get, say, a socket library that works on all of them… can it? I mean, the MediaWiki runs on PHP (I think) and everything I’ve seen or heard about PHP is “…ick…”. So why does the MediaWiki have all the loving goodness and we have the CLiki? (This isn’t to diss the CLiki by the way, it’s cool; I like it but as wikis go there isn’t much there and nothing much has happened to it for ages.)
So bloggers on Planet Lisp, start your engines please… I’d like several essays from people who know the skinny on web dev and Lisp. Is Joel wrong? Is there a missing secret ingredient? what does Lisp need to come from behind in the web application development language race? After all, Ruby was a dark horse until Rails came along. The best essay gets a prize (to be announced later once I think of something).
Here’s my take on it. I feel I am qualified enough to comment on it. IMHO it boils down to “Simplicity matters”.
What are you talking about
Now even if I get flamed on it. The most Lisp libraries I know of are “application-developer” unfriendly. Without doubt very clever people have written very clever software in Common Lisp, but they either wrote it for some other very clever people or people willing to spend at least half a year to get into it.
In every other language I know libraries are written to be used by others. They are probably not as elegant and clumsy but one can understand them.
It’s not a problem for me to sit down get the next C library and use it. There may be some problems, but after at least a month of work one got it. Most of the time it’s much easier. Examples for C libraries one simply can use:
glib (the naming conventions are strict and it does not take much to simply write down a program)
libaprs only trouble spot is getting used too pools. That’s however you learn very fast and you’ll appreciate it.
I could go on with other libraries, hell one even can get the MSDN stuff and apply a lot of it. And this API is not that strict but at least quite strict in it.
The Lisp downside
Try one of the following packages:
and you feel you are in “no-where” land. The APIs are not for simply use them, you have to spend half of your life get into them. The obviously are useful and can be used by quite a few. One can not stress that enough. few people can do something in it, few can work with it, few can contribute to it.
Those who can find them obviously easy enough, but most don’t and so this stuff is used by let’s say a few hundreds.
Here some citations from mails I received for a few packages: (names omitted)
I do not use it, because I do not understand it
It’s complex and probably not what you really want….
I do not like anything in that area, so if I had to get into it I would write my stuff alone….
Of course there are counter example but even in the outstanding package of Edi Weitz you have to write:
(multiple-value-bind (mstart mend reg-start reg-end)
(cl-ppcre:scan “(\d+) Windows executable”
whereas I wrote in Ruby e.g
if line =~ / (d+) Windows executable/
Yes, you are right, Edis syntax principally the “cleaner” one. The stuff has to be stored somewhere, either in some globals or as in Edis package as return parameter, but how much do you have to remember?
Another example: My way to “web-programming”. I do had have to touch PHP code and this code wasn’t convincing. But one could understand it in a few days, and even change that and get to some end in a manageable time span. It has took me more then 2 months to get somewhere with UCW. Yes you can call me dumb, if you feel so, just strange that this dumb person manages it to get into rails in 3 days.
Or: I tried to get into clim for ages, I even paid for a migration of the Present/Accept stuff into the web surrounding. But without the authors help I did not manage to find out why some output was messed up, this has not happened to me in either Rails or OpenACS.
Try to get into CLIM with the given tutorials, good luck.
On the other hand me dumb person manges it to write a gui-application with CAPI in acceptable time.
Because people can use other solutions.