INTERCAL
De Compiler Language With No Pronounceable Acronym (INTERCAL) is een esoterische programmeertaal die als parodie is gemaakt door Don Woods en James M. Lyon, twee studenten van Princeton University, in 1972. Een aantal aspecten van de verschillende programmeertalen uit die tijd worden op satirische wijze in INTERCAL gebruikt.
Kenmerken
[bewerken | brontekst bewerken]Volgens de originele handleiding van de auteurs:
De volledige naam van de compiler is "Compiler Language With No Pronounceable Acronym", hetgeen, om voor de hand liggende redenen, afgekort wordt tot "INTERCAL".
De originele Princeton-implementatie gebruikte ponskaarten en de EBCDIC-tekenset.
INTERCAL was bedoeld om compleet anders te zijn dan alle andere computertalen. Veel voorkomende bewerkingen in andere talen hebben een cryptische en overbodige syntaxis in INTERCAL.
INTERCAL heeft veel andere functies die zijn ontworpen om het esthetisch nog onaangenamer te maken voor de programmeur: het gebruikt commando's zoals "READ OUT", "IGNORE", "FORGET", en modifiers zoals "PLEASE". Dit laatste sleutelwoord moet af en toe een commando voorafgaan, als "PLEASE" niet vaak genoeg verschijnt, wordt het programma als onvoldoende beleefd beschouwd, en krijg je een compileerfout. Echter, als het te vaak voorkomt, wordt het programma als overdreven beleefd beschouwd, en krijg je eveneens een fout. Hoewel deze functie aanwezig was in de originele INTERCAL-compiler, was deze niet gedocumenteerd.
Ondanks de opzettelijk duistere en omslachtige syntaxis van de taal, is INTERCAL niettemin Turing-compleet: met voldoende geheugen kan INTERCAL elk probleem oplossen dat een universele Turing-machine kan oplossen. De meeste implementaties van INTERCAL doen dit echter zeer langzaam. Een benchmark voor de Zeef van Eratosthenes, die alle priemgetallen kleiner dan 65536 berekent, werd in 1992 getest op een Sun SPARCstation 1. In C duurde het minder dan een halve seconde; hetzelfde programma in INTERCAL duurde meer dan zeventien uur.
Hello world
[bewerken | brontekst bewerken]De traditionele "Hello world!"-programma laat zien hoe verschillend INTERCAL is van standaard programmeertalen. In C zou het als volgt kunnen luiden:
#include <stdio.h>
int main(void) {
printf("Hello, world!\n");
return 0;
}
Het equivalente programma in C-INTERCAL is langer en moeilijker te lezen:
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
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
- Dit artikel of een eerdere versie ervan is een (gedeeltelijke) vertaling van het artikel INTERCAL op de Engelstalige Wikipedia, dat onder de licentie Creative Commons Naamsvermelding/Gelijk delen valt. Zie de bewerkingsgeschiedenis aldaar.