Intercal

Intercal je programovací jazyk, ktorý ma za cieľ vyzerať úplne inak ako akýkoľvek iný jazyk.

História 

Jazyk Intercal bol navrhnutý skoro ráno 26. Mája 1972 Donald R. Woodsom a James M. Lyonom na Princetonskej univerzite. Približne osemnásť rokov neskôr Eric S. Raymond vytvoril implementáciu C-INTERCAL, ktorá je odvtedy udržiavaná komunitou masochistov.

Celé meno jazyka znie "Compiler Language With No Pronounceable Acronym" (počítačový jazyk bez vysloviteľnej skratky).

Opis jazyka

Premenné 

Intercal pozná dva typy premenných – 16bitové a 32bitové neznamienkové celé čísla. Premenné nemajú meno, ale číslo (1..65535), pred ktorým sa píše fľak (.) ak ide o 16bitovú premmenú alebo dvojfľak (:) pre 32bitové premmenné. Rovnako označené 16 a 32bitové premenné sú dve rôzne hodnoty.

Konštanty 

Konštanta je 16bitová hodnota od 0 do 65535 pred ktorou sa píše mreža (#).

Polia 

Polia pre 16bitové hodnoty su označené chvostíkom (,) a pre 32bitové hodnoty hybridom (;) nasledované číslom od 1 po 65535. Potom nasleduje slovo SUB nasledované indexami pola oddelenými medzerami. index môže byť ľubovoľný výraz.

Všimnime si, že .123, :123, #123, ,123, a ;123 sú úplne odlišné výrazy.

Operátory 

Jazyk pozná 5 operátorov. 2 binárne a 3 unárne. Prosím, budťe k nim milí: Nie sú veľmi múdre ale sú všetko čo máme

Binárne operátory:
 spojiť (interleave) – označovaný sko veľké prachy ($). Vezme dva 16-bitové operandy a výsledok vytvorí striedaním ich bitov. Napríklad #65536$#0 je v binárnej sústave 101010....10 a #0$#65536 je 010101...01

 vybrať (select) – označovaný ako sínusoida (~), vyberá tie bity s prvého operandu, kde má druhý operand jednotky a vracia ich vo výsledku natlačené na pravej strane. Pred prevedením tejto operácie sú obidva operandy rozšírené na 32bitov. Napríklad #179~#201 (binárne 10110011~11001001) vyberá 8., 7., 4. a 1. bit prvého argumetu, čo je 1001 = 9.

Unárne operátory:
 & – logický AND
 V – logický OR
 ? – logický XOR

Unárne operátory sa vkladajú medzi fľak, dvojfľak, chvostík alebo čokoľvek čo je pred operandom a číslo. Naraz môže byť požitý najviac jeden unárny operátor. Tieto operátory fungujú na všetkých dvojiciach po sebe idúcich bitov a výsledok z prvého a posledného bitu ide do prvého bitu výsledku. Napríklad #&77 (binárne = 1001101) je binárne 0000000000000100 = 4, #V77 je binárne 1000000001101111 = 32879 a #?77 je binárne 1000000001101011 = 32875.

Priorita operátorov 

Žiadna neexistuje. Napriek tomu môžeme výrazy uzatvárať medzi iskričky (') alebo zajačie uši ("). Čiže '#165c./#203'~#358 (bnárne '10100101c./11001011'~101100110) je 15, ale #165c./'#203~#358' je 34915 a #165c./#203~#358 je nesprávna syntax bez hodnoty. Unárny operátor je požitý na celý výraz, keď je vložený hneď pred prvú iskričku alebo ucho.

Príkazy 

Príkaz obsahuje:
 nepovinné návestie uzavreté v ()
 slovo PLEASE, DO alebo PLEASE DO. Z týchto slov si môžeme voľne vybrať a zvýšiť tak estetickosť nášho programu
 nepovinné slovo NOT alebo N'T
 nepovinné číslo od 0 do 100 pred ktorým je dve-nuly-sedem (%) udávajúce pravdepodobnosť v percentách že príkaz bude vykonaný
 samotný príkaz

Zoznam príkazov 

 (návestie) NEXT
 FORGET
 RESUME
 STASH
 IGNORE
 REMEMBER
 ABSTAIN
 REINSTATE
 WRITE IN
 READ OUT
 GIVE UP
...

Niekedy po roku 1984 bol v do Intercal-u pridaný príkaz COME FROM.

Jeho použitie vyzerá takto:
(1)     DO <any statement>
        .
        .
        .
(2)     DO COME FROM (1)

a má rovnaký zmysel ako nasledovný kód:
(1)     DO <any statement>
(2)     DO GOTO (3)
        .
        .
        .
(3)     DO NOTHING

Referencie

Externé odkazy 
 stránka venovaná intercalu 

Programovacie jazyky