Intercal

z Wikipédie, slobodnej encyklopédie

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

História[upraviť | upraviť zdroj]

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

Premenné[upraviť | upraviť zdroj]

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

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

Polia[upraviť | upraviť zdroj]

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

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

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

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

  • (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ť | upraviť zdroj]

Externé odkazy[upraviť | upraviť zdroj]