One of the things I like to do is look at the popularity of programming languages from a marketing perspective.
Let's look at some websites of other dynamic programming languages.
Now, Common Lisp.
I think these images speak for themselves. For a new user, it's hard to know where to start.
I'm going to put downloads for Lisp all-in-one packages up on this site---I'll practice what I preach.
Comments
sssh
ssssh! that's part of the conspiracy!
I agree with you, we need a
I agree with you, we need a friendly lisp.org website too, where new users can understand on a fast way what's Lisp, which dialect they can use, where are the libraries, who are the people behind that, however, we need a simple and efficient way to answer these questions.
I'll support any iniciative on that.
Cheers and congratulations about your almost Lisp blog.
A friendly lisp.org web site
In fact, I recently approached the Association of Lisp Users about this very issue. Ernst van Waning, the president, agrees strongly that we should make lisp.org promote Lisp, help people get started, etc. He's going to discuss the idea with the ALU board.
Have you seen my paper surveying the Common Lisp implementations? Much of the information there could be used as a starting point.
I've migrated to cusp
Maybe you should also include Cusp from:
http://bitfauna.com/projects/cusp/
For getting started in Common Lisp on WINDOWS it is a great entry technology stack.
Disingenuous
Perl, Python, and Ruby have the advantage that they are the only or at least canonical implementation of that particular language. Therefore, you go to perl.com or python.org and there it is.
When I run lisp, I don't type 'lisp.' My implementation isn't at lisp.org or anything like that because there are a bunch of implementations, none of them strictly canonical. If you'd gone to sbcl.org or cons.org (CMUCL) for instance, you would have found an accessible download link, although not really a mascot.
This is the worst and most
This is the worst and most academic argument.
There's no reason why lisp.org can't give links to implementations and documentation to get people up and going.
Does cplusplus.org link to a
Does cplusplus.org link to a place I can download a C++ implementation and then type "c++" to start using C++?
Does visualbasic.org link to a place I can download a VB implementation and then type "vb" to start using VB?
Does C#? Does Delphi? Javascript? Pascal?
There are good arguments against Lisp, but when you've come up with one that doesn't hold water against about 15 of the 20 most popular languages in the world, it's probably bunk. You've shown that Lisp is not Perl, Python, or Ruby ... congrats. Most languages aren't.
Java does.
Java does.
JavaScript is in your browser RIGHT NOW
The point is access to an impl to get started.
JavaScript is in your browser RIGHT NOW.
C++/C/Pascal are by their natures machine-oriented (pascal less so), so the idea of a generic compiler isn't as cut and dry.
LISP you would think is high enough of a level they'd get their act together.
"C++/C/Pascal are by their
"C++/C/Pascal are by their natures machine-oriented (pascal less so), so the idea of a generic compiler isn't as cut and dry"
Lisp COMPILERS are by their nature machine-oriented, so the idea of a generic compiler isn't as cut and dry. Hint: go into a lisp of your choice, and type (disassemble #'some-function-you-wrote)
He's not arguing against Lisp.
ok?
Lispers are living inside a bubble
Some years ago I made several attempts at learning Lisp and the reason I ultimately gave up was because the Lisp community is sort of like the Amish people of programming communities. It attracts a lot of oddballs. Some reasonable people, but mostly stubborn, insistent oddballs that hold strange beliefs.
To begin with, the litterature was pretty abysmal. In Lisp circles "Structure and Interpretation of Computer Programs" is revered as sort of a bible -- yet it lets the aspiring programmer down since it goes on and on without ever providing any information that is actually useful. It is like trying to teach a toddler how to walk by showing them a video of people who precisely describe how to walk. Indeed, all the information is there, but it completely misses the mark since what a toddler needs is to program his brain to correctly interpret sensory input, make sense of it, generate the correct muscle contractions and strengthen the right muscles. In other words, in order to learn how to walk a toddler needs to walk.
Just as a programmer needs to program to learn about programming.
The way you do this is by having a _practical_ approach. By writing programs that do something besides computing fibonacci sequences and demonstrate the elegance of tail recursion. SICP is an exercise in intellectual masturbation. And it is highly improper that old men with funny ideas are let lose on our young in this manner.
At the time I was learning Lisp, much of the litterature was of the same type. Aloof, irrelevant, elitist and extremely proud of it.
Turning to practitioners wasn't much help either. As a new Lisp'er you have this feeling that you are crashing their party. They truly see themselves as superior -- no really, and everyone else is an idiot for not having long since converted to the One True Way.
At one point, in my foolishness, I wanted to write a networked application in Lisp. Of course, I was presented with various ways of _avoiding_ it altogether by means of various silly hacks. Like feeding data in and out of the system by means of files. When I blurted out that "look, this thing has to scale to quite a few users so the overhead of your approach really is a bit too fiddly" people just got really pissed off.
Eventually I was told of an add-on I could dowload, which, after an afternoon of fiddling about, I got to work. I played around with the code a bit and then started looking for sample code on the net. In my foolishness I asked if there happened to be a standard way of doing networking in Lisp. The answer was something along the lines that standards for something like networking was stupid, that sockets were badly designed and that I was an idiot for worrying about the portability of my code between Lisp environments.
Of course I became frustrated and I just gave up. In the time I wasted on Lisp I could have solved my programming problems in half a dozen other languages and been done with it, and I would probably have gained a lot more _usable_ knowledge.
The problem with Lisp isn't the language, or the way one models and solves problems. The problem is the people. I know quite a few very successful systems that were written in Lisp. They're high quality and they perform well -- but the minute their creators are off the stage, the system usually exits, stage left, not too long after them. Remember Viaweb? Ask yourself how come the Common Lisp code they wrote isn't being used anymore. I bet you their answer roughly translates to "because people are idiots". While there is an element of truth in that it still seems to be the main marketing slogan of the Lisp community. And it isn't exactly a good marketing slogan if you ask me.
For Lisp to succeed, the Lisp community needs to grow up. It needs to develop social skills, and I mean that in a *very* broad sense of the term. Lisp'ers need to understand why languages like Java, Python, Ruby, Perl, C++ etc are being chosen time and time again by developers and managers. They need to start thinking about APIs, tools, usable libraries, frameworks, infrastructure and they need to think about generating a higher volume of quality literature that teaches toddlers to walk.
Now, you can piss away another opportunity and pick at my arguments or you can grow up and do something about it.
Peter Seibel's approach seems
Peter Seibel's approach seems pretty friendly, with lots of practical examples (a spam filter, web programming, html generation library, mp3 database & browser, etc). He even gets you set up.
I've noticed a lot of newbie-friendly blogs and whatnot lately as well. The community seems to be changing their attitudes.
thanks so much
Thanks so much for sharing your story. It rings true with me. And it's stories like this that make me want to make a difference.
You're living inside a bubble.
Have you considered that the problem here may not be other people? The fact that a group of people who are doing fine without you aren't giving you exactly what you want sure isn't their problem.
In no way does the lisp community need to "grow up" or "develop social skills", and the fact that you suggest those things indicates that your expectations are out of sync with reality. If you want to market lisp, do it. If you want to write apps in lisp, do that. But "OMG this community isn't what I want it to be" whining is irrelevant and annoying.
Predictable reaction
You went on to prove my point.
The underlying sentiment of this discussion is "why isn't Lisp popular", and it is EXACTLY this attitude in the Lisp community that is the reason why Lisp is not exactly the language of choice for the vast majority of programmers. You clearly demonstrate the attitude that has kept Lisp a marginal language in the job market and that will keep Lisp marginal if people refuse to grow up.
And despite what you seem to believe, a programming language is only as valuable as its community. Look at PHP for instance. A horrible mess of a programming environment when viewed from any angle, but still PHP is a *lot* bigger than Lisp is today, or has ever been.
Oh sure, I know all the standard lines on how PHP caters to the idiots and how Lisp, like an Umberto Eco novel, is designed to cultivate a more refined audience. It must be comforting to have an excuse for the vast majority of programmers ignoring Lisp.
I've been a programmer for about 20 years. I have developed production systems in about a dozen different programming languages and I have to say that it is rarely the language itself which decides if it is suited for a given project or not. It is the community, the libraries, the literature, the ease with which you can deploy solutions, access to enough competent people, influx of new talent. You need to be pragmatic and you need to be realistic.
Nobody cares if it works for you.
A lot of Lisp's current
A lot of Lisp's current problems could be solved if the entry barrier were simply lowered. Lisp draws the sort of people who are smart enough to get over that hump. They're the same people who think that libraries that don't die horribly so long as you use them right are good enough, that the editing environment and setup procedures that can be figured out with enough Googling is good enough, and a language with a frozen standard but can be changed by the user is good enough. If it's easy for them, it must be easy for everybody else, so why isn't everybody else using it? Lisp programmers, on average, are willing to put up with a lot more, so much as they have the technical superiority in the language itself.
For Lisp to really take off, the community needs to understand that you need more than technical superiority to be a good tool for working with. I totally agree with you.
I have a litmustest that I
I have a litmustest that I apply to programming languages when learning them: I write a webserver in any language I am trying to learn. A webserver represents a nice mix of very practical problems: networking, file IO, parsing, concurrency, extensibility, integration with third party systems, with other languages, databases etc.
I have about half a metre of shelf-space with Lisp books. When Peter Seibel's book arrives from Amazon it will be the first Lisp book I own that appears to deliver what the Lisp community obviously has not been clever enough to figure out earlier. Isn't that rather sad?
Lisp textbooks, why Lisp people get defensive, and the future
When I first tried to learn Lisp in 1973, there really were no useful
textbooks. But for a long time now, there have been textbooks more
practical than SIPC. David Touretzky's "Common Lisp: A Gentle
Introduction to Symbolic Computing" was published 18 years ago. And
now we have Peter Seibel's "Practical Common Lisp".
I've heard before that it's hard to get good help, or even friendly
help, from the Lisp community. I've never been in the position that
you were in; I learned Lisp at the feet of the masters at MIT when I
was a freshman. For people to treat you that way is inexcusable. I
don't know what to do about this.
You mention Viaweb. There are really two questions here. First, why
do some Lisp applications get rewritten (usually into Java, these
days) after (or sometimes even before) the original authors leave?
Second, why do some people answer "because they are idiots"?
The answer to the second question is just frustration. When Lisp
people are talking to each other, they already know the real answer to
the first question, and all they're doing is expressing a shared sense
of disappointment between each other.
The real answer to the first question is usually that the managers
were never truly comfortable with Lisp. They know it's unusual.
There used to be an old saying in the computer industry: "Nobody gets
fired for buying IBM." It means that if you make the conventional
decision, and something goes wrong, you can always say "well, it can't
be the fault of my decision, since everybody else does that."
We've all seen cases where the decision to use Lisp was blamed for the
failure of a project, when the real blame lay elsewhere. My favorite
story of this sort was a major electric CAD (computer aided design)
research project at the MCC consortium. They said that they were
going to switch away from Lisp because Lisp is "too slow". Analysis
of theis architecture showed that for every single transistor and
every single wire, they were using remote objects, on different
computers, that had to be located using a network resource-finding
protocol. In short, their fundamental architecture was inherently
slow, and would have been just as slot in any other language. But
Lisp was a convenient scapegoat.
After a lot of this, Lisp people tend to get defensive, and develop
something of a "circle the wagons" mentality. This is self-defeating
and must end.
There are also some less-specious concerns with using an unusual
language, such as whether you can find people who are already
experienced programmers, whether there is a large enough community
developing libraries, and so on.
Your main point, about how it's the community, the libraries, the
literature, etc. is fundamentally true, and that is indeed what we
need to focus on.
As for "isn't that rather sad", to me it's quite the opposite. Peter
Seibel's book is great news. The use of the phrase "not been clever
enough", however, is unfair. Writing a great textbook is very hard.
If you're a great textbook writer, making your living by selling
books, you have a lot of incentive to focus your energies on a
language with lots of users, so that you have a larger target market.
There's a lot of work to be done to deal with the valid issues that
you have raised. There's a new generation of Common Lisp enthusiasts
now, and new energy to deal with these issues. I hope to see a lot
of progress in the next couple of years.
Thanks
hey Dan,
Thanks for responding.
I don't think anyone is avoiding Lisp on the basis of runtime performance, but, as you said, on the basis of managers sensing that it is a bit removed from the mainstream. Not only with regard to availability of competent practitioners, but also that Lisp is a whole different category of language compared to the ALGOL descendants.
But there are some companies that are willing to go with Lisp (and more importantly: stick to it) and it is because of conversations I've had with people who work on Lisp systems in these companies Lisp intrigues me: I would like to be able to do what they do.
As for literature, I am not calling into question the quality of what authors have produced or belittling the effort -- I am just pointing out that, for the most part, it isn't what Lisp *needs* and I think not seeing what Lisp needs is undeniably a bit inept when surrounded by so many mediocre texts for other languages that achieve orders of a magnitude more for the languages they cater to.
Not the better comparison
C has the same problem. Maybe that's why no-one uses it...
http://www.open-std.org/jtc1/sc22/wg14/
http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?c...
Maybe you shouldn't compare languages defined by an implementation (so, there's always an official implementation) with languages defined by a standard.
If I go to a web site from a lisp implementation I also have "download" links.
Sure, but say you want GCC.
Sure, but say you want GCC. You google 'gcc' and find the wesbite:
http://gcc.gnu.org/
Where there are obvious download links AND a mascot!
That's just like searching
That's just like searching for allegro, lispworks, sbcl, etc... You'll also find download links and logos.
But you were searching for the name of the language which may or may not have a "primary" implementation. The ones defined by implementation (instead of a standard) usually have a reference implementation.
Lisp culture is totally
Lisp culture is totally retarded.
The (obvious) starter links :)
http://swiss.csail.mit.edu/projects/scheme/ <-- has a download link and logo (no mascot :)
http://www.plt-scheme.org/ <-- same ( mascot? http://www.plt-scheme.org/screenshots/initial.png )
http://www.gnu.org/software/gcl/ <-- common lisp with download link. But no manual. Ugh.
http://borg.cs.bilkent.edu.tr/cgi-bin/info2www?(gcl)Top <-- not pretty. :)
Same for C++
Same for C++
Not the same thing.
C is like the latin of computer languages, whereas Lisp is that odd african language with the clicking noises that we keep hearing is going to go extinct.
You can hardly avoid being exposed to C while it is completely possible to live a long and productive life as a programmer without ever having to write a single line of Lisp -- let alone try to understand what a Lisp program is doing.
Much the same goes for C++ although I would liken C++ more to an Orc -- a hideously deformed and tortured version of C.
The point being that Lisp is a marginal language. There are few practitioners, few user-facing systems and generally not much talk about it. Every now and then it comes up in conversation when someone wants to appear sophisticated (sort of when young people try to give the impression that they've read some old gasbag like Nietsche), but for the most part it is that fuzzily remembered dead-end branch on the family tree of languages. The branch that ran off and joined the Amish or something along those lines.
There doesn't need to be a download link for C or C++ since they are not marginal languages.
Not quite. Lisp is the Latin.
Not quite. Lisp is the Latin. C is the English.
Historically perhaps
If you are assigning labels by age, then yes, Lisp is latin.
If you are assigning labels by the role the language plays in its environment then C would be latin since latin used to be the fundamental language for acedemic discourse -- just like C is the fundamental glue of which operating systems are made (granted that there have beein operating systems in Lisp, but these are extremely far from being commonplace).
Also, latin, by virtue of being a dead language, doesn't have the richness of the english language -- which is more akin to the richness of Lisp compared to C.
Okay, so the analogy sucked. :-)
Then again, Lisp (or, more
Then again, Lisp (or, more properly, lambda calculus) is "the fundamental language for academic discourse"; C is for getting things done.
that is so true
i agree its not easy to start off for new users
The Paul Graham factor
Want to know the best way to get support for an defacto Lisp 'distro'? Have Paul Graham put a download link on his front page. (http://www.paulgraham.com)
I'm sure it'll never happen, but it would most likely instantly decide the debate and solve the disparity.
-m
pg is too busy telling us
pg is too busy telling us we're losers for living in the wrong city and because we're not 23-year old entrepreneurs.
pg never read this...
we're not 23-year old entrepreneurs.
Who needs to be an entrepreneur when corporate life has so much to offer? ;)
-m
Not true
In fact, he does have a link on his front page. It's called Arc, his own Lisp implementation. Problem solved? Not really.
If you want Common Lisp, then read his Lisp FAQ :
"Do you know a good, free Lisp implementation?
There are several. The Common Lisp implementation I use is Clisp, but CMUCL is also well-regarded. For Scheme hacking I use Scheme 48 and PLT Scheme."
I've never met anybody else who used Clisp; SBCL is absolutely dominant. Again, problem solved? Not really.
Getting a superstar to say "I use FooBar" may work great if you've got a pro basketball player selling sugar water for you, but it's not much use for selling compilers.
You have an answer
This post was published in reddit/programming
Just after that, http://common-lisp.net/project/clbuild/ was also published in reddit. I understand it is an anwer from reddit clisp folks. You know, SBCL is the default in clbuild, but it can be tunned to work with other implementations.
To a previous anonymous commenter: Python has 5 implementations: cpython, jython, ironpython, pypy and stackless (maybe some other implementations around, i haven't investigated this enough, how about mod_python?)
Hey guys, you are right - C
Hey guys, you are right - C and C++ have neither easy download nor canonical implementations. Excellent point, case closed. Keep it up. Sleep well. In the morning Lisp will be as popular as the two combined.
try
Try this out.. nice C plus plus but it was developed in delphi :)
Then: "Try this out... nice
Then: "Try this out... nice Common Lisp but it was developed in Common Lisp :)"
If you start comparing languages in a way, don't make exceptions when someone points an obvious flaw. Just admit you were wrong and shouldn't compare apples and oranges.
What's worse...
What's worse is that lisp.com is one of those scammy faux-search engine pages. Now, I know that a dotcom isn't appropriate, but we're deigning to the unwashed masses aren't we? Somebody buy lisp.com and put a link to your favorite implementation, FTW!
Useful comparison?
There are times when a comparison is useful. There are times when it is not useful.
Here I am not trying to say Lisp doesn't have a download link therefore it is unpopular.
I am trying to show how much more ease for the newbie we can achieve if we want to.
It itches - scratch it!
You don't achieve "ease for the newbie" by complaining. If it itches, scratch it. It's amazing that so few persons get it. Just look at the Reddit thread full of whine that your post has spawned. So easy to bitch, even without an itch.
It's certainly much more
It's certainly much more difficult to find "www.cl-user.net" than some Lisp implementation download site...
How about NewLisp...?
Disclaimer -- All the Common Lisp guys hate NewLisp because it must be doing something wrong... ;-)
But:
* It has an easy download (complete with installers) for Linux, Win and Mac.
* It has a slogan and logo (Dragonfly made of parens (could be improved, but there you go)).
* It's easy to install and manage -- no extra packages needed to "do something."
* The function calls have been cleaned up a lot to avoid confusing arg order and etc.
* Pretty well suited for a quick scripting language, which is how Perl/Python/Ruby got going.
* Complete documentation, with an example for every function! (Very important!)
* Rapid releases, responsive maintainer.
There are problems:
* Pass by value instead of ref by default.
* File processing speed sux.
* Yadda, yadda, not "LISP" enough.
However:
It finally gave me an entree into Lisp with a stable platform that I could do simple cross platform development with for script and webby style stuff. I'm certainly not doing high forehead macros all the time but I've got a nice and easy to use Lisp environment that's *one* download and an install away from *any* machine I want to work on. It's also given me a useful stepping stone to other Lisps, which make a whole lot more sense now that I've had a friendly environment to work in. After playing with NewLisp, I finally started to take control of Emacs Lisp (I know, not a "real" Lisp either... Sigh). I even wrote my own Lisp interpreter in Python the other day, so I think I'm really starting to grok how this stuff works.
So, to my mind, NewLisp is doing it right. If you want to keep the barrier to entry high so that you can enjoy exclusive access to your wonderful Lisp that nobody but fellow academics can fathom, please be my guest. However don't be too outraged when "NewLisp on Rails" (not a real product) takes over the world and you have to use it if you want to work with Lisp... Common Lispers, please quit ignoring the good stuff that NewLisp is doing and do some of it your own selves! It's nice that ACL has such a long and storied history, but can we please handle filenames in a reasonably modern and straightforward manner? ;-)
Sorry! That turned into a bit of a rant...
Awesome logo
I've heard the crap people talk about NewLisp (haven't tried it myself, sorry), but I must say your dragonfly logo is awesome! You should have that on the front page - it would be a much more identifying feature than the rather bland name NewLisp. Keep up the good work!
Not my logo, but thanks anyway!
Hi,
Sorry to give the wrong impression... I had nothing at all to do with the creation or logo design or whatever of NewLisp... I'm just a happy user.
I'm glad you like the logo... Download it and give it a try if you haven't!
Logo and slogan
I like the logo and slogan.
"It's easy to install and
"It's easy to install and manage -- no extra packages needed to "do something."
You *always* need extra packages, unless you're writing a trivial program. The program I'm working on in Common Lisp right now (which I thought was pretty simple) uses a feature which NewLisp doesn't have. Or rather, it has a much weaker version of it, which is completely useless for my program. (And CL has a million libraries already, which NL doesn't.)
Common Lisp is the result of bright minds at several different Lisp companies merging years (decades?) of Lisp work into one standard. The result is a mishmash of different styles, and not always the best function names, but there is actually a reason for all of it. Each piece solved a real problem.
That's why we get frustrated by things like NewLisp -- not because CL can't be improved (it sure can!), but because people go in and just take out the ugly-looking parts. Then we try to write Lisp in it and discover the features we need are gone. People talk about how Lisp isn't built for practicality, but in fact CL was built for just that. We don't want the funny-named functions because they're obscure; we want them because they make our programs 5x shorter. :-) If you try to make the names more descriptive and consistent, that would be good. If you remove a feature because it looks odd, you screw up a dozen other features which happened to play really nice with that one, and it spreads from there.
I doubt "NewLisp on Rails" will ever happen, because NewLisp lacks many of the features that make Lisp great; it looks like Python in Parens. There's no advantage to that over just normal Python.
>> NewLisp lacks many of the
>> NewLisp lacks many of the features that make Lisp great; it looks like Python in Parens. There's no advantage to that over just normal Python. <<
NewLisp does have an advantage, and its name is Paul Graham.
That probably doesn't outweight the fact that Python is a mature language with libraries for everything and a huge community, though.
I don't program
Don't know lisp from linguine, but what's wrong with #emerge clisp?
Post new comment