Prinzipien von Programmiersprachen

Sommersemester 2001
Lehrstuhl für Programmiersprachen und Übersetzerkonstruktion
Hauptstudium

Nr.ArtTermineRaumVeranstalter
8101V4Mo 11:45 - 13:15Sem-Ü1M. Hanus
  Do 10:00 - 11:30Sem-Ü1 
8095Ü2Mi 16:00 - 18:00Sem-Ü2M. Hanus, K. Höppner

Zielgruppe

Studierende im Hauptstudium beider Informatik-Studiengänge (Dipl.-Inf. und Dipl.-Ing.) sowie Studierende mit Nebenfach Informatik

Voraussetzungen

Grundstudium

Inhalt

In dieser Vorlesung werden grundlegende Prinzipien heutiger Programmiersprachen vorgestellt. Dabei steht die praktische Anwendung von Sprachkonzepten zur Lösung von Softwareproblemen im Vordergrund.

Bei der Programmierung kommt es weniger darauf an, irgendein Programm zu schreiben, das eine gegebene Aufgabe löst. Vielmehr muß das Programm so geschrieben sein, daß es verständlich und damit wartbar ist, und es muß auch an neue Anforderungen leicht anpaßbar sein. Daher ist es wichtig, die für die Problemstellung geeigneten Programmiersprachen und Sprachkonstrukte zu verwenden. Leider gibt es nicht die für alle Probleme gleich gut geeignete universelle Programmiersprache. Daher ist es wichtig zu wissen, welche Sprachkonzepte für welche Problemstellungen geeignet sind. Diese Vorlesung soll hierzu einen Beitrag leisten, indem ein Überblick über wichtige Sprachkonzepte moderner Programmiersprachen gegeben wird. Dadurch werden die Studentinnen und Studenten in die Lage versetzt, sich einerseits schnell in unbekannte Programmiersprachen einzuarbeiten (da viele Konzepte in den verschiedenen Sprachen immer wieder vorkommen), andererseits sollen sie verschiedene Sprachen und Sprachkonzepte aufgrund ihrer Eignung für ein Softwareproblem kritisch beurteilen können.

Kurzübersicht

  1. Grundlagen (Syntax- und Semantikbeschreibung, abstrakte Datentypen, Ausdrücke, Deklarationen, Bindungen, Blockstruktur)
  2. Imperative Sprachen (Variablen, Datentypen, Kontrollabstraktion, Ausnahmebehandlung, Prozeduren)
  3. Sprachmechanismen zur Programmierung im Großen (Module, Schnittstellen, Objekte, Vererbung, Generizität)
  4. Funktionale Programmiersprachen (referentielle Transparenz, Funktionen höherer Ordnung, Auswertungsstrategien, Typsysteme)
  5. Logische Programmiersprachen (Resolution, Unifikation, Constraints, Datenbanksprachen)
  6. Sprachkonzepte zur nebenläufigen und parallelen Programmierung (Synchronisationskonzepte, Semaphore, Monitore, Message passing, Linda, CCP)

Die begleitenden praktischen Übungen werden überwiegend in der Sprache Java durchgeführt, jedoch kommen auch andere Sprachen wie z.B. Haskell oder Prolog zum Einsatz.

Informationen zu den Übungen

Literatur


Michael Hanus