The 1972 INTERCAL Compiler Revealed
Have you ever heard of INTERCAL? If you haven’t, don’t feel bad. This relatively obscure language dates back to 1972 with the goal of being difficult to read and write. …read more


Have you ever heard of INTERCAL? If you haven’t, don’t feel bad. This relatively obscure language dates back to 1972 with the goal of being difficult to read and write. It is the intellectual parent of systems like brainf**k and other bad languages. Now, you can read the INTERCAL-72 source code thanks to a found printout. It will help if you can read SPITBOL, another obscure language that is a compiled version of SNOBOL (which is like an old-fashioned non-Unix awk program).
How strange it INTERCAL? Well, one of the statements is PLEASE. If you don’t use it enough, you’ll offend the interpreter, who will then ignore your program. But if you use it too much, then you are a suck up and, therefore, your program will be ignored again. If you think GOTO is a bad idea, you’ll just hate COME FROM, although that was from a later version of INTERCAL.
Here’s the example program from the user’s manual:
1 DO (5) NEXT 2 (5) DO FORGET #1 3 PLEASE WRITE IN :1 4 DO .1 <- ’V-":1~’#32768c/#0’"c/#1’~#3 5 DO (1) NEXT 6 DO :1 <- "’V-":1~’#65535c/#0’"c/#65535’ 7 ~’#0c/#65535’"c/"’V-":1~’#0c/#65535’" c 8 /#65535’~’#0c/#65535’" 9 DO :2 <- #1 10 PLEASE DO (4) NEXT 11 (4) DO FORGET #1 12 DO .1 <- "V-’:1~:2’c/#1"~#3 13 DO :1 <- "’V-":1~’#65535c/#0’"c/":2~’#65535 1 c 14 /#0’"’~’#0c/#65535’"c/"’V-":1~’#0 c 15 /#65535’"c/":2~’#0c/#65535’"’~’#0c/#65535’" 16 DO (1) NEXT 17 DO :2 <- ":2~’#0c/#65535’" c 18 /"’":2~’#65535c/#0’"c/#0’~’#32767c/#1’" 19 DO (4) NEXT 20 (2) DO RESUME .1 21 (1) PLEASE DO (2) NEXT 22 PLEASE FORGET #1 23 DO READ OUT :1 24 PLEASE DO .1 <- ’V-"’:1~:1’~#1"c/#1’~#3 25 DO (3) NEXT 26 PLEASE DO (5) NEXT 27 (3) DO (2) NEXT 28 PLEASE GIVE UP
Interestingly, you can get SPITBOL for modern systems, so it is entirely possible to run this version of INTERCAL on a modern machine. Why? That’s for you to answer.
The heart of it all is on GitHub. You’ll also find links to the manual should you attempt to use it. We’ve looked at INTERCAL and other similar languages before. However, you are free to write unreadable code in a more conventional language.