|The INTERCAL Resources Page|
Beware! If you aren't a hard-core hacker, you'd best surf right back where you came from now. Nothing but twisted technical yuks and an inexorable descent into brain-sucking obsession awaits beyond this point. You have been warned.
So, you think you've seen it all, eh?
OK. You've coded in C. You've hacked in LISP. Fortran and BASIC hold no terrors for you. You write Emacs modes for fun. You eat assemblers for breakfast. You're fluent in half a dozen languages nobody but a handful of übergeeks have ever heard of. You grok TECO. Possibly you even know <shudder> COBOL.
Maybe you're ready for the ultimate challenge...INTERCAL.
INTERCAL. The language designed to be Turing-complete but as fundamentally unlike any existing language as possible. Expressions that look like line noise. Control constructs that will make you gasp, make you laugh, and possibly make you hurl. Data structures? We don't need no steenking data structures!
INTERCAL. Designed very early one May morning in 1972 by two hackers who are still trying to live it down. Initially implemented on an IBM 360 running batch SPITBOL. Described by a manual that circulated for years after the short life of the first implementation, reducing strong men to tears (of laughter). Revived in 1990 by the C-INTERCAL compiler, and now the center of an international community of technomasochists.
INTERCAL. Now you, too, can be a part of the madness.
(Read what Ted Nelson had to say...)
You can browse the Revamped INTERCAL Manual, which describes C-INTERCAL's behavior and options since version 0.18 in detail. You can also download the Revised INTERCAL Manual, which described 0.18 in detail and is a light revision of the infamous original, including the Circuitous Diagram and other illustrations.
For those potentially interested in hacking C-INTERCAL's code, there's a description of the compiler's internals.
The INTERCAL codebase is available for git cloning at: git://gitorious.org/intercal/intercal.git
You should find the latest distribution tarball here.
Building INTERCAL requires either bison or yacc and flex or lex. The code builds and runs nicely under any ANSI/POSIX platform, including Linux and the free BSD versions. Past versions of this code have run under DOS/Windows, though whether it will still do so is unknown.
Move over, Ruby on Rails! Step aside, Cobol on Cogs! Finally the web development framework you've always wanted: INTERCAL on Interstates.
Jonathan Ferro has written an Intercal calculator mode for Emacs.
You can find out more about Kevin Stock's implementation of INTERCAL functions for PERL.
Alexander Garrett has written a Java class implementing the INTERCAL math library.
Alexander Garrett wrote a paper on INTERCAL for his Spring 1997 Programming Languages: Theory and Design class. Alexander writes:
The obvious choice was INTERCAL (I'm still quite surprised that I'm the only one who picked it — most people did Java??). Anyway, it was not favourably received...when [the professor] handed it back, he said, "Ah. I see you're someone with a sense of humour. Unfortunately for you, I'm not."
We have corrected two typos (misspellings of "Malvernite" and "compiler") in this copy.
The co-maintainer of INTERCAL, Alex Smith, has an alternate INTERCAL HOME page.
Brian Raiter, who edited the revised version of the INTERCAL manual available in HTML above, maintains a good INTERCAL page.
Jacob Mandelson also has an INTERCAL Page.
(The code from all of these home pages has been folded into the INTERCAL distribution.)
There is an alt.lang.intercal Usenet newsgroup.
Here's a transcript of a 1992 article by Charles Stross. (Yes, the same Charles Stross as the incandescently talented SF author, but this was a decade before he hit the big time.)
In 2002, Jean Forget wrote Why INTERCAL is better than Perl.
In 2008, ComputerWorld inexplicably decided to interview Don Woods on INTERCAL. The results are both funny and informative.
In 2010, ESR recovered most of the history of INTERCAL. The tale is told in Risk, Verification, and the INTERCAL Reconstruction Massacree. If you are in possession of shars or release tarballs for 0.4 or 0.6-0.11 or 0.14, please ship copies to the maintainers so we can fill in the gaps.
There are pointers to more in the Wikipedia article Esoteric programming language.
If INTERCAL interests you, you may want to check out the Jargon File and the Retrocomputing Museum. Both these pages and this one are maintained by Eric S. Raymond, who also maintains a large collection of open-source software you may find stimulating.