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.[1]
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