Having programmed in or around Lisp for nearly 20 years
now, and spectated a lot of Usenet postings and blogs
written by Lisp programmers, I have often wondered if there
was such a thing as a 'Lisp character', in the same way that groups
and nations have a national character.
After some thought, I decided there was definitely a Lisp
profile amongst the people using the language and that
this character was responsible for some of the interesting
history of this language and its peculiar strengths and
weaknesses.
So here is an essay which will no doubt annoy several
and lead to argument. Its called
The Bipolar Lisp Programmer
Any lecturer who serves his time will probably graduate
hundreds, if not thousands of students. Mostly they merge
into a blur; like those paintings of crowd scenes
where the leading faces are clearly picked out and the
rest just have iconic representations. This anonymity
can be embarrassing when some past student hails you
by name and you really haven't got the foggiest idea of who
he or she is. It both nice to be remembered and also
toe curlingly embarrassing to admit that you cannot recognise
who you are talking to.
But some faces you do remember; students who did a project
under you. Also two other categories - the very good and the
very bad. Brilliance and abject failure both stick in the mind.
And one of the oddest things, and really why I'm writing this
short essay, is that there are some students who actually
fall into both camps. Here's another confession. I've always
liked these students and had a strong sympathy for them.
Now abject failure is nothing new in life. Quite often I've
had students who have failed miserably for no other reason
than they had very little ability. This is nothing new.
What is new is that in the UK, we now graduate a lot of
students like that. But, hey, that's a different story and
I'm not going down that route.
No I want to look at the brilliant failures. Because brilliance
amd failure are so often mixed together and our initial
reaction is it shouldn't be. But it happens and it happens
a lot. Why?
Well, to understand that, we have to go back before university.
Lets go back to high school and look at a brilliant failure in the
making. Those of you who have seen the film "Donnie Darko"
will know exactly the kind of student I'm talking about. But
if you haven't, don't worry, because you'll soon recognise the
kind of person I'm talking about. Almost every high school
has one every other year or so.
Generally what we're talking about here is a student of outstanding
brilliance. Someone who is used to acing most of his assignments;
of doing things at the last minute but still doing pretty well at
them. At some level he doesn't take the whole shebang all
that seriously; because, when you get down to it, a lot of the
rules at school are pretty damned stupid. In fact a lot of the things
in our world don't make a lot of sense, if you really look at them
with a fresh mind. And generally our man does have a fresh
mind and a very sharp one.
So we have two aspects to this guy; intellectual
acuteness and not taking things seriously. The not taking things
seriously goes with finding it all pretty easy and a bit dull. But
also it goes with realising that a lot of human activity is really
pretty pointless, and when you realise that and internalise it
then you become cynical and also a bit sad - because you yourself
are caught up in this machine and you have to play along
if you want to get on. Teenagers are really good at spotting this
kind of phony nonsense. Its also the seed of an illness;
a melancholia that can deepen in later life into full blown
depression.
Another feature about this guy is his low threshold of boredom.
He'll pick up on a task and work frantically at it, accomplishing
wonders in a short time and then get bored and drop it before
its properly finished. He'll do nothing but strum his guitar and
lie around in bed for several days after. Thats also part of the
pattern too; periods of frenetic activity followed by periods of
melancholia, withdrawal and inactivity. This is a bipolar
personality.
Alright so far? OK, well lets graduate this guy and see him go
to university. What happens to him then?
Here we have two stories; a light story and a dark one.
The light story is that he's really turned on by what he chooses
and he goes on to graduate summa cum laude, vindicating his
natural brilliance.
But that's not the story I want to look at. I want to look at the
dark story. The one where brilliance and failure get mixed
together.
This is where this student begins by recognising
that university, like school, is also fairly phony in many ways.
What saves university is generally the beauty of the subject
as built by great minds. But if you just look at the professors
and don't see past their narrow obsession with their pointless
and largely unread (and unreadable) publications to the
great invisible university of the mind, you will probably conclude
its as phony as anything else. Which it is.
But lets stick to this guy's story.
Now the big difference between school and university for the
fresher is FREEDOM. Freedom from mom and dad, freedom
to do your own thing. Freedom in fact to screw up in a major
way. So our hero begins a new life and finds he can do all
he wants. Get drunk, stumble in at 3.00 AM. So he goes to
town and he relies on his natural brilliance to carry him through
because, hey, it worked at school. And it does work for
a time.
But brilliance is not enough. You need application too, because
the material is harder at university. So pretty soon our man
is getting B+, then Bs and then Cs for his assignments. He
experiences alternating feelings of failure cutting through
his usual self assurance. He can still stay up to 5.00AM and
hand in his assignment before the 9.00AM deadline, but what
he hands in is not so great. Or perhaps he doesn't get into
beer, but into some mental digression from his official studies
that takes him too far away from the main syllabus.
This sort of student used to pass my way every now and then,
Riding on the bottom of the class. One of them had Bored>
as his UNIX prompt. If I spotted one I used to connect well
with them. (In fact I rescued one and now he's a professor and
miserable because he's surrounded by phonies - but hey, what
can you do?). Generally he would come alive in the final year
project when he could do his own thing and hand in something
really really good. Something that would show (shock, horror)
originality. And a lot of professors wouldn't give it a fair mark
for that very reason - and because the student was known to be
scraping along the bottom.
Often this kind of student never makes it to the end. He flunks
himself by dropping out. He ends on a soda fountain or doing
yard work, but all the time reading and studying because a good mind
is always hungry.
Now one of the things about Lisp, and I've seen it before, is
that Lisp is a real magnet for this kind of mind. Once you
understand that, and see that it is this kind of mind that has
contributed a lot to the culture of Lisp, you begin to see why
Lisp is, like many of its proponents, a brilliant failure. It shares
the peculiar strengths and weaknesses of the brilliant bipolar
mind (BBM).
Why is this? Well, its partly to do with vision. The 'vision thing'
as George Bush Snr. once described it, is really one of the
strengths of the BBM. He can see far; further than in fact his
strength allows him to travel. He conceives of brilliant ambitious
projects requiring great resources, and he embarks on them
only to run out of steam. Its not that he's lazy; its just that his
resources are insufficient.
And this is where Lisp comes in. Because Lisp, as a tool, is to
the mind as the lever is to the arm. It amplifies your power and
enables you to embark on projects beyond the scope of lesser
languages like C. Writing in C is like building a mosaic out of
lentils using a tweezer and glue. Lisp is like wielding an air
gun with power and precision. It opens out whole kingdoms
shut to other programmers.
So BBMs love Lisp. And the stunning originality of Lisp is
reflective of the creativity of the BBM; so we have a long list
of ideas that originated with Lispers - garbage collection,
list handling, personal computing, windowing and areas in
which Lisp people were amongst the earliest pioneers. So
we would think, off the cuff, that Lisp should be well established,
the premiere programming language because hey - its great and
we were the first guys to do this stuff.
But it isn't and the reasons why not are not in the language
itself, but in the community itself, which contains not
just the strengths but also the weaknesses of the BBM.
One of these is the inability to finish things off properly. The
phrase 'throw-away design' is absolutely made for the BBM
and it comes from the Lisp community. Lisp allows you to
just chuck things off so easily, and its easy to take this for
granted. I saw this 10 years ago when looking for a GUI to
my Lisp (Garnet had just gone West then). No problem, there
were 9 different offerings. The trouble was that none of
the 9 were properly documented and none were bug free.
Basically each person had implemented his own solution and
it worked for him so that was fine. This is a BBM attitude;
it works for me and I understand it. It also the product of not
needing or wanting anybody else's help to do something.
Now in contrast, the C/C++ approach is quite different. Its
so damn hard to do anything with tweezers and glue that
anything significant you do will be a real achievement. You
want to document it. Also you're liable to need help in any C
project of significant size; so you're liable to be social and
work with others. You need to, just to get somewhere.
And all that, from the point of view of an employer, is attractive.
Ten people who communicate, document things properly
and work together are preferable to one BBM hacking Lisp
who can only be replaced by another BBM (if you can find one)
in the not unlikely event that he will, at some time, go down
without being rebootable.
Now the other aspect of the BBM that I remarked on is his
sensitivity to artifice. To put it in plain American, he knows
bullshit
when he smells it. Most of us do. However the BBM has
much lower tolerance of it than others. He can often see the
absurdity of the way things are, and has the intelligence to
see how they should be. And he is, unlike the rank and file,
unprepared to compromise. And this leads to many things.
The Lisp machines were a product of this kind of vision.
It was, as Gabriel once said, the Right Thing. Except of
course it wasn't. Here the refusal to compromise with the
market, and to use the platforms that the C bashers were using
proved in the long run to be a fatal mistake.
And this brings me to the last feature of the BBM. The flip
side of all that energy and intelligence - the sadness, melancholia
and loss of self during a down phase. If you read many posts
discussing Lisp (including one here called Common Lisp Sucks)
you see it writ large. Veteran programmers of many years with
obvious ability and talent go down with a fit of the blues. The
intelligence is directed inwards in mournful contemplation of the
inadequacies of their favourite programming language. The problems
are soluble (Qi is a proof of that for God's sake), but when you're
down everything seems insoluble. Lisp is doomed and we're all
going to hell.
Actually one paper that exemplifies that more than any other
is the classic Lisp: Good News, Bad News, How to Win Big.
If you read that paper, you feel and see nature
of the BBM. Its unique because Gabriel acually displays both
aspects at the same time. The positive side, the intellectual
pride and belief in Lisp is there. But also in there is the depressive
'but its all going to go to hell' aspect is there too. This is
contained
in the message that Worse is Better.
So what's the problem with Lisp? Basically, there is no problem with
Lisp, because Lisp is, like life, what you make of it.
Mark