INTERCAL linguaggio di programmazione | |
---|---|
![]() | |
Autore | Don Woods e James Lyon |
Data di origine | 1973 |
Ultima versione | 0.30 (2 aprile 2015) |
Paradigmi | esoterico, imperativo |
Tipizzazione | forte |
Implementazione di riferimento | |
Sito web | www.catb.org/~esr/intercal/ |
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.[1][2][3][4] 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.[5]
INTERCAL è stato sviluppato nel 1972 da due studenti dell'Università di Princeton, Don Woods e James Lyon.[1][2][3][4]
La versione iniziale del linguaggio sviluppata all'Università di Princeton funzionava mediante schede perforate con un sistema di codifica EBCDIC.[6]
Venne successivamente sviluppata una versione per computer moderni, detta implementazione Atari, che utilizza il sistema di codifica ASCII e di conseguenza sostituisce alcuni caratteri.[7]
Nella sua sintassi più minimale, il linguaggio prevede che ogni istruzione, su singola riga, sia preceduta dall'identificatore DO
, PLEASE DO
o PLEASE
.[3][8]
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
.[3][9]
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.[3][5]
Per terminare un programma è necessario usare PLEASE GIVE UP
(in italiano, "perfavore arrenditi").[3][9]
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!".[5]