Esoterische Programmiersprachen blar
Upcoming SlideShare
Loading in...5
×
 

Esoterische Programmiersprachen blar

on

  • 810 views

ert

ert

Statistics

Views

Total Views
810
Views on SlideShare
810
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 blar Esoterische Programmiersprachen blar Presentation Transcript

  •  
  • 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