The A-Z of Programming Languages: INTERCAL

Computerworld's investigation into the history of programming languages takes a humourous turn as we examine INTERCAL

Would you do anything differently if you had the chance to develop INTERCAL again now?

I'm sure there are fine points I'd change, and I'd include some of the more creative features that others have proposed (and sometimes implemented) over the years. Also, some of the jokes and/or language features are a bit dated now, such as the XOR operator being a "V" overstruck with a "-", and our mention of what this turns out to be if the characters are overstruck on a punched card.

In your opinion, has INTERCAL contributed anything useful at all to computer development?

Does entertainment count? :-) I suppose there are also second-order effects such as giving some people (including Lyon and myself) a chance to learn about compilers and the like.

Perhaps more important, when you have to solve problems without using any of the usual tools, you can sometimes learn new things. In 2003 I received a note from Knuth saying he had "just spent a week writing an INTERCAL program" that he was posting to his "news" web page, and while working on it he'd noticed that "the division routine of the standard INTERCAL library has a really cool hack that I hadn't seen before". He wanted to know if I could remember which of Lyon or myself had come up with it so he could give proper credit when he mentioned the trick in volume 4 of The Art of Computer Programming. (I couldn't recall.)

Where do you envisage INTERCAL's future lying?

I've no idea, seeing as how I didn't envisage it getting this far!

Has anyone ever accidentally taken INTERCAL to be a serious programming language?

Heavens, I hope not! (Though I was concerned YOU had done so when you first contacted me!)

Have you been impressed by any other programming languages, such as Brain****?

I've looked at a few other such languages but never spent a lot of time on them. Frankly, the ones that impress me more are the non-spoof languages that have amazingly powerful features (usually within limited domains), such as APL's multidimensional operations or SNOBOL's pattern matching. (I'd be curious to go back and look at SNOBOL again now that there are other languages with powerful regular-expression operators.)

The closest I've come to being impressed by another "limited" programming language was a hypothetical computer described to me long ago by a co-worker who was a part-time professor at Northeastern University. The computer's memory was 65536 *bits*, individually addressable using 16-bit addresses. The computer had only one type of instruction; it consisted of 48 consecutive bits starting anywhere in memory. The instruction was interpreted as three 16-bit addresses, X Y Z, and the operation was "copy the bit from location X to location Y, then to execute the instruction starting at location Z". The students were first tasked with constructing a conditional branch (if bit A is set go to B, else go to C). I think the next assignment was to build a 16-bit adder. Now THAT'S minimalist!

Where do you see computer programming languages heading in the near future?

An interesting question, but frankly it's not my field so I haven't spent any time pondering the matter. I do expect we'll continue to see a growing dichotomy between general programming languages (Perl, Python, C++, Java, whatever) and "application-level" languages (suites for building Web-based tools and such). It seems that we currently have people who use the general programming languages, but don't have any understanding of what's going on down at the microcode or hardware levels.

Do you have any advice for up-and-coming spoof programmers?

Try to find a niche that isn't already filled. Hm, you know, SPOOF would be a fine name for a language. It's even got OO in the name!

And finally, as already discussed with Bjarne Stroustrup, do you think that facial hair is related to the success of programming languages?

I hadn't seen that theory before, but it's quite amusing.

(See here)

I don't think I had any facial hair when we designed INTERCAL, but I've been acquiring more over the years. Maybe that's why INTERCAL's still thriving?

Is there anything else you'd like to add?

In some sense INTERCAL is the ultimate language for hackers, where I use "hacker" in the older, non-criminal sense, meaning someone who enjoys figuring out how to accomplish something despite the limitations of the available tools. (One of the definitions in The Hacker's Dictionary is, "One who builds furniture using an axe.") Much of the fun of INTERCAL comes from figuring out how it can be used to do something that would be trivial in other languages. More fun is had by extending the language with weird new features and then figuring out what can be done by creative use of those features.

Join the newsletter!


Sign up to gain exclusive access to email subscriptions, event invitations, competitions, giveaways, and much more.

Membership is free, and your security and privacy remain protected. View our privacy policy before signing up.

Error: Please check your email address.

Tags a-z of programming languages

More about APLetworkGoogleIBM AustraliaMicrosoftPostiniWikipedia

Show Comments