Befunge
Befunge ist eine esoterische_Programmiersprache, die ähnlich wie Forth, Stack-orientiert ist. Die Programme basieren auf einem 2-dimensionalen Schema und der Quelltext besteht aus ASCII-Zeichen in einer 80×25 Zeichen großen Anordnung. Chris Pressey erfand Befunge 1993 mit dem Ziel, eine möglichst schwer kompilierbare Sprache zu definieren. Eine Schwierigkeit für Compiler stellt beispielsweise das p-Kommando dar, welches den Quellcode zur Laufzeit dynamisch verändern kann.Die Instruktionen in Befunge (93)
Beispiele
Addition zweier Zahlen
4 3 + . @
Der Quellcode ähnelt einem Forth-Quellcode: 4 und 3 werden nacheinander auf dem Stack abgelegt, dann werden beide Zahlen vom Stack geholt, addiert und dann das Ergebnis wieder auf dem Stack abgelegt. Der Punkt
. ist die Anweisung, die oberste Zahl des Stacks auszugeben. Mit dem Klammeraffen @ wird das Programm beendet.v > . v
4 + @
> 3 ^
Das gleiche wie oben, nur mit Richtungsänderungen.
v*>.v
4*+*@
>3^**
Ganz kompakt, mit Füllzeichen.
Hello World
"!dlrow olleH" > v
,
:
^ _ @
Das erste
" signalisiert, dass es sich um ASCII-Code handelt. Dann wird in Umgekehrter Reihenfolge Hello World! zeichenweise in den Stack gelesen. Das letzte " schließt den ASCII-Strom ab. Dann kommt eine Schleife, bei denen >, v und ^ die Richtungspfeile für den Programmfluss darstellen, und das , (Komma) die Print-Anweisung für ein ASCII-Zeichen darstellt. Das _ (Unterstrich) stellt die While-Bedingung dar, die solange erfüllt ist, solange der letzte geholte Wert größer 0 ist.Hello World Extended
91+70pv # by Alexander Surma (crock@drebesium.org)
v p173< v <
>"!dlroW olleH">,:|
v:-1g17 <
^ p17_$70g,v
^_ #&@#p173<
Hier wird das Zeichen für einen Zeilenumbruch ( 3g04g1+:04pgv 3 !>3p02gv v!p30:+g50g30-1 < >v
"Hungry dragon" v1.1 |< vp3_v#-"."< p|< vp40+
BefBef
BefBef ist ein Befunge-Interpreter, geschrieben in Befunge, von Wim Rijnders.
028p038p108p018pv
vp91+56p900< v_v#!-+1"!":< >:"<"-!#v_:"^"-!#v_ v
>"*"09g:19g\19gg29p p 29g28g #^_ :" "-!#v_:"v"-#^_ v
^p91+g91g81p90+g90g 8 0pg91g90g92$ < <
>: >38g7p38g1+38p^p811p800<
>28g!28p ^p810p80-10< <
^p81-10p800 <
^p810p801< _v#!-">":<
^ -"0":_v#`\+1"9":_v#` -1"0":< #
> # >:"!"1+-!#v_v
#######################>19g+\48gp ^ p #82!g82<
0"!dlroW olleH">v # ^ g7-1g83_v#!-":":<
,: # >$, ^ < #>:"p"-!#v_v
^_25*,@# v_^#-4:_v#-3:_v#-1:_v#-2:\g7p83:-1_v#:g83<2<
####################### >:5-#v_v$ ^ # 0 #<
^ _v#-6< > $6 v >$09g+48p1 >> ^
>$0> # ^ <
v_ ^
>* ^ ^3_v#!-"_": <
>:","-#v_4 ^
^5_v#!-"*":<
> #@ ^
Siehe auch: Esoterische Programmiersprache
Weblinks
• YABI93 ein weiterer Befunge-93 Interpreter (geschrieben in Java)
• Tim's Befunge Compiler
• Programme in Befunge

