© Dr Mark
Tarver, 2007
Ars Programma and
Lambda Associates
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's 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. Let's 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.
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. That's 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. It's 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,
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 it is 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 is 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.
It's 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 in comp.lang.lisp
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 actually 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
message in all of this? Basically, that there are
two problems. The problem with the Lisp mindset
and the problem with Lisp. The problem of the
Lisp mindset is the problem of the mindset
characteristic of the BBM.
And the problem
with Lisp? The answer is tailor made for
the minds who program it. It is the koan of Lisp.
The answer is
that there is no problem with Lisp, because Lisp
is, like life, what you make of it.
|