Kommentar |
Die zukünftige Entwicklung großer Softwaresysteme setzt entsprechend Aufgabenspezifikation die Nutzung unterschiedlicher Programmierparadigmen innerhalb eines Softwaresystems voraus. Nach der Vermittelung der Grundkenntnisse in den ersten beiden Semestern soll der Studierende in dieser Veranstaltung vertiefte Kenntnisse in den besonderen Möglichkeiten der jeweiligen Programmierparadigmen erwerben und die den jeweiligen Sprachkonzepten zugrunde liegenden Realisierungskonzepte verstehen. Darüber hinaus soll die Fähigkeit erworben werden, zu beurteilen, in welcher Situation welche Sprachen sinnvoll eingesetzt werden können. Neben der vorstellung Sprach- und Paradigmenspezifischer Themen wird daher auch ausgehend von konkreten Fragestellungen, versucht, die Unterschiede zwischen den einzelnen Paradigmen und ihren Einfluss auf die Programmentwicklung abzuleiten. Wo sinnvoll, wird dies anhand konkreter Anwendungsprobleme dargestellt. |
Literatur |
• Mitchell J C. Concepts in Programming Languages, Cambridge University Press, 2002. • Forbrig P, Kerner I O (Hrsg.) Programmierung, Paradigmen und Konzepte, Hanser Verlag 2005 • Sebesta R W. Concepts of Programming Languages, Addison Wesley, 5. Auflage, 2002 • Louden K C. Programmiersprachen Grundlagen Konzepte Entwurf (Original in Englisch), Inter. Thomson Publ., 1994 • Cezzar R. A Guide to Programming Languages Overview and Comparison Artech House, 1995 |
Lerninhalte |
Lehrinhalte Das Module “Paradigmen der Programmierung“behandelt ausgewählte Kapitel zu den grundlegenden Programmierparadigmen, in denen vertiefte Kenntnisse der Konzepte vermittelt werden, die aktuellen Programmiersprachen zugrunde liegen. Darüber hinaus wird die Fähigkeit vermittelt, ausgehend von einem gegebenen Anwendungsproblem das geeignete Sprachparadigma für die algorithmische Lösung zu identifiziern. Inhalte • Funktionale Programmierung – Typinferenz – Softwaretechnik: Polymorphie, Typklassen – Streams, Monaden und Continuations – Ausführung funktionaler Programme: G-Maschinen – Optimierung in funktionalen Programmen • Imperative / Objektorientierte Programmierung – Softwaretechnik: Modularisierung und Objekte – Kontrollstrukturen in Sequentiellen Programmen – Parallele Programme – Objektsysteme, z.B. CLOS – Call by Name, Closures; anonyme Klassen in Java • Logische Programmierung – Theorembeweiser, Higher-Order-Systeme • Allgemeine Themen – Gültigkeitsbereiche und Speichermanagement – Sprachenbasierte Sicherheit • Regelbasierte Programmierung – Produktionssysteme – RETE-Algorithmus – Konfliktlösungsstrategien • Spezielle Sprachmodelle – Tuple Spaces (LINDA, ...) – Actor Languages – Verteilte Sprachen (Obliq, ...) • Skriptsprachen (Unix Shell, Perl, PHP, etc.) • Dynamische Sprachen (Self, NewtonScript , Smalltalk, LISP...) |