PofoWiki

Die ultimative Informationsquelle zum ATARI Portfolio

Benutzer-Werkzeuge

Webseiten-Werkzeuge


software:diy:andere:prainfucked

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.


Vorhergehende Überarbeitung
software:diy:andere:prainfucked [Unbekanntes Datum] (aktuell) – Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1
Zeile 1: Zeile 1:
 +====== brainfuck auf dem Portfolio mit Prainfucked ======
  
 +===== Die Sprache brainfuck =====
 +
 +Die Programmiersprache [[http://www.esolangs.org/wiki/Brainfuck|brainfuck]] (auch bekannt als bf oder brainf*) ist wohl eher einer experimentelle Sprache, als eine Programmiersprache, mit der man gerne komplexe Anwendungen entwickeln möchte. Dies liegt insbesondere an den fehlenden Möglichkeiten der Programmstrukturierung und an den eingeschränkten Ein- bzw. Ausgabe-Möglichkeiten.
 +Die Beschränkung der Sprache auf nur acht verschiedene Befehle trägt auch nicht sonderlich zu einer einfachen Umsetzung von Funktionalität in Programmcode bei.
 +
 +Trotzdem hat sich brainfuck weltweit einen Namen machen können, als eine Sprache mit ganz besonderem "Charme" und nicht zuletzt auch als geistige Herausforderung bei Freizeitprogrammierern und Informatikern.
 +
 +Alle Befehle werden in einer Art "virtueller Maschine" ausgeführt. Diese besteht aus einer (theoretisch unbegrenzten) Anzahl von Speicherzellen. Außerdem gibt es einen Zeiger, der immer auf eine dieser Speicherzellen zeigt.
 +
 +Die Befehle im Überblick:
 +  * < verschiebt den Zeiger eine Speicherzelle nach links
 +  * > verschiebt den Zeiger eine Speicherzelle nach rechts
 +  * + erhöht den Wert der aktuellen Speicherzelle um Eins
 +  * - verringert den Wert der aktuellen Speicherzelle um Eins
 +  * [ der Code bis zur nächsten ] wird nur ausgeführt, wenn die aktuelle Speicherzelle ungleich Null ist
 +  * ] springt zurück zur zugehörigen [
 +  * . gibt die aktuelle Speicherzelle auf die Konsole aus (in ASCII-Kodierung)
 +  * , liest ein Zeichen von der Konsole in die aktuelle Speicherzelle ein
 +
 +Auch wenn es auf den ersten Blick etwas schwer vorstellbar ist, so konnte man doch zeigen, dass brainfuck [[http://www.esolangs.org/wiki/Turing-complete|Turing-komplett]] ist. Es lassen sich die grundlegenden logischen Operationen durchführen und somit alle Berechnungen ausführen, die mit heutigen Computern möglich sind (entsprechend viel Speicher vorausgesetzt).
 +
 +
 +===== Der Compiler Prainfucked =====
 +
 +**Prainfucked** ist eine von Daniel Mewes eigens für den Portfolio angepasste Version des Brainfuck-Compilers [[http://home.arcor.de/partusch/html_de/bfd.html|Brainfucked]] von Stefan Partusch.
 +Der Compiler ist kompiliert weniger als ein Kilobyte groß. Er unterstützt eine grundlegende Syntaxprüfung und optimiert den brainfuck-Quellcode in Hinsicht auf Code-Größe und Geschwindigkeit.
 +
 +Prainfucked wird mit vollständigem Quellcode (für den [[wpde>NASM|Netwide Assembler]], GNU GPL Version 2-lizensiert) angeboten und kommt in zwei verschiedenen Versionen:
 +Dem Compiler ''pfd.com'', der in die erzeugten Programme eine Laufzeitprüfung einbettet, die verhindert, dass die reservierten brainfuck-Speicherzellen (22.000 zu je ein Byte) verlassen werden. Andernfalls könnte es auf dem Portfolio zu einer Beschädigung der RAM-Disk C: kommen.
 +Der Compiler ''pfd-nb.com'' (nb = "No Boundary Checking") verzichtet auf diese Überprüfung und erhöht somit bei gut geprüften Programmen die Ausführungsgeschwindigkeit. Ein durchschnittliches brainfuck-Programm läuft damit rund doppelt so schnell ab.
 +
 +Das Archiv enthält außerdem noch einige freie Beispielprogramme, zum Beispiel zur Berechnung von Primzahlen oder zur Faktorisierung natürlicher Zahlen.
 +
 +Die im Moment aktuelle Version 1.1.1 kann unter [[http://danielmewes.dnsalias.net/~daniel/pf/]] heruntergeladen werden.
 +
 + --- //[[danielmewes@onlinehome.de|Daniel Mewes]] 24/10/2006 20:25//
software/diy/andere/prainfucked.txt · Zuletzt geändert: 26/10/2006 00:10 (Externe Bearbeitung)