Kernel-Architekturen in Programmiersprachen

Kurzame
Kernel-Arch. in Progr.sp.
Modulnummer
CS5341
Modulverantwortlicher
  • Dominikus Herzberg
Dozent
  • Dominikus Herzberg
Kurzbeschreibung

Untersuchung kernel-basierter Programmiersprachen aus Sicht der Softwaretechnik.

Qualifikations- und Lernziele

Die Studierenden des Moduls lernen kernel-basierte Programmiersprachen kennen, sie analysieren und durchdringen ihren Aufbau. Anhand von Fallstudien verstehen sie die verwendeten. Abstraktionsmechanismen und das Prinzip der Bildung von Sprachschichten. Im Rahmen einer Hausübung bzw. eines Projekts reflektieren die Studierenden Beziehungen zwischen verschiedenen Kernel-Architekturen, sie entwickeln eigene Fragestellungen und bearbeiten diese nach wissenschaftlichen Methoden.

Die Studierenden können fachübergreifende Diskussionen führen und den Stand der Technik sachlich verargumentieren. Sie beherrschen eine anwendungs- und forschungsorientierte Arbeitsweise.

Lerninhalte

Es gibt eine Reihe von Programmiersprachen, die aus einem kleinen Sprachkern bestehen und über Abstraktionsmechanismen und Sprachschichten zu mächtigen Sprachen ausgebaut werden. Beispiele für Kernel-Sprachen sind Lua, Julia, Io, Smalltalk, Shen und Prolog. Viele dieser Sprachen sind interaktiv und hochgradig reflektiv, einige sind mit Fähigkeiten zur Metaprogrammierung ausgestattet. Nicht selten greifen KernelSprachen Paradigmen abseits imperativer Programmierung auf, was sie besonders interessant macht.

In dieser Veranstaltung wird untersucht, wie solche Sprachen aufgebaut sind, welche softwaretechnischen Prinzipien angewendet werden, ob eine Sprache zum Bau großer Softwaresysteme geeignet ist, und in welcher Weise das gewählte Programmierparadigma für den Bau großer Softwaresysteme skaliert. Die Veranstaltung beginnt mit der Analyse der Sprachen Forth, Consize und Factor. Wahlweise werden diese Sprachen vertieft oder ergänzend weitere Sprachen untersucht.

Moduldauer (Semester)
1
Unterrichtssprache
Deutsch
Gesamtaufwand
6 CrP; 180 Stunden, davon etwa 60 Stunden Präsenzzeit.
Semesterwochenstunden
4
Lernformen

Seminaristischer Unterricht (2SWS), Praktikum (2SWS)

Geprüfte Leistung

Prüfungsvorleistung: eine oder mehr Hausübungen (Anzahl wird den Studierenden rechtzeitig und in geeigneter Weise bekannt gegeben)

Prüfung: Projektarbeit

Bewertungsstandard

Bewertung der Prüfungsleistung nach § 9 der Prüfungsordnung (Teil I)

Häufigkeit des Angebots
Einmal im Jahr
Literatur
  • Brodie, Leo: Thinking Forth, Punchy Publishing, http://thinking-forth.sourceforge.net/ (Zugriff am 13. Apr. 2015)
  • JonesForth, siehe http://rwmj.wordpress.com/2010/08/07/jonesforth-gitrepository/ (Zugriff am 13. Apr. 2015)
  • Herzberg, Dominikus: Konkatenative Programmierung mit Consize, Vorlesungsmanuskript, 4. Feb. 2014
  • Pestov, Sviatoslav; Ehrenberg, Daniel: Factor: a dynamic stack-based programming language. Not. (ACM) 45 (12):43–58. doi:10.1145/1899661.1869637
  • Black, Andrew P. et al.: Squeak by Example, Square Bracket Publishing, http://squeakbyexample.org/ (Zugriff am 13. Apr. 2015)
  • Jeff Bezanson, Stefan Karpinski, Viral B. Shah, Alan Edelman: Julia: A Fast Dynamic Language for Technical Computing, arXiv:1209.5145
  • Tarver, Mark: The Book of Shen, 2nd Ed., Fast-Print Bookshop
Verwendbarkeit des Moduls

Wahlpflichtmodul: Master Informatik