Was ist eine esoterische Programmiersprache? Esoterische Programmiersprachen sind Programmiersprachen, die nicht für den praktischen Einsatz entwickelt wurden, sondern um ungewöhnliche Sprachkonzepte umzusetzen Esoterischen Programmiersprachen können bei Verständnis normaler Programmiersprachen helfen Die meisten esoterischen Programmiersprachen sind Turing-vollständig
Turing-Vollständigkeit Turing-Vollständigkeit bezeichnet in der Berechenbarkeitstheorie die Eigenschaft einer Programmiersprache oder eines anderen logischen Systems, sämtliche Funktionen berechnen zu können, die eine universelle Turingmaschine berechnen kann. Das bedeutet, dass man mit einer Turing-vollständigen Programmiersprache alles, was sich irgendwie berechnen lässt, berechnen kann. Gegenbeispiel: Tabellenkalkulation ist nicht Turing-vollständig
Piet Nach einem Pionier der abstrakten Kunst benannt Programme sehen aus wie abstrakte Kustwerke Das Programm ist eingeteilt in Farbblöcke und Pixel Es gibt 20 Farben Es gibt einen Richtungszeiger, der angibt, welches der nächste Farbblock sein wird
Beispiele
Brainf*ck BF wurde vom Schweizer Urban Müller erfunden Brainf*ck besitzt acht Befehle, jeweils bestehend aus einem einzigen Zeichen:  <  >  +  -  ,  .  [  ] Damit kann  jede Funktion (d.h. jedes Ein-Ausgabe-Verhalten von Bitmustern) berechnet  werden, die auch mit einer anderen Programmiersprache wie Java oder C++ berechnet  werden kann &quot;Hello World&quot; in Brainf*ck:  ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.
Befehle: < : Gehe einen Schritt nach rechts ins nächste Feld. > : Gehe einen Schritt nach links ins nächste Feld. + : Erhöhe den Wert des aktuellen Feldes um Eins - : Vermindere den Wert des aktuellen Feldes um Eins . : Gib die Zahl im aktuellen Feld als ASCII-Zeichen aus , : Lies ein ASCII-Zeichen von der Tastatur und schreib es  in das aktuelle Feld 0 0 0 0 3 1 0 0 0 0
Beispiel Code : , + . , : Zeichen einlesen (a = 97) + : Zeichen um eins erhöhen (=98) . : Zeichen ausgeben (98=b) 0 0 0 0 97 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 98 0 0 0 0 0
Beispiel Code : , > , > , . < . < . , > , > , : drei Zeichen einlesen  . < . < . : Zeichen ausgeben 0 0 0 0 97 98 0 0 0 0 0 0 0 99 0 0 0 0 0 0 0 97 98 99 0 0 0
Schleifen [ : Falls der Inhalt des aktuellen Felds gleich Null ist,  überspringe den Code, der zwischen den entsprechenden  Klammerpaaren [ ... ] steht ] :  Falls der Inhalt des aktuellen Felds ungleich Null ist, springe  zurück zum ersten Befehl, der zwischen zwischen den  entsprechenden Klammerpaaren [ ... ] steht
Beispiel , >+++[ <.+ > -] , > +++ Zeichen in erstes Feld und zweites Feld auf 3  setzen [ <.+ > -] Dreimal das erste Feld ausgeben und um 1  erhöhen Eingabe: a Ausgabe: abc
Aufgaben Finde ein Programm, das alle Zeichen der Eingabe liest und  ausgibt Implementiere ein Programm, das zwei Zahlen addiert Implementiere ein Programm, das den Wert des ersten Feldes  in das zweite Feld kopiert

Esoterische Programmiersprachen nummer 3

  • 1.
  • 2.
    Was ist eineesoterische Programmiersprache? Esoterische Programmiersprachen sind Programmiersprachen, die nicht für den praktischen Einsatz entwickelt wurden, sondern um ungewöhnliche Sprachkonzepte umzusetzen Esoterischen Programmiersprachen können bei Verständnis normaler Programmiersprachen helfen Die meisten esoterischen Programmiersprachen sind Turing-vollständig
  • 3.
    Turing-Vollständigkeit Turing-Vollständigkeit bezeichnetin der Berechenbarkeitstheorie die Eigenschaft einer Programmiersprache oder eines anderen logischen Systems, sämtliche Funktionen berechnen zu können, die eine universelle Turingmaschine berechnen kann. Das bedeutet, dass man mit einer Turing-vollständigen Programmiersprache alles, was sich irgendwie berechnen lässt, berechnen kann. Gegenbeispiel: Tabellenkalkulation ist nicht Turing-vollständig
  • 4.
    Piet Nach einemPionier der abstrakten Kunst benannt Programme sehen aus wie abstrakte Kustwerke Das Programm ist eingeteilt in Farbblöcke und Pixel Es gibt 20 Farben Es gibt einen Richtungszeiger, der angibt, welches der nächste Farbblock sein wird
  • 5.
  • 6.
    Brainf*ck BF wurdevom Schweizer Urban Müller erfunden Brainf*ck besitzt acht Befehle, jeweils bestehend aus einem einzigen Zeichen: < > + - , . [ ] Damit kann jede Funktion (d.h. jedes Ein-Ausgabe-Verhalten von Bitmustern) berechnet werden, die auch mit einer anderen Programmiersprache wie Java oder C++ berechnet werden kann &quot;Hello World&quot; in Brainf*ck: ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.
  • 7.
    Befehle: < :Gehe einen Schritt nach rechts ins nächste Feld. > : Gehe einen Schritt nach links ins nächste Feld. + : Erhöhe den Wert des aktuellen Feldes um Eins - : Vermindere den Wert des aktuellen Feldes um Eins . : Gib die Zahl im aktuellen Feld als ASCII-Zeichen aus , : Lies ein ASCII-Zeichen von der Tastatur und schreib es in das aktuelle Feld 0 0 0 0 3 1 0 0 0 0
  • 8.
    Beispiel Code :, + . , : Zeichen einlesen (a = 97) + : Zeichen um eins erhöhen (=98) . : Zeichen ausgeben (98=b) 0 0 0 0 97 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 98 0 0 0 0 0
  • 9.
    Beispiel Code :, > , > , . < . < . , > , > , : drei Zeichen einlesen . < . < . : Zeichen ausgeben 0 0 0 0 97 98 0 0 0 0 0 0 0 99 0 0 0 0 0 0 0 97 98 99 0 0 0
  • 10.
    Schleifen [ :Falls der Inhalt des aktuellen Felds gleich Null ist, überspringe den Code, der zwischen den entsprechenden Klammerpaaren [ ... ] steht ] : Falls der Inhalt des aktuellen Felds ungleich Null ist, springe zurück zum ersten Befehl, der zwischen zwischen den entsprechenden Klammerpaaren [ ... ] steht
  • 11.
    Beispiel , >+++[<.+ > -] , > +++ Zeichen in erstes Feld und zweites Feld auf 3 setzen [ <.+ > -] Dreimal das erste Feld ausgeben und um 1 erhöhen Eingabe: a Ausgabe: abc
  • 12.
    Aufgaben Finde einProgramm, das alle Zeichen der Eingabe liest und ausgibt Implementiere ein Programm, das zwei Zahlen addiert Implementiere ein Programm, das den Wert des ersten Feldes in das zweite Feld kopiert