Your SlideShare is downloading. ×
0
 
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...
Upcoming SlideShare
Loading in...5
×

Esoterische Programmiersprachen blar

578

Published on

ert

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
578
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "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>
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×