a story lives forever
Sign in
Form submission failed!

Stay signed in

Recover your password?
Form submission failed!

Web of Stories Ltd would like to keep you informed about our products and services.

Please tick here if you would like us to keep you informed about our products and services.

I have read and accepted the Terms & Conditions.

Please note: Your email and any private information provided at registration will not be passed on to other individuals or organisations without your specific approval.

Video URL

You must be registered to use this feature. Sign in or register.


Wanting to be a teacher and why I chose to go to Caltech


Adding more features to RUNCIBLE
Donald Knuth Scientist
Comments (0) Please sign in or register to add comments

In those days, computing was so different from… from what it is now.  Not only was the memory tiny, only… only 10K, and the speed was slow, but also we… the way we wrote programs, well maybe as a result of that, the way we wrote programs was something I would never do today, because in order to pack it into this small memory, we had to do… resort to some… to trickery that was almost impossible to understand, and therefore highly likely to cause errors.  But one of the things we learned as, early in… in trying to write software, is that the users of your software always suggest new features, and they're… they’re never satisfied. You give them… you give them 10 things, and they'll want 10 more.  And so we kept adding features and features. That's called creeping featurism now. But we had only this tiny machine, so how were we going to pack more and more features, when there's no space for it? And the answer is, we use more and more tricks.
So in this compiler RUNCIBLE, there were four versions of the compiler. You could… you could ask it to… to produce computer instructions for a machine that did… that had the so-called floating point attachment, or… or maybe your… your computer didn't have the floating point attachment, so… so you either had floating point or not. If you didn't have the attachment, then you would have to go through slower routines that would simulate, and pretend that the attachment's there. Then you could also ask it to compile directly into machine language, or you could ask it to compile into the symbolic assembler language. The symbolic assembler would be able to produce slightly better… slightly better final product, but it would take longer, because after you got the symbolic, you'd have to take those cards and run them through another program before you could… before you could run them. So we had, so… so either floating point or not, either symbolic or not, that gave us four… four different possibilities. So we wrote it… we wrote the program in such a way that there was a floating point set of instructions, and a non-floating point set of instructions, each of these we had exactly, like let's say, 731 positions of memory for, so you'd swap out those 731 for another, and… and similarly for the symbolic and non-symbolic, you could swap out two parts of the program; each of those parts of the program had to be the… exactly the same size, in order to pack it all in. Somebody asks for a new feature, or we want to extend the language and do a little more, then we think of a way to… to do it for the floating point, but then we… then we have to think of a way to shorten the non floating point part of our program, so… so we kept on revising this program until it was really inscrutable. I mean every… every… all kinds of tricks were… were used for that. When I'd have… when I’d have a… a constant that was used in one routine, I would… I would also make sure that it… it could be used in some other routine, for some other, completely different purpose. Almost everything in the program had many uses, and therefore if… a few months would go by, and we'd forget about these tricks, and we would try to change something else, and something would go wrong. So it was a very shaky, bad way to do software, but it was the way that… that… the only way we knew how to do at the time, and it was… and people couldn't believe that we were able to do with such a small computer, to do as many things as… as it did.

Born in 1938, American computing pioneer Donald Knuth is known for his greatly influential multi-volume work, 'The Art of Computer Programming', his novel 'Surreal Numbers', his invention of TeX and METAFONT electronic publishing tools and his quirky sense of humor.

Listeners: Dikran Karagueuzian

Trained as a journalist, Dikran Karagueuzian is the director of CSLI Publications, publisher of seven books by Donald Knuth. He has known Knuth since the late seventies when Knuth was developing TeX and Metafont, the typesetting and type designing computer programs, respectively.

Tags: creeping featurism, RUNCIBLE, compiler, floating point attachment, symbolic assembler language, machine language

Duration: 3 minutes, 48 seconds

Date story recorded: April 2006

Date story went live: 24 January 2008