Summary
Some thoughts about programming-language communities, inspired by the Lisp conference I attended last week.
Advertisement
I do not care much about programming languages.
I mean, I do care about programming as a general activity of the
mind and as a mean of self-expression, but I do not care much about
a specific programming language.
I began to program professionally with Python, and I like
the language, but now I am writing a book about Scheme, and tomorrow I will
probably be looking at a language with static typing and type
inference. I do have any kind of fidelity to a specific language.
To me languages are tools which I use for my job and for my personal
entertainment, but I do not feel any particular obligation to keep
using the same language forever.
I think my position about programming languages is quite
common amongst programmers and that I am in the majority.
However, who cares about the majority?
The majority counts nothing when it comes to
programming languages. Programming languages are designed and libraries
are written by a very small minority.
This is actually the norm: all science and arts are produced
and evolve in consequence of the work of a small minority.
The majority matters when it comes to the question of
the success of language; one may argue that one language is
more successful than another due to a set of specific boundary
conditions: in that time and place, in that historic/economic situation,
a language may have more or less success for all sort of
technical and non-technical reasons.
When a language becomes successful the majority become relevant mostly
in a negative sense, as a force resisting change, since backward
compatibility concerns becomes essential. However, here I am not concerned
with the question of success: I am concerned with the creative
aspects of a language, and the creative parts are always done
by a small minority. It is that minority which matters.
In such a minority you will find a lot of people that really care
about their chosen language. This is especially visible in
non-mainstream languages, and particularly in the Common Lisp
community.
I am writing these notes the day after the European Lisp
Symposium, which was my first Lisp conference. I did attend
the Italian Python conference three weeks before that, and while
there are a lot of really passionated Pythonistas there,
the passion is much more visible in the Lisp community,
particularly in the etymological sense of the term.
At the conference I saw with my own eyes many people caring and
suffering for their language, and that sight prompted me to write
these notes.
On a superficial level, the level of the user base, you could just
dismiss such people as language geeks that should get a life and care
more about other things. However, while not all language geeks are
part of the active community (a lot of geeks are just whiners not
producing any code relevant to the community and not having any effect
on the evolution of a language and its libraries) I think it is fair
to say that within the active community you can find a number of geeks
which actually do care (and possibly care too much) about their
language. I would also argue that the number of passionated people is
much higher in the active community than in the passive community.
I put myself in the active community, since I
have written a few open source modules, some of them with
many thousands of downloads, and I have written papers
documenting obscure features of at least one language,
which have become the standard reference on the topic.
On top of that I have being very active on newsgroups and
mailing lists, I have a blog about programming and I am
a participant and even an organizer of language conferences.
Still, I am not sold to any particular language, and I do not
suffer/enjoy particularly if the language I am using right now is
doing badly (in some sense) or is doing well. The reason is that I am
a programmer by accident, not by design, and that programming is a
secondary interest to me (I studied Physics not Computer Science!).
However, I do realize that there is a sizable portion of people
in the active community which care a lot for their chosen language and
I take them very seriously.
The Lisp community is a special case, since the language is the
second oldest language in the world and it has such a long and
glorious history - for instance at the conference we had multiple
references to the legendary Lisp machines the people of my generation
never saw. My perception was that a lot of people at the conference
felt very sad when comparing that times (the mid eighties) with the current
situation. Common Lisp look is perceived to be in a bad shape with
respect to the past, at least if we measure the success of language
in terms of user base and of money being put in it - which is a
measure of success I do not particularly like, BTW.
In the Common Lisp community you feel the suffering (and the pride too)
much more than in other communities. Also, the people which used Lisp
in the past but did not feel bound to it have already fled to other
languages. As a consequence, now the community is somewhat
self-selected and the percentage of people really caring about the
language is much higher than in other communities.
I did know about the Common Lisp community from comp.lang.lisp,
which I read sometimes (rarely actually) but I did not really
believe the newsgroup to be representative of the community.
On the other hand, the language conference not only confirmed the
feeling you get from the newsgroup, but actually I had an even
stronger impression of suffering.
Is the language conference representative of the Common Lisp community
at large? I do not know, probably not, since there were only forty or
so people there, but I will assume here - as a working hypothesis -
that the people at the conference were indeed representative of the
active community (the passive community does not count).
I am more involved with the Scheme community, and I was quite surprised at
the conference seeing how much different the communities are. Scheme
is a research language, it has always had a small community and little
money: people do not feel they have lost much during the last twenty
years. Most Schemers know that they will never conquer the world and
they are content with that.
On the other hand many lispers think that they have lost the mind-share
they had in the past and they suffer for that: I remember particularly
Scott McKay, who cited Ruby on Rails multiple times and made pretty
clear that he was disturbed by the fact that Ruby was having much more
success than Common Lisp, and that many great hackers very choosing
Ruby, whereas twenty years ago they would have chosen Common Lisp. For
comparison, I never heard in the Scheme community anybody complaining
about the success of Ruby, they just do not care.
Of course, you should take with a grain of salt anything I
am saying, since those are mostly subjective impressions
I have got from a single conference. Certainly at the conference
there were people happy with Common Lisp as it is (for instance
Pascal Costanza did not look sad at all!).
I may well be completely wrong about how the Common Lisp community feels,
but it does not matter: what matters is the external perception of
the community, nor the community in itself. So my perceptions from the
outside, even if wrong, are significant. Actually, I am sure that a
lot of people out there - people that could be potential new
members of the Common Lisp community - do share my perception and stay
away from the language because of that perception.
People - and I mean people that care - chose a language
not only because of its features, but also because of its community.
There are people taking pride in being part of a large "successful"
community (they will not choose Common Lisp) and others taking pride
in being part of a small "oppressed" community (they might choose
Common Lisp).
I do not feel particularly either way. I am an organizer of the Italian
Python conference, and this year we had Guido as guest of honor and more
than 380 participants and I am happy of the success we got; nevertheless now
I spend most of my spare time hacking Scheme and posting on the Ikarus mailing
list, which has less than 10 active posters. I am not particularly
proud of being part of a large community or of a small community, but
many people care about these things.
I care about the philosophy of a language, which is the
philosophy of its community: and when I had to choose between Ruby or
Python I chose Python because of (the perception I had) of its
community; similarly, when I had to choose between Common Lisp and
Scheme I chose Scheme because of the community.
Therefore, it is obvious to me that the problem of Common Lisp is not
the language but the community: if the community is failing to attract
new users, because it feels like a frozen community full of nostalgia
and no clear vision about the future, there is no point in changing
the language.
I have a lot of respect for the lisp community and for what they
have accomplished in the latest 50 years: I want to absorb
what they have to teach us youngsters so
that their experience is not lost. It is important for that knowledge
to be passed into new communities and new languages, since
I perceive the Common Lisp community to be at a dead end.
Of course Common Lisp will continue forever, just as FORTRAN will
continue forever and COBOL will continue forever, but the language has
stopped to innovate decades ago (note to the reader: at this point you
should read Paul Graham's essay about why Microsoft is dead).
I am more optimistic about Scheme: it will
never become mainstream, the standardization process will
always suck, but there will always be young implementations
and new blood coming in.
This is clearly a personal impression: I talked with SBCL hackers at
the conference, with CLisp hackers, as well as with people using Lisp
professionally: there is still a lot of work being done in concrete
implementations, and new projects. It is just a perception of mine
that things are more fun in the Scheme community and that there is
more going on, especially in the newest R6RS implementations.
I could just be ignorant; nevertheless, my impression after the
conference if that I have been wise in choosing the Scheme camp. No
offense to anybody is intended of course, and actually I am very happy
they invited me, since it was a very nice conference and an extremely
interesting experience. I have also seen a couple of cool projects
that Pythonistas should copy, and perhaps I will have to write another
post or two about ideas that came to me from the conference.
All that is a measure of success to me ;-)
This was a great article. I've had about the same observation as you. The Common Lispers lament their language's lack of success while the Schemer's just quietly continue doing what they do.
One difference I've noticed in the communities is that the Schemer's don't generally assume that their language is the best ever period end of discussion. Schemer's tend to, as a whole, be more willing to learn from other languages. Common Lispers, on the other hand, tend to get defensive at any hint of a suggestion that other languages might have something to offer.
Of course, that's all generalization. There are plenty of open minded CLers and close minded Schemers in the world.
I want to make one small correction to the article
> The Common Lisp community is a special case, since the language is the second oldest language in the world and it has such a long and glorious history
Common Lisp is actually younger than Scheme and in fact stole at least one important feature from Scheme: lexical scoping.
It's the Lisp family that's old. But Scheme is as much a part of that tradition as CL is. It's purely marketing that CL gets the Lisp "brand" where Scheme does not.
> I want to make one small correction to the article > > > The Common Lisp community is a special case, since the > language is the second oldest language in the world and it > has such a long and glorious history > > Common Lisp is actually younger than Scheme and in fact > stole at least one important feature from Scheme: lexical > scoping. > > It's the Lisp family that's old. But Scheme is as much a > part of that tradition as CL is. It's purely marketing > that CL gets the Lisp "brand" where Scheme does not.
You are 100% right of course. I made the unconscious mistake of identifying Common Lisp with Lisp. I have changed the sentence now, by removing the word "Common".
First, does anybody really care about Paul Graham's predictions anymore? He's a semi-interesting writer, decent businessman, and probably good programmer, but his hand-wavy predictions and his hacker "identity politics" tend not to reflect reality.
On to CL: CL is interesting in that there's at least 3 companies still hanging in there developing and supporting proprietary implementations. By that measure, I can't call CL quite dead. It's combination of speed and extensibility are still pretty much unmatched when taken together as a whole.
But as far as some grass-roots revival, I tend to agree that's probably not going to happen. I will always contend that the syntax is a major stumbling block - there's just not enough no matter what.
> First, does anybody really care about Paul Graham's > predictions anymore? He's a semi-interesting writer, > decent businessman, and probably good programmer, but his > hand-wavy predictions and his hacker "identity politics" > tend not to reflect reality.
He positioned at an extreme end of individualism and finally financed Web 2.0 startups as a consequent reflection of this attitude in the business world. It's an American Dream story, by which an eager and talented man becomes rich by virtue of his craft and a portion of luck but still preserves a liberal middle class standing, opposed to the hybris of the super rich. As someone who is more adherent to an "old European spirit" and fierce (anti-)philosophical traditions I found PG always a refreshingly original American in a positive sense. Nietzsche admired Emerson, so why shouldn't a German programmer admire Paul Graham?
> Nietzsche admired Emerson, so why shouldn't a German > programmer admire Paul Graham?
My comments had nothing to do with admiring Paul Graham's past accomplishments. In fact, I think it's pretty cool that he leveraged CL to make some good money.
My point was that his predictions about Microsoft are not very insightful, and his hacker "identity politics" are more fantasy divisiveness than reality.
Ironically it also shows the limitation of PGs individualism because modern art is mostly a fascinating abomination that ran into borderliner excesses and produced a parade of singularities and experiments. Software development will never ever catch up with this. It would become merely crackpottery.
> Graham might weave an interesting story, but that's about > all as far as I'm concerned.
Creating a modern mythology is more than most of us will ever achieve in their lives even if it turns out to be short lived one. I believe PGs mythology just broke when he released Arc and everyone could clearly see that he is cooking with water like everyone else. No Michelangelo of our age.
The story of the Lisps continues and now Clojure gets much attention. I checked out Clojure once and after a few days of tinkering around with it I came to the point where I asked myself: why do you spend so much time with a language you don't really like? It is easy to convince me to give a new ( or old ) language a try but my stomach tells me that all those Lisp and APL and Joy and Forth derivates will be without a chance.
Most of the world's programmers do not really care about the language - what they really want is to create beautiful things and/or put food on the table. So they'll use whatever comes their way that they perceive as good for maximizing their benefits, whatever those benefits are (financial, quality, security, ego, whatever).
> Most of the world's programmers do not really care about > the language - what they really want is to create > beautiful things and/or put food on the table. So they'll > use whatever comes their way that they perceive as good > for maximizing their benefits, whatever those benefits are > (financial, quality, security, ego, whatever).
Yes, but the point of my post is that we should not care much about "most" programmers. The "few" are the relevant programmers. At one extreme, I would think that a language implementor (say Guido van Rossum) care a lot about his own programming language, to the point that he has to invent it. Creative ideas come from such people, not from the "most" programmers. For instance, I will never invent a language, because I do not care enough, and will never be involved too much with a specific language, because I do not care enough. I will not claim that all people that care too much about a language as worth of respect, but some are and they have my admiration.
> > Most of the world's programmers do not really care > about > > the language - what they really want is to create > > beautiful things and/or put food on the table. So > they'll > > use whatever comes their way that they perceive as good > > for maximizing their benefits, whatever those benefits > are > > (financial, quality, security, ego, whatever). > > Yes, but the point of my post is that we should not > care much about "most" programmers. The "few" are > the relevant programmers. At one extreme, I would think > that a language implementor (say Guido van Rossum) care a > lot about his own programming language, to the point > that he has to invent it. Creative ideas come from such > people, not from the "most" programmers. For instance, > I will never invent a language, because I do not care > enough, and will never be involved too much with a > specific > language, because I do not care enough. I will not claim > that all people that care too much about a language as > worth of respect, but some are and they have my admiration.
I don't think we should care about the few programmers that create programming languages. We should care about the programming languages those few programmers create, because by giving feedback we can make those languages better.
> We should care about > the programming languages those few programmers create, > because by giving feedback we can make those languages > better.
Indeed, and I have a very recent example of that. I was bugging Aziz about the fact that Ikarus does not preserve the frames for tail recursive procedures. He got tired of my ranting and implemented a debug mode for Ikarus such that:
1. tail recursion is preserved; 2. one still gets nice tracebacks.