Diskussion:Brainfuck

aus Wikipedia, der freien Enzyklopädie
Letzter Kommentar: vor 7 Jahren von AzureDiamond in Abschnitt Gut geeignet um Grundlagen der Computertechnik zu erlernen?
Zur Navigation springen Zur Suche springen

Ist das ein Scherz?

Nein. Such mal "Brainfuck programming" in einer guten Suchmaschine.
Geile Programmier-Sprache, lustig. Kann mal jemand mit Brainfuck-Kenntnissen die Artikel Inkrement und Dekrement verfassen? -- CdaMVvWgS 20:48, 9. Mär 2004 (CET)

Das Beispiel restbehaftete Division ist C(++)! --Mkogler 19:17, 8. Sep 2004 (CEST)

um das Verständnis des Brainfuck-Codes zu erleichtern steht der relativ leicht lesbare C-Code darüber. --Mijobe 22:25, 8. Sep 2004 (CEST)
hoffe so ists klarer --Mijobe 22:40, 8. Sep 2004 (CEST)

Implementierungen /Kompatibilität[Quelltext bearbeiten]

Da die meisten Brainfuckprogramme auf Unix-Umgebungen ausgelegt sind, werden im Folgenden die Implementierungen als „kompatibel“ bezeichnet, die diese Programme ausführen können. „Inkompatible“ Implementierungen sind dagegen auf Windows festgelegt (..)

Hier wird groß "Folgendes" angekündigt, aber der Artikel ist zu Ende. Was soll dann diese willkürliche Definition von Kompatibillität, wenn sie doch nicht gebraucht wird? Ich ändere das mal. --Horas 11:42, 4. Sep. 2009 (CEST)Beantworten

Löschung der Brainfuck-Variationen aus dem Hauptartikel?[Quelltext bearbeiten]

Meiner Meinung nach sollten die Absätze über Spoon, Ook, Toadskin, BF2d, BFM, usw. aus dem Hauptartikel gelöscht werden. Um das zu begründen sollte ich wohl etwas weiter ausholen:

Generell lassen sich die Variationen in drei Gruppen aufteilen:

  • BF-Supersets (Doublefuck, BFM, Brainfork, ...) - ohne die Autoren angreifen zu wollen wurden diese Sprachen meist von Leuten geschrieben welche nicht wirklich begriffen haben worum es bei BF geht. (Ok, den Brainfork muss ich hier in Schutz nehmen da selbiges wohl als Satire aufzufassen ist - trotzdem hat es nicht wirklich viel mit BF zutun...) Natürlich ist BF nicht komfortabel - aber es ist mit nur sehr wenigen Befehlen Turing-vollständig ohne direkt dem Programmierer das Leben schwer zu machen. (vgl. Malbolge oder INTERCAL) BF-Supersets nehmen BF die Essenz und sind deshalb nicht "besser" als BF - Innerhalb der BF-Community (ja, sowas gibt es wirklich :-) gelten sie als verpöhnt. Würde man alle BF-Supersets auflisten die irgendjemand in 5 Minuten geschrieben hat würde der Großteil des BF-Artikels nicht von BF sondern von BF-Varianten die niemand verwendet handeln.
  • Anders kodiertes BF (Spoon, Ook, ...) - Aufgrund der Simplizität der BF-Syntax ist es natürlich einfach diese komplett umzuschreiben - dies hat jedoch nicht wirklich Vorteile. Es gibt kaum BF-Programme die größer als ein paar Kilobyte sind, insofern ist Spoon[1] nicht wirklich... sinnvoll. (Ja, es mag fragwürdig sein mit Sinnhaftigkeit zu argumentieren wenn man BF als Thema hat :-) Ook ist ein Scherz - es wird nicht verwendet. (Nichts für ungut den vielen Orang-Utan Wikipedianern :-) Auch hier gilt, dass es wenige Minuten dauert eine neue Syntax bzw Kodierung für BF zu erfinden - sowas tun viele Leute häufig und es gehört IMHO nicht in den Hauptartikel. Darüberhinaus wird die (originale) BF-Syntax von der BF-Community aufgrund ihrer Simplizität und Symmetrie hoch geschätzt.
  • Neue esoterische Sprachen welche Elemente aus Brainfuck übernommen haben (BF2d, Toadskin, Argh!, ...) - Diese Sprachen sind meist wirklich neu und verdienen ggf. auch ihren eigenen Artikel da man meist umdenken muss um Probleme zu lösen. Ich denke auch nicht, dass es sinnvoll ist auf alle esoterischen Sprachen welche BF-Elemente beinhalten vom BF-Artikel aus zu verlinken, da die BF-Sprachelemente sowieso in fast jeder Programmiersprache vorhanden sind. (und das allgemeine Design ist von Turing-maschinen übernommen.)

(Und es gibt noch eine 4. Gruppe: Alle paar Monate kommt jemand auf die Idee ein BF-Subset zu bauen (BFmin) und beraubt es auf diesem Wege seiner Turing-vollständigkeit...)

