Was ist eine esoterische Programmiersprache? <ul><li>Esoterische Programmiersprachen sind Programmiersprachen, die nicht f...
Turing-Vollständigkeit <ul><li>Turing-Vollständigkeit bezeichnet in der Berechenbarkeitstheorie die Eigenschaft einer Prog...
Piet <ul><li>Nach einem Pionier der abstrakten Kunst benannt </li></ul><ul><li>Programme sehen aus wie abstrakte Kustwerke...
Beispiele
Brainf*ck <ul><li>BF wurde vom Schweizer Urban Müller erfunden </li></ul><ul><li>Brainf*ck besitzt acht Befehle, jeweils b...
Befehle: <ul><li>< : Gehe einen Schritt nach rechts ins nächste Feld. </li></ul><ul><li>> : Gehe einen Schritt nach links ...
Beispiel <ul><ul><li>Code : , + . </li></ul></ul><ul><ul><li>, : Zeichen einlesen (a = 97) </li></ul></ul><ul><ul><li>+ : ...
Beispiel <ul><ul><li>Code : , > , > , . < . < . </li></ul></ul><ul><ul><li>, > , > , : drei Zeichen einlesen  </li></ul></...
Schleifen [ : Falls der Inhalt des aktuellen Felds gleich Null ist,  überspringe den Code, der zwischen den entsprechenden...
Beispiel , >+++[ <.+ > -] , > +++ Zeichen in erstes Feld und zweites Feld auf 3  setzen [ <.+ > -] Dreimal das erste Feld ...
Aufgaben <ul><li>Finde ein Programm, das alle Zeichen der Eingabe liest und  ausgibt </li></ul><ul><li>Implementiere ein P...
Nächste SlideShare
Wird geladen in …5
×

Esoterische Programmiersprachen blar

761 Aufrufe

Veröffentlicht am

ert

0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
761
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
10
Aktionen
Geteilt
0
Downloads
1
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Esoterische Programmiersprachen blar

  1. 2. Was ist eine esoterische Programmiersprache? <ul><li>Esoterische Programmiersprachen sind Programmiersprachen, die nicht für den praktischen Einsatz entwickelt wurden, sondern um ungewöhnliche Sprachkonzepte umzusetzen </li></ul><ul><li>Esoterischen Programmiersprachen können bei Verständnis normaler Programmiersprachen helfen </li></ul><ul><li>Die meisten esoterischen Programmiersprachen sind Turing-vollständig </li></ul>
  2. 3. Turing-Vollständigkeit <ul><li>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. </li></ul><ul><li>Das bedeutet, dass man mit einer Turing-vollständigen Programmiersprache alles, was sich irgendwie berechnen lässt, berechnen kann. </li></ul><ul><li>Gegenbeispiel: Tabellenkalkulation ist nicht Turing-vollständig </li></ul>
  3. 4. Piet <ul><li>Nach einem Pionier der abstrakten Kunst benannt </li></ul><ul><li>Programme sehen aus wie abstrakte Kustwerke </li></ul><ul><li>Das Programm ist eingeteilt in Farbblöcke und Pixel </li></ul><ul><li>Es gibt 20 Farben </li></ul><ul><li>Es gibt einen Richtungszeiger, der angibt, welches der nächste Farbblock sein wird </li></ul>
  4. 5. Beispiele
  5. 6. Brainf*ck <ul><li>BF wurde vom Schweizer Urban Müller erfunden </li></ul><ul><li>Brainf*ck besitzt acht Befehle, jeweils bestehend aus einem einzigen Zeichen: < > + - , . [ ] </li></ul><ul><li>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 </li></ul><ul><li>&quot;Hello World&quot; in Brainf*ck: ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>. </li></ul>
  6. 7. Befehle: <ul><li>< : Gehe einen Schritt nach rechts ins nächste Feld. </li></ul><ul><li>> : Gehe einen Schritt nach links ins nächste Feld. </li></ul><ul><li>+ : Erhöhe den Wert des aktuellen Feldes um Eins </li></ul><ul><li>- : Vermindere den Wert des aktuellen Feldes um Eins </li></ul><ul><li>. : Gib die Zahl im aktuellen Feld als ASCII-Zeichen aus </li></ul><ul><li>, : Lies ein ASCII-Zeichen von der Tastatur und schreib es in das aktuelle Feld </li></ul>0 0 0 0 3 1 0 0 0 0
  7. 8. Beispiel <ul><ul><li>Code : , + . </li></ul></ul><ul><ul><li>, : Zeichen einlesen (a = 97) </li></ul></ul><ul><ul><li>+ : Zeichen um eins erhöhen (=98) </li></ul></ul><ul><ul><li>. : Zeichen ausgeben (98=b) </li></ul></ul>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
  8. 9. Beispiel <ul><ul><li>Code : , > , > , . < . < . </li></ul></ul><ul><ul><li>, > , > , : drei Zeichen einlesen </li></ul></ul><ul><ul><li>. < . < . : Zeichen ausgeben </li></ul></ul>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
  9. 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
  10. 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
  11. 12. Aufgaben <ul><li>Finde ein Programm, das alle Zeichen der Eingabe liest und ausgibt </li></ul><ul><li>Implementiere ein Programm, das zwei Zahlen addiert </li></ul><ul><li>Implementiere ein Programm, das den Wert des ersten Feldes in das zweite Feld kopiert </li></ul>

×