Your SlideShare is downloading. ×
0
esolang
esolang
esolang
esolang
esolang
esolang
esolang
esolang
esolang
esolang
esolang
esolang
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

esolang

345

Published on

esoterische programmiersprachen

esoterische programmiersprachen

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

  • Be the first to like this

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

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1.  
  • 2. 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
  • 3. 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
  • 4. 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
  • 5. Beispiele
  • 6. 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: ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.
  • 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 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

×