A | B | C | D | E | F | G | H | CH | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
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
0-9
|
Daj čísla na zásobník |
+
|
Sčítanie: Zo zásobníka vyhoď a a b, a pridaj a+b |
-
|
Odčítanie: Zo zásobníka vyhoď a a b, a pridaj b-a |
*
|
Násobenie: Zo zásobníka vyhoď a a b, a pridaj a*b |
/
|
Celočíselné delenie: Zo zásobníka vyhoď a a b, a pridaj b/a, zaokrúhlené dole. Ak je a nula, spýta sa užívateľa na výsledok. |
%
|
Zvyšok po celočíselnom delení: Zo zásobníka vyhoď a a b, a pridaj zvyšok po celočíselnom delení b a a. Ak je a nula, spýta sa užívateľa na výsledok. |
!
|
Logická negácia(NOT): Vyhoď zo zásobníka číslo. Ak je to nula, pridaj 1 na zásobník, inak pridaj 0. |
`
|
Znamienko väčšie: Vyhoď a a b, pridaj 1 ak b>a, inak 0. |
> |
Zmeň smer doprava |
< |
Zmeň smer doľava |
^ |
Zmeň smer hore |
v |
Zmeň smer dole |
?
|
Zmeň smer na náhodný |
_
|
Vyhoď číslo zo zásobníka. Ak je to 0, zmeň smer doprava, inak doľava. |
|
|
Vyhoď číslo zo zásobníka. Ak je to 0, zmeň smer dole, inak hore. |
"
|
Zapni stringový mód: Každá ďalšia inštrukcia je pridávaná na zásobník ako jej ASCII hodnota. Toto platí až po najbližšiu inštrukciu "
|
: |
Zduplikuj vrch zásobníka. |
\ |
Vymeň vrchné dve hodnoty na zásobníku. |
$ |
Vyhoď vrch zásobníka. |
. |
Vyhoď vrch zásobníka a vypíš ho ako číslo. |
,
|
Vyhoď vrch zásobníka a vypíš znak, ktorého ASCII hodnota je dané číslo. |
# |
Trampolína: Preskoč naslednovú inštrukciu. |
p
|
Volanie "put" (vlož): Vyhoď y, x a v, v programe zmeň znak na pozícii (x,y) na znak s ASCII hodnotou v. |
g
|
Volanie "get" (získaj): Vyhoď y and x, na zásobník pridaj ASCII hodnotu znaku na tej pozícii v programe. |
& |
Vypítaj si od užívateľa číslo a pridaj ho na zásobník. |
~
|
Vypítaj si od užívateľa číslo a pridaj nazásobník znak s tou ASCII hodnotou. |
@ |
Ukonči program |
Pozri aj
- brainfuck
- Carnage Heart - Podobný jazyk pre programovaciu hru na playstation.
- intercal
- whitespace
Externé odkazy
Text je dostupný za podmienok Creative Commons Attribution/Share-Alike License 3.0 Unported; prípadne za ďalších podmienok. Podrobnejšie informácie nájdete na stránke Podmienky použitia.
ABC (programming language)
Active Server Pages
Ada (programovací jazyk)
ALGOL
ALGOL 60
ALGOL 68
ALGOL W
APL (programovací jazyk)
App Inventor
AWK
BASIC (programovací jazyk)
Befunge
Brainfuck
C++
Ceylon (programovací jazyk)
COBOL
ColdFusion
C (programovací jazyk)
C Sharp
Dynamické HTML
Dynamo (programovací jazyk)
D (programovací jazyk)
Eiffel (programovací jazyk)
Fortran
Glide
Go (programovací jazyk)
Groovy
Haskell (programovací jazyk)
Imagine (programovací jazyk)
Intercal
Interface description language
Interpreter
Interpreter (programovanie)
JavaFX Script
Java (programovací jazyk)
Java ME
Jazyk symbolických inštrukcií
Karel (programovací jazyk)
Lisp
Logo (programovací jazyk)
Lua
MATLAB
Nízkoúrovňový programovací jazyk
Objective-C
Object Pascal
Pascal (programovací jazyk)
Perl
PL/SQL
Programovací jazyk
Prolog
Python (programovací jazyk)
Qore (programovací jazyk)
Ruby (programovací jazyk)
Rust (programovací jazyk)
R (programovací jazyk)
SAS (programovací jazyk)
Scheme (programovací jazyk)
Scilab
Scratch
Script-Fu
Sigma-kalkul
Simula
Smalltalk
Squeak
Structured Query Language
Swift
Unified Modeling Language
Visual Basic
Visual Basic for Applications
Zoznam programovacích jazykov
Text je dostupný za podmienok Creative
Commons Attribution/Share-Alike License 3.0 Unported; prípadne za ďalších
podmienok.
Podrobnejšie informácie nájdete na stránke Podmienky
použitia.
www.astronomia.sk | www.biologia.sk | www.botanika.sk | www.dejiny.sk | www.economy.sk | www.elektrotechnika.sk | www.estetika.sk | www.farmakologia.sk | www.filozofia.sk | Fyzika | www.futurologia.sk | www.genetika.sk | www.chemia.sk | www.lingvistika.sk | www.politologia.sk | www.psychologia.sk | www.sexuologia.sk | www.sociologia.sk | www.veda.sk I www.zoologia.sk