Prinzipien von Programmiersprachen

Sommersemester 2012
Arbeitsgruppe Programmiersprachen und Übersetzerkonstruktion

Nr. Art Termine Raum Veranstalter
080080 V4 Di 8:15 - 9:45 LMS2 - R.Ü1 Hanus
    Do 10:15 - 11:45 LMS2 - R.Ü1  
080075 Ü2 Mi 14:00-16:00 LMS2 - R.Ü3 Reck

Vorlesungsbeginn

Dienstag, 10.4.2010, 8:15 Uhr, LMS2 - R.Ü1

Zielgruppe

Studierende im Masterstudiengang Informatik oder im Hauptstudium des Studiengangs Diplominformatik sowie Studierende mit Nebenfach Informatik

Voraussetzungen

Grundstudium (1.-4. Semester) in Informatik

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 muss das Programm so geschrieben sein, dass es verständlich und damit wartbar ist, und es muss auch an neue Anforderungen leicht anpassbar 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 Studierenden 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 (iLearn)

Literatur

Skript

Die hier zur Verfügung gestellte Skript ist kein Ersatz für die Vorlesungsteilnahme, aber eventuell eine gute Unterstützung. Wer darin keine Fehler entdeckt, hat bestimmt nicht ordentlich gelesen. Es wäre es schön, wenn Fehler an Michael Hanus mitgeteilt werden.

Haskell

Dateien mit Haskell-Programmen tragen die Endung .hs und können im Interpreter mit dem Kommando

:load 

geladen werden. Auf den Uni-Rechnern stehen Ihnen dazu Hugs oder der Glasgow Haskell Compiler zur Verfügung, die Sie mit

/home/haskell/bin/hugs

beziehungsweise

/home/haskell/bin/ghci

starten können. Weitere Informationen finden Sie auf der Haskell Seite des Instituts. Beide Systeme sind frei verfügbar. Wer die Programmieraufgaben lieber zuhause löst, kann sich eines von ihnen auf seinem eigenen Rechner installieren.

Prolog

Dateien mit Prolog-Programmen sollten klein geschrieben sein und die Endung .pl haben. Sie können dann mittels

?- [Programmname ohne Endung].

in den Interpreter geladen werden. Auf den Uni-Rechnern steht Ihnen dazu das SICStus Prolog System zur Verfügung, dass Sie mit

/home/prolog/bin/sicstus

aufrufen können. Weitere Informationen finden Sie auf der Prolog Seite des Instituts. SICStus Prolog ist leider nicht Open Source. Wenn Sie Prolog auf Ihrem eigenen Rechner installieren möchten, können Sie SWI Prolog oder GNU Prolog verwenden.


Michael Hanus