Seminar Esoterische Programmiersprachen (SS 2010)
Ziele der Veranstaltung
Ziel des Seminars ist es, den Studierenden die Konzepte und Technologien so genannter "esoterischer Programmiersprachen" zu vermitteln. Esoterische Programmiersprachen sind Programmiersprachen, die nicht primär für den praktischen Einsatz entwickelt wurden, sondern ungewöhnliche Sprachkonzepte umsetzen. Sie reizen mit spektakulären und zuweilen sogar genialen Ideen, wie dem kleinstmöglichen Compiler, einer Arithmetik ohne Plus, Mal, Durch und Minus, dem kleinsten Symbolvorrat oder sogar der Unsichtbarkeit der Programme. Mit Esoterik im umgangssprachlichen Sinn haben "esoterische Programmiersprachen" allerdings nichts zu tun.
Die Beschäftigung mit esoterischen Programmiersprachen kann zu tieferem Verständnis seriöser Programmiersprachen sowie zur Verbesserung strukturellen Denkens führen. Abhängig vom verfolgten Konzept können esoterische Programmiersprachen Konzepte für Sprachdesign und/oder Systemdesign demonstrieren.
Inhalte der Veranstaltung
Im Seminar werden wir uns unter anderem mit folgenden esoterischen Programmiersprachen auseinandersetzen:
- False: Turing-vollständige Programmiersprache mit einer verwirrenden Syntax und einem sehr kleinen Compiler.
- Brainfuck: Programmiersprache mit einem Befehlssatz von lediglich 8 Symbolen und einem winzigen Compiler.
- Befunge: Erlaubt das Schreiben 2-dimensionaler, sich selbst modifizierender Programme.
- Whitespace: Whitespace-Programme bestehen aus nicht sichtbaren Zeichen, sind also unsichtbar.
- Intercal: Programmiersprache mit dem Ziel, Programmieren schwierig zu gestalten und die entstehenden Programme effektiv unlesbar zu machen.
- Shakespeare: Programme, die so aussehen, wie Dramen von William Shakespeare, und derem typischen Aufbau folgen.
- Flip: Eine Programmiersprache, der man bei der Arbeit zusehen kann.
- Piet: Programme bestehen aus abstrakten Bildern
- Unlambda: Funktionale Programmiersprache auf Basis des Lambda-Kalküls, die aber den Lambda-Operator nicht berücksichtigt.
Links
|