- Intercal
-
INTERCAL ist eine esoterische Programmiersprache, die am 26. Mai 1972 von Donald R. Woods und James M. Lyon entwickelt wurde. Erst 1990 wurde eine erste UNIX-Implementierung von Eric S. Raymond programmiert, heute ist INTERCAL auch auf DOS verfügbar.
INTERCAL wurde mit dem Ziel entwickelt, das Programmieren schwierig zu gestalten und die entstehenden Programme effektiv unlesbar zu machen. Insofern ähnelt INTERCAL keiner der bekannten Programmiersprachen, hat sehr wenige Sprachkonstrukte und ist schwer zu erlernen. Besonders berühmt ist der „ComeFrom“ Befehl, der invers an den Goto-Befehl vieler Programmiersprachen angelehnt ist.
INTERCAL wird von einer kleinen Fan-Gemeinde gepflegt und kann dem interessierten Programmierer zur Erheiterung oder Rätsellösung dienen.
Beispiel ROT13-Programm
(10) PLEASE DON'T GIVE UP (1) DO .2 <- '?.1$#64'~'#0$#65535' DO .2 <- '&"'.1~.2'~'"?'?.2~.2'$#32768"~"#0$#65535“'"$".2~.2“'~#1 DO .3 <- '?#91$.1'~'#0$#65535' DO .3 <- '&"'#91~.3'~'"?'?.3~.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 <- '&"'.1~.2'~'"?'?.2~.2'$#32768"~"#0$#65535“'"$".2~.2“'~#1 DO .3 <- '?#123$.1'~'#0$#65535' DO .3 <- '&"'#123~.3'~'"?'?.3~.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 FORGET #1 DO .6 <- #0 PLEASE DO (34) NEXT (33) DON'T 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 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
Literatur
- Oliver Lau, Hexenwerk - Ein Plädoyer für esoterische Programmiersprachen, c’t 22/07, S. 192-199.
Weblinks
Wikimedia Foundation.