Esoterische Programmiersprachen
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Esoterische Programmiersprachen

on

  • 1,383 views

 

Statistics

Views

Total Views
1,383
Views on SlideShare
1,383
Embed Views
0

Actions

Likes
0
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Esoterische Programmiersprachen Presentation Transcript

  • 1. Esoterische Programmiersprachen
  • 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