Myths and legends

Lisp is slow

We all know this. We all know the silly benchmarks which show that the null program in Lisp is slower than the null program in Perl or Python. We all know how important null programs are. Here's some real data that demonstrates how bad Lisp is. This is from a Windows 2000 PC with something like a 650MHz Pentium and enough memory, using cygwin. perl and python are what you expect, weld-upcall is a dumped Lisp image.

KINGSTON$ time perl < /dev/null

real    0m0.029s
user    0m0.050s
sys     0m0.000s
KINGSTON$ time perl < /dev/null

real    0m0.029s
user    0m0.020s
sys     0m0.030s
KINGSTON$ time perl < /dev/null

real    0m0.028s
user    0m0.020s
sys     0m0.030s
KINGSTON$ python < /dev/null
KINGSTON$ time python < /dev/null

real    0m0.115s
user    0m0.050s
sys     0m0.060s
KINGSTON$ time python < /dev/null

real    0m0.086s
user    0m0.040s
sys     0m0.060s
KINGSTON$ time python < /dev/null

real    0m0.115s
user    0m0.040s
sys     0m0.060s
KINGSTON$ ./weld-upcall D:/tmp/upcall.ior
KINGSTON$ time ./weld-upcall D:/tmp/upcall.ior

real    0m0.137s
user    0m0.010s
sys     0m0.010s
KINGSTON$ time ./weld-upcall D:/tmp/upcall.ior

real    0m0.136s
user    0m0.030s
sys     0m0.000s
KINGSTON$ time ./weld-upcall D:/tmp/upcall.ior

real    0m0.138s
user    0m0.020s
sys     0m0.010s
    

So, after the first run (to give the filesystem a chance to cache the binaries), it's easy to see that Lisp is doing pretty badly.

Language Average null program time
Perl 0.029s
Python 0.105s
Lisp 0.137s

Except I made a mistake. That's not the null Lisp program. It's actually a CORBA client making a call across the network to a CORBA server, also in Lisp. In that 0.137s it's initialized the ORB, read the IOR, made a call over the network, and returned.

The Lisp elite

I'm not a member of the elite. There is no elite. Ignore the man behind the curtain.

Remembering getf

I bought my copy of CLtL second hand during a trip to the east coast of the US in the late 80s. I found it in a curious little bookshop whose owner was, perhaps, a little more strange and unpleasant than the owners of second-hand bookshops usually are. I was only learning Lisp at that time, and perhaps did not realise the significance of what I'd found.

The copy was battered and heavily annotated in various hands. The most important thing I did not discover until my return to the UK – to Cambridge, coincidentally. Between two pages were a couple of folded sheets of fan-fold paper, with part of a listing. It was DEC assembler, although some of the mnemonics had rather odd names, and was, perhaps, part of the listing of a version of TECO.

There was writing on the reverse, which seemed to be some kind of entry in a journal. I'll give it here as best I remember it. I feel it may bear on the getf issue.

Cambridge, 5/21/77. I saw them again last night, in the lab. Three of them, perhaps four. The same as before? They are not [several words heavily scored through]. One – the leader? – larger than the others, ten[elided] indescribable. Same smell. Hard to make out what they were saying, voices somehow thick. Talking about something called "the chetef device"? CH like loch. What is it they are planning? Something about sowing confusion in the minds of the weakest to open a door – what kind of door?

5/22/77. They were there again. More clear this time. Number still seems to vary somehow: don't understand, perhaps [elided]? The leader was instructing the others. They seem to plan a new language (new dialect?), which will somehow contain or enable this "chetef device". And this device will open something. But what? Discussion of "vessels" – ships? Mention of LISP: is it a new dialect of LISP they are planning?

5/23/77. Much clearer. Perhaps too clear. They ARE USING US TO CREATE A DOOR THROUGH WHICH [elided]. The language contains subtle inconsistencies which will destroy the minds of those they call "pure ones" or "weak ones" and they will occupy the husk remaining, before [elided]. Terrible fate for [elided]. S[unreadable]eme, surely this can not be part of their plan?

[The rest of the document is mostly unreadable: some fragments I could decipher.]

THEY KNOW MY NAME! [illegible] one of the vessels. How can I escape?

[illegible] not "chetef", "getf" [elided] can this mean?

[Several lines crossed out.]

They are coming. I can see them. Even with my eyes closed I can see them. I must prevent this, I will not be [illegible]. No. NO. They will not [illegible]. Resist. My name. My name is [illegible] My name ... oh, what does it matter who I was?

[Some partly-formed letters followed, and a curious, greenish stain.]

Unfortunately I no longer have the book: I remember it had several pages torn out, and some of the annotations were, frankly, disturbing. I kept the paper for longer, but the nightmares, even during the day, became too much, and I burnt it.

[TFEB]