Befunge

Befunge je ezoterický dvojrozmerný programovací jazyk. Odlišuje sa od ostatných hlavne tým, že príkazy nenasledujú za sebou, ale sú usporiadané v dvojrozmernej mriežke. Jednu inštrukciu predstavuje jeden znak v mriežke. Program sa vykonáva tak, že ukazovateľ (program counter) sa hýbe po mriežke a vykonáva aktuálne inštrukcie.

História 
Jazyk vymyslel Chris Pressey v roku 1993 ako pokus o konštrukciu jazyka, ktorý sa nedá skompilovať. Napriek tomu, niekoľko kompilátorov už bolo napísaných. K pôvodnému "Befunge-93" existujú špecifikácie ako napríklad Funge-98, ktoré podporuje ľubovoľne veľa rozmerov (namiesto pôvodných dvoch), takisto aj multithreading. Špecifikácia Befunge-93 povoľuje mať inštrukcie len v mriežke 80 riadkov a 25 stĺpcov. Program, ktorý pretečie cez okraj, pokračuje na druhej strane. Práve preto je program v Befunge topologicky ekvivalentný torusu. Befunge nemá žiadnu normálnu pamäť ako iné jazyky, pracovať môže len so zásobníkom. Ani inštrukcia na zápis a čítanie v mriežke stále nestačí na to, aby Befunge-93 bolo turingovsky úplné. Túto vlastnosť získava až Funge-98 odstránením ohraničenia.

Ukážkový kód v Befunge-93 
Technika usmerňovania ukazovateľa šípkami demonštruje generátor náhodných čísel. Inštrukcia ? posiela ukazovateľ náhodným zo štryoch základných smerov. Keď príde na číslo, dá ho na zásobník. Potom príde na inštrukciu . a vypíše vrch zásobníka. Keďže tu nie je inštrukcia @ na ukončenie programu, bude produkovať nekonečnú postupnosť čísel od 1 do 9.

 vv  <      <
     2
     ^  v<
  v1<?>3v4
     ^   ^
 >  >?>  ?>5^
     v   v
  v9<?>7v6
     v  v<
     8
  .  >  >   ^
 ^<

Zoznam inštrukcií Befunge-93

Pozri aj 
 brainfuck
 Carnage Heart - Podobný jazyk pre programovaciu hru na playstation.
 intercal
 whitespace

Externé odkazy 
 Esoteric languages wiki
 Official Funge-98 Specification 
 Cat's Eye Technologies, stránka autora

Programovacie jazyky