INTERCAL (sigla per Compiler Language With No Pronounceable Acronym) è stato il primo linguaggio di programmazione esoterico, sviluppato nel 1972 da Don Woods e James Lyon come parodia degli altri linguaggi di programmazione dell'epoca come FORTRAN, BASIC e ALGOL.. Tra gli elementi esoterici di questo linguaggio vi sono degli errori che occorrono se il programmatore non è abbastanza o è troppo gentile e la presenza in alcune sue varianti dell'istruzione COMEFROM, inverso della deprecata GOTO.
Storia INTERCAL è stato sviluppato nel 1972 da due studenti dell'Università di Princeton, Don Woods e James Lyon.
La versione iniziale del linguaggio sviluppata all'Università di Princeton funzionava mediante schede perforate con un sistema di codifica EBCDIC..
Venne successivamente sviluppata una versione per computer moderni, detta implementazione Atari, che utilizza il sistema di codifica ASCII e di conseguenza sostituisce alcuni caratteri..
Descrizione Nella sua sintassi più minimale, il linguaggio prevede che ogni istruzione, su singola riga, sia preceduta dall'identificatore DO, PLEASE DO o PLEASE..
Le variabili non devono essere dichiarate, possono avere nomi solamente numerici e possono essere di diversi tipi (numeri interi in 16 bit, numeri interi in 32 bit, array di numeri interi in 16 bit o array di numeri interi in 32 bit). Ogni tipo possiede un identificatore differente (rispettivamente ., :, ,, ;). Il valore viene assegnato alle variabili mediante l'operatore <-. L'input avviene attraverso WRITE IN e l'output attraverso READ OUT..
Il compilatore restituisce un errore se PLEASE (in italiano, "perfavore") appare meno di 4 o più di 5 volte, perché il programmatore è stato poco o eccessivamente gentile.
Per terminare un programma è necessario usare PLEASE GIVE UP (in italiano, "perfavore arrenditi"). Esempio DO ,1 <- #13 PLEASE DO ,1 SUB #1 <- #238 DO ,1 SUB #2 <- #108 DO ,1 SUB #3 <- #112 DO ,1 SUB #4 <- #0 DO ,1 SUB #5 <- #64 DO ,1 SUB #6 <- #194 DO ,1 SUB #7 <- #48 PLEASE DO ,1 SUB #8 <- #22 DO ,1 SUB #9 <- #248 PLEASE DO ,1 SUB #10 <- #168 DO ,1 SUB #11 <- #24 DO ,1 SUB #12 <- #16 DO ,1 SUB #13 <- #162 PLEASE READ OUT ,1 PLEASE GIVE UP Questo esempio stampa a schermo "Hello world!".
Note
Bibliografia
Altri progetti
CAT:Linguaggi di programmazione esoterici