Penguin
Note: You are viewing an old revision of this page. View the current version.
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!
-- EricRaymond
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."
-- Alexander Garrett, about a paper he wrote for his Spring 1997 Programming Languages: Theory and Design class

INTERCAL was originally developed in 1972 and lives on through the C-INTERCAL compiler. More information can be found at the INTERCAL Resources Page.

Rather than trying to describe the language, it's probably best to show an example. The code below was written in Tri-INTERCAL: it merely counts to 10. You may also want to see a sample implementation of ROT13 in INTERCAL. Then again, you may not. ("4 pages of completely indecipherable code", according to its author.)

DO ,1 <- #16 DO :2 <- #6490$#55022 PLEASE DO (44) NEXT DO :2 <- #5631$#54733 PLEASE DO (44) NEXT DO :2 <- #14637$#40039 PLEASE DO (44) NEXT DO :2 <- #58550$#53112 PLEASE DO (44) NEXT DO .1 <- #1 PLEASE DO (99) NEXT DO GIVE UP

(44) DO REINSTATE COMING FROM (19) DO COME FROM (68)

DO ABSTAIN FROM (19)

(31) DO COME FROM (34)

DO ABSTAIN FROM (31)

(88) DO COME FROM (65)

PLEASE ABSTAIN FROM (88) DO COME FROM (44) PLEASE DO (123) NEXT DO .3 <- ':2"#4$#13"' DO :2 <- ':2"#29520$#29511"' DO ,1 SUB .1 <- .3

(65) DON'T GIVE UP (34) PLEASE DON'T GIVE UP (68) DO NOTE THAT THIS FUNNY CODE ACTUALLY WORKS

PLEASE RESUME #1

(99) DO COME FROM (69)

DO READ OUT ,1 DO ,1 SUB #1 <- #180 DO READ OUT .1 DO .2 <- "?.1$#10""#0$#29524" PLEASE DO (15) NEXT

(69) PLEASE DO (123) NEXT (42) DO RESUME .9 (123) PLEASE .8 <- #1

DO COME FROM (81) DO .9 <- '?"V!1.8'$#1"#1'#1 DO .1 <- "^.1$.8""#0$#29524" PLEASE DO (42) NEXT

(81) DO .8 <- !8$#0'"#9841$#1" (15) PLEASE RESUME '?"!2.2'#2"$#1'#1

lib/BlockParser.php:505: Notice: Undefined property: _tight_top