Computerworld is undertaking a series of investigations into the most widely-used programming languages. Previously we have spoken to Alfred v. Aho of AWK fame, S. Tucker Taft on the Ada 1995 and 2005 revisions, Microsoft about its server-side script engine ASP, Chet Ramey about his experience maintaining Bash, Bjarne Stroustrup of C++ fame, and to Charles H. Moore about the design and development of Forth, and Stephen C. Johnson on YACC.
In this interview, Computerworld ventures down a less serious path and chats to Don Woods about the development and uses of INTERCAL.
Woods currently works at Google, following the company's recent acquisition of Postini, and he is best known for co-writing the original Adventure game with Will Crowther. He also co-authored The Hackers Dictionary. Here we chat to him about all things spoof and the virtues of tonsils as removable organs.
How did you and James Lyon get the urge to create such an involved spoof language?
I'm not entirely sure. As indicated in the preface to the original reference manual, we came up with the idea (and most of the initial design) in the wee hours of the morning. We had just finished our -- let's see, it would have been our freshman year -- final exams and were more than a little giddy!
My recollection, though fuzzy after all these years, is that we and another friend had spent an earlier late-night bull session coming up with alternative names for spoken punctuation (spot, spark, spike, splat, wow, what, etc.) and that may have been a jumping off point in some way.
Why did you choose to spoof FORTRAN and COBOL in particular?
We didn't. (Even though Wikipedia seems to claim we did.) We spoofed the languages of the time, or at least the ones we were familiar with. (I've never actually learned COBOL myself, though I believe Jim Lyon knew the language.) The manual even lists the languages we were comparing ourselves to. And then we spoofed the reference manuals of the time, especially IBM documentation, again since that's what we were most familiar with. Admittedly, the language resembles FORTRAN more than it does, say, SNOBOL or APL, but then so do most computer languages.
What prompted the name Compiler Language With No Pronounceable Acronym? And how on earth did you get INTERCAL out of this?
I think we actually started with the name INTERCAL. I'm not sure where it came from; probably it just sounded good. (Sort of like FORTRAN is short for "Formula Translation", INTERCAL sounds like it should be short for something like "Interblah Calculation"). I don't remember any more specific etymology. Then when we wanted to come up with an acronym, one of us thought of the paradoxical "Compiler Language With No Pronounceable Acronym."
How long did it take to develop INTERCAL? Did you come across any unforeseen problems during the initial development period?
That depends on what you mean by "develop". We designed the language without too much trouble. Writing the manual took a while, especially for things like the circuit diagrams we included as nonsensical illustrations. The compiler itself actually wasn't too much trouble, given that we weren't at all concerned with optimising the performance of either the compiler or the compiled code.
Our compiler converted the INTERCAL program to SNOBOL (actually SPITBOL, which is a compilable version of SNOBOL) and represented INTERCAL datatypes using character strings in which all the characters were "0"s and "1"s.