392139 Implementierung funktionaler Programmiersprachen (S) (WiSe 2003/2004)

Short comment

Contents, comment

In dieser Veranstaltung soll ein Compiler für eine funktionale Programmiersprache entwickelt werden. Hierbei orientieren wir uns an der Programmiersprache Haskell. Die im Seminarteil erarbeiteten theoretischen Grundlagen sollen dabei im Übungsteil in die Praxis umgesetzt werden.

Die typische Vorgehensweise beim Übersetzen einer funktionalen Programmiersprache ist folgende:

  • Übersetzen der syntaktisch reichen Ausgangssprache in eine einfache Kernsprache ("core language"). Diese Kernsprache ist sehr simpel gehalten, und daher relativ einfach zu implementieren. Gleichzeitig bietet sie aber die volle Leistungsfähigkeit der Ausgangssprache. Beispielweise lassen sich if-then-else Ausdrücke, Wächter und Pattern Matching auch durch case-Konstrukte ausdrücken.
  • Übersetzen der Kernsprache in Programmcode für eine abstrakte Zielmaschine. Hier gab es in der Vergangenheit eine Reihe von Entwicklungen, u.a. die Three Instruction Machine (TIM) und die G-Machine mit ihren Varianten (Spineless G-Machine und Spineless Tagless G-Machine (STGM)). Die im Haskell-Compiler GHC verwendete abstrakte Maschine ist die STGM.
  • Übersetzen des Codes für die abstrakte Maschine in konkreten Maschinencode. Hier wird üblicherweise C als eine Art "High-level-Assembler" verwendet. Da es für fast alle denkbaren Architekturen einen C Compiler gibt, hat diese Vorgehensweise den Vorteil, dass man die erzeugten Programme ohne Umwege auf einer Vielzahl von Rechnerarchitekturen verwenden kann.

Die einzelnen Phasen der Übersetzung sollen in Kleingruppen bearbeitet werden, so dass am Ende ein möglichst vollständiger Übersetzer von einer funktionalen Programmiersprache nach C vorliegt. Beginnen wollen wir in dieser Veranstaltung mit der Übersetzung der Kernsprache. Je nach Teilnehmerzahl können aber auch zusätzliche höhere Sprachkonstrukte (z.B. Pattern Matching, Listenbeschreibungen) hinzugenommen werden.

Entsprechend dem Thema der Veranstaltung, soll der Übersetzer selbst in einer funktionalen Sprache entwickelt werden. Hier bietet sich natürlich Haskell an.

Requirements for participation, required level

Das Seminar und die Übung bauen direkt aufeinander auf, daher ist eine Teilnahme an beiden Veranstaltungen erforderlich.

Bibliography

  • Simon L. Peyton Jones, David R. Lester

Implementing Functional Languages
Prentice Hall, 1992

  • Simon L. Peyton Jones

The Implementation of Functional Programming Languages
Prentice-Hall, 1987

  • Brian W. Kernighan, Dennis M. Ritchie

The C Programming Language. 2. ed.
Prentice Hall, 1988

External comments page

http://www.techfak.uni-bielefeld.de/ags/pi/lehre/W03.html#392139

Teaching staff

Dates ( Calendar view )

Frequency Weekday Time Format / Place Period  

Show passed dates >>

Subject assignments

Degree programme/academic programme Validity Variant Subdivision Status Semester LP  
Naturwissenschaftliche Informatik / Diplom (Enrollment until SoSe 2004) PSÜ   HS

No more requirements
No eLearning offering available
Registered number: 0
This is the number of students having stored the course in their timetable. In brackets, you see the number of users registered via guest accounts.
Address:
WS2003_392139@ekvv.uni-bielefeld.de
This address can be used by teaching staff, their secretary's offices as well as the individuals in charge of course data maintenance to send emails to the course participants. IMPORTANT: All sent emails must be activated. Wait for the activation email and follow the instructions given there.
If the reference number is used for several courses in the course of the semester, use the following alternative address to reach the participants of exactly this: VST_1075820@ekvv.uni-bielefeld.de
Coverage:
No students to be reached via email
Notes:
Additional notes on the electronic mailing lists
Last update basic details/teaching staff:
Friday, December 11, 2015 
Last update times:
Wednesday, October 8, 2003 
Last update rooms:
Wednesday, October 8, 2003 
Type(s) / SWS (hours per week per semester)
seminar (S) / 2
Department
Faculty of Technology
Questions or corrections?
Questions or correction requests for this course?
Planning support
Clashing dates for this course
Links to this course
If you want to set links to this course page, please use one of the following links. Do not use the link shown in your browser!
The following link includes the course ID and is always unique:
https://ekvv.uni-bielefeld.de/kvv_publ/publ/vd?id=1075820
Send page to mobile
Click to open QR code
Scan QR code: Enlarge QR code
ID
1075820