INTERCAL
INTERCAL ( Compiler Language With No Pronouncable acronym ) is an esoteric programming language that was developed on May 26, 1972 by Donald R. Woods and James M. Lyon. Only in 1990 a first UNIX implementation written by Eric S. Raymond has been programmed, today INTERCAL is also available on DOS.
INTERCAL was developed with the goal difficult to make programming and to make the resulting programs effectively unreadable. Insofar INTERCAL resembles none of the known programming languages, has very few language constructs and is difficult to learn. Especially famous is the " Come From " command, which is inversely similar to the Goto command of many languages.
INTERCAL is maintained by a small fan base and can serve the interested programmer to amuse or puzzle solution.
Example ROT13 program
(10 ) PLEASE DO NOT GIVE UP ( 1) DO .2 < - '? .1 $ # 64' ~ ' # 0 $ # 65535 ' DO .2 < - '? .2 ~ .2 ' ' & "' .1 ~ .2 '~' " $ # 32768 "~" # 0 $ # 65535 '" " $ " .2 ~ .2" ' ~ # 1 DO .3 < - '? # $ 91 .1 ' ~ ' # 0 $ # 65535 ' DO .3 < - '? .3 .3 ~ ' ' & ' '# 91 ~ .3 ' ~ ' " $ # 32768 " ~ " # 0 $ # 65535 '" "$" ~ .3 .3 " ' ~ # 1 DO ( 11) NEXT DO ( 2) NEXT DO ( 12) NEXT (11 ) DO ( 13) NEXT PLEASE FORGET # 1 DO ( 12) NEXT (13 ) DO ( 14) NEXT PLEASE FORGET # 2 DO ( 12) NEXT (14 ) DO STASH .1 DO .1 <- .3 DO ( 1000) NEXT DO .1 <- .3 DO .2 < - # 1 PLEASE DO ( 1000) NEXT DO RETRIEVE .1 PLEASE RESUME .3 (12 ) PLEASE FORGET # 1 DO .2 < - '? .1 $ # 96' ~ ' # 0 $ # 65535 ' DO .2 < - '? .2 ~ .2 ' ' & "' .1 ~ .2 '~' " $ # 32768 "~" # 0 $ # 65535 '" " $ " .2 ~ .2" ' ~ # 1 DO .3 < - '? # $ 123 .1 ' ~ ' # 0 $ # 65535 ' DO .3 < - '? .3 .3 ~ ' ' & ' '# 123 ~ .3 ' ~ ' " $ # 32768 " ~ " # 0 $ # 65535 '" "$" ~ .3 .3 " ' ~ # 1 PLEASE DO ( 15) NEXT PLEASE DO ( 3) NEXT DO ( 16) NEXT (15 ) DO ( 17) NEXT PLEASE FORGET # 1 DO ( 16) NEXT (17 ) DO ( 18) NEXT PLEASE FORGET # 2 DO ( 16) NEXT (18 ) PLEASE STASH .1 DO .1 <- .3 DO ( 1000) NEXT DO .1 <- .3 DO .2 < - # 1 DO ( 1000) NEXT PLEASE RETRIEVE .1 PLEASE RESUME .3 (16 ) PLEASE FORGET # 1 DO RESUME # 1 ( 2) DO .2 < - # 65 DO ( 1010) NEXT PLEASE .1 <- .3 PLEASE .2 < - # 13 DO ( 1000) NEXT DO STASH .3 DO .1 <- .3 DO .2 < - # 26 DO ( 1040 ) NEXT DO .1 <- .3 DO ( 1030) NEXT DO .2 <- .3 DO RETRIEVE .3 DO .1 <- .3 DO ( 1010) NEXT DO .1 <- .3 DO .2 < - # 65 DO ( 1000) NEXT DO .1 <- .3 DO RESUME # 1 ( 3) DO .2 < - # 97 DO ( 1010) NEXT DO .1 <- .3 DO .2 < - # 13 DO ( 1000) NEXT DO STASH .3 DO .1 <- .3 DO .2 < - # 26 DO ( 1040 ) NEXT DO .1 <- .3 DO ( 1030) NEXT DO .2 <- .3 DO RETRIEVE .3 DO .1 <- .3 DO ( 1010) NEXT DO .1 <- .3 DO .2 < - # 97 DO ( 1000) NEXT DO .1 <- .3 DO RESUME # 1 DO COME FROM ( 10) DO .4 <- # 0 DO .5 <- # 0 DO STASH .4 .5 DO, 1 < - # 1 DO COME FROM ( 33) DO WRITE IN, 1 DO .1 < - 1 SUB # 1 DO ( 31) NEXT PLEASE DO .6 < - # 1 PLEASE DO ( 34) NEXT (32 ) PLEASE RESUME '? .1 $ # 256' ~ '# $ 256 # 256' (31 ) DO ( 32) NEXT DO NOT FORGET # 1 DO .6 <- # 0 PLEASE DO ( 34) NEXT (33 ) DO NOT GIVE UP (34 ) DO .6 <- "? 6 ' $ # 1" ~ # 3 DO ( 40) NEXT DO GIVE UP (40 ) DO ( 41) NEXT PLEASE FORGET # 1 DO ( 42) NEXT (41 ) DO RESUME .6 (42 ) DO NOT FORGET # 1 DO RETRIEVE .4 DO .2 <- .4 DO ( 1000) NEXT DO .4 <- .3 ~ # 255 DO .3 <- .4 DO STASH .4 DO .1 <- .3 DO ( 1) NEXT DO .3 < - 1 ~ # 15 '$ 1 ~ # 240! ' DO .3 < - 3 ~ # 15 ' $ 3 ~ # 240! ' DO .2 < - # 3 ~ 15 ' $ 3 ~ # 240! ' DO .1 <- .5 DO ( 1010) NEXT DO .5 <- .2 DO, 1 SUB 1 # <- .3 PLEASE READ OUT, 1 PLEASE RESUME # 1 literature
- Oliver Lau, rocket science - A Plea for esoteric programming languages, c't 22/ 07, pp. 192-199, as well as extra- c't 02/ 09, pp. 40-45.