Intercal

programovací jazyk

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

História upraviť

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 upraviť

Premenné upraviť

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 upraviť

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

Polia upraviť

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 upraviť

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 upraviť

Ž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 upraviť

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 upraviť

  • (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

Referencie upraviť

Externé odkazy upraviť