Meiner Meinung nach sollte man die Absätze über BF-Variationen löschen oder sie zumindest in einen Extra-Artikel packen. (und vllt. etwas von dem was ich gerade geschrieben habe in einer mehr neutralen und schöneren Weise drüberpacken ;-)

Meinungen, Kritik, Vorschläge, Flames, Hassbriefe?

[1]: Es gibt im Artikel keinen Link zu irgendeiner Spoon Seite oder Implementation, Google gab mir auch keine Anhaltspunkte darauf, dass es existiert... eine Wikipedia-Erfindung möglicherweise? Ich errinere mich an eine Seite auf welcher über Möglichkeiten diskutiert wurde BF zu komprimieren, kann mich aber nicht an die URL oder den Autor errinern.

--FelixN 22:13, 24. Dez 2004 (CET)

Nein, ich bin gegen die Auslagerung, gerade weil es so viele Esoterische Programmiersprachen gibt. Ich gebe zu, das einige von den erweiterten BF-Sprachen nicht in den BF-Artikel passen. Aber entweder Ook! und Spoon fliegen komplett aus Wikipedia raus (was ich durchaus begrüßen würde) oder sie bleiben in der Wikipedia, gehören aber dann auch in den BF-Artikel rein, als reine BF-Klone (egal warum sie initiert worden, und egal ob sie wirklich vorteile gegenüber BF bieten.
BF-Code läßt sich, aufgrund seiner Struktur, prima kompremieren. Aber es gibt keinen Compiler und keinen Programmierer, der in kompremiertem BF-Code programmieren könnte, bzw. der kompremmierten BF-Code abarbeiten könnte. Man müßte den kompremierten Code immer vor der Weiterarbeit entkompremieren. --Arbol01 22:59, 24. Dez 2004 (CET)
BTW: Toadskin hat seinen eigenen Artikel, und wird nur der Vollständigkeithalber im Artikel erwähnt. --Arbol01 23:04, 24. Dez 2004 (CET)
Ehrlich gesagt finde ich es ziemlich blöd, nach nur einem Tag gleich ganze Absätze aus einem Artikel herauszulöschen. Zumal man Brainfuck ja selbst nicht wirklich ernst nehmen kann, fand ich die Sache über Ook ziemlich unterhaltsam und nicht unangemessen. Muss doch nicht gleich alles so bierernst hier sein. Wenn du sie wenigstens auf einen Unterartikel verschoben hättest, hätte ich nichts gesagt. -- iGEL (+) 19:09, 23. Mär 2005 (CET)
Das schreibst Du nach drei Monaten? Nachdem im letzten Monat Dickbauch ein Massaker unter den EsoterischenProgrammiersprachen angerichtet hat, dem Brainfuck nur mal so eben entgangen ist? Warst Du im Urlaub? --Arbol01 20:28, 23. Mär 2005 (CET)

Dickbauchs Massaker und Meinungsbild der Wikipedianer --Arbol01 20:32, 23. Mär 2005 (CET)


bfasm bevor es gelöscht wird rette ich es mal hier her[Quelltext bearbeiten]

was gibt es da zu retten? Mit Ausnahme des Quellcodes ist nichts davon erwähnenswert. Erst recht sind Einzelheiten einer (unbedeutenden) Implementierung kein Thema der Sprache an sich, haben im Brainfuckartikel also auch nichts zu suchen. Dieser Artikel war nichts weiter als die Dokumentierung eines Quellcodes. Sowas ist aber nicht Inhalt einer Enzyklopädie oder der Wikipedia - dafür gibt es Seiten wie SourceForge und GNU_Savannah. -- Stefanp 12:33, 21. Mai 2005 (CEST)Beantworten



Der Brainfuck Assembler (Bfasm) ist ein ein Interpreter mit integriertem Bytecodecompiler der Liebhaber-Programmiersprache Brainfuck.

Während ältere Versionen des Assemblers die Brainfuck Answeisungen direkt interpretierten, wird seit Februar 2005 der Sourcecode zunächst in Bytecode compiliert. Durch diese Optimierung können auch komplexere Programme effizient ausgeführt werden. Der Brainfuckbenchmark Prime.b ermittelt eine Leistungssteigerung von einem Faktor 1000.

Der vom Assembler erzeugte Bytecode benötigt nur noch 6 der 8 Brainfuck Operatoren. Statische Rechenoperationen und Pointerarithmetik werden eliminiert.

Operatoren[Quelltext bearbeiten]

  • a(WERT) - Addiere WERT von aktueller Speicherposition ... WERT kann positiv oder negativ sein
  • s(WERT) - Bewege dich um WERT von der aktuellen Speicherposition ... WERT kann positiv oder negativ sein
  • , - Lese ein Zeichen in aktueller Speicherposition ein
  • . - Gebe Wert von aktueller Speicherposition als ASCII Zeichen auf STDOUT aus
  • [ - öffnet schleife
  • ] - schließt schleife

Operator Optimierung[Quelltext bearbeiten]

  • '+++++' wird zu a(6)
  • '+++--' wird zu a(1)
  • '<<>>>' wird zu s(1)
  • '<>-<>' wird zu a(-1)

Optimierungen bzgl. Schleifen würden viel bringen z.B. [-] als Z(memory[mempointer]=0) oder das Erkennen von Multiplikationen/Additionen. Das würde aber intern eine Erweitung des Bytecodes bewirken. --91.43.76.60 23:05, 16. Jan. 2010 (CET)Beantworten

Der Alogrithmus[Quelltext bearbeiten]

  1. Lese Quelltext ein
  2. Optimiere Quelltext
  3. Gebe Quelltext an Interpreter weiter
  4. Interpretiere

Links[Quelltext bearbeiten]

Hello World[Quelltext bearbeiten]

Also bei mir funktioniert das auf dieser Seite gezeigte "Hello World" nicht, sondern das hier:
++++++++++++[>++++++<-]>.
>++++++[>+++++<-]>
[-<<+>>]<<-.
+++++++..+++.>+++++[>+<-]>>
++++[>++++++++<-]>.
>++++++++[>+++++++++++<-]>-.
+++++[>++++<-]>-.
+++.------.--------.
>+++++[>++++++<-]>+++.

--Panseneintopf 16:47, 24. Nov. 2007 (CET)Beantworten

Name[Quelltext bearbeiten]

Ich hab absolut null Ahnung von Programmierung. In der Einleitung steht, die Sprache sei recht leicht zu lernen bzw. gut zum lernen von Programmierung allgemein. Das klingt als sei sie recht angenehm fürs Hirn. Wieso heißt sie dann brainfuck? Also wieso fickt sie ein Gehirn? --Lorenzo 23:36, 6. Jun. 2010 (CEST)Beantworten

Sie ist sehr einfach, minimalistisch sogar. Damit zwar auch leicht zulernen, aber ... schwer zu benutzen und BF-Programme entsprechend schwer zu verstehen. Schau dir nur einmal die Beispiele an etwa zur Multiplikation von 2 Zahlen. --RokerHRO 06:57, 7. Jun. 2010 (CEST)Beantworten

Die gesprochene Variante ist ja wohl nicht euer Ernst! Wenn die so bleibt, lieber ganz rausnehmen! (nicht signierter Beitrag von 94.220.211.35 (Diskussion) 14:06, 1. Jul 2011 (CEST))

Turing-Vollständigkeit[Quelltext bearbeiten]

Es wird erwähnt, dass, da BF touringmächtig sei, es sich bei den genannten Variationen um, genauso wie reale Computer, Endliche Automaten handelt. Tatsächlich handelt es sich bei "realen Computern" aber nicht um stark beschränkte endliche Automaten (erkennt nur Typ-3, reguläre Grammatiken) sondern eben um mächtigere Von-Neumann-Rechner, die Typ-0 Grammatiken erkennen. Gleiche Mächtigkeit gilt für linear-unbeschränkte Touring-Maschinen. Drittquellen habe ich leider gerade nicht zur Hand, das ist aber grundlegende Informatik. . (nicht signierter Beitrag von Teurox (Diskussion | Beiträge) 12:12, 16. Nov. 2011 (CET)) Beantworten

Gut geeignet um Grundlagen der Computertechnik zu erlernen?[Quelltext bearbeiten]

"Gut geeignet, um Grundlagen der Computertechnik zu erlernen"?

Ich bezweifle das sehr. Erstens wird es jeden abschrecken, der sich mit der Programmierung auseinandersetzen will, und zum Anderen sollte man für die Grundlagen der Computertechnik lieber das Von-Neumann-Modell, die Verwendung von Pointern oder die Funktion von CPUs lernen. Da BrainFuck ganz ohne Pointer auskommt, hat es meiner Meinung nach mit der aktuellen Computertechnik kaum Gemeinsamkeiten. --79.255.77.170 21:30, 14. Mai 2016 (CEST)Beantworten

Brainfuck eignet sich zum Einstieg in den Compilerbau. Es ist leichter einen Brainfuck-Compiler zu schreiben, als einen Compiler für eine Sinnvolle Programmiersprache. Die wichtigen Dinge, wie Befassung mit Maschinencode und Berechnen von Adressen für relative Sprünge sind dabei, sowie die Möglichkeit zur Compileroptimierung (+++++ nicht zu lauter "INC BYTE PTR [BX], sondern zu ADD BYTE PTR [BX],5). --79.200.69.93 20:00, 12. Jun. 2016 (CEST)Beantworten
Um Compilerbau zu lernen, ist Brainfuck meines Erachtens sehr schlecht geeignet, weil es eher Assembly als eine strukturierte Programmiersprache ist. Regelbasierte Optimierungen kann man auch lernen, wenn man sich eine beliebige andere Sprache zum Vorbild nimmt. Lebendigkeitsanalysen sind zum Beispiel sehr wichtig für echte Programme, aber quasi unmöglich in Brainfuck. -- 21:46, 13. Jun. 2016 (CEST)Beantworten