Nächste Seite:
Einleitung
Prinzipien von Programmiersprachen
Vorlesung
Wintersemester 2007
Johannes Waldmann, HTWK Leipzig
Einleitung
Inhalt
Organisation
Literatur
Übungen
Ausführungsarten
Struktur eines Übersetzers
Übung: Beispiele für Übersetzer
Syntax von Programmiersprachen
Daten-Repräsentation im Compiler
Token-Typen
Formale Sprachen
Formale Sprachen: Chomsky-Hierarchie
Grammatiken
Wort-Ersetzungs-Systeme
Typ-3-Grammatiken
Sätze über Reguläre Sprachen
Reguläre Sprachen/Ausdrücke
Beispiele/Aufgaben zu regulären Ausdrücken
Übungen Reg. Ausdr.
Kontextfreie Sprachen
(erweiterte) Backus-Naur-Form
Ableitungsbäume für CF-Sprachen
Ableitungsbäume (II)
Eindeutigkeit
Assoziativität
Präzedenzen
Übungen
Semantik von Programmiersprachen
Statische und dynamische Semantik
Attributgrammatiken
Attributgrammatiken-Beispiele
Regeln zur Typprüfung
Ausdrücke
Kellermaschine
Dynamische Semantik
Bsp: Operationale Semantik
Axiomatische Semantik
Axiom für Schleifen
Denotationale Semantik
Beispiel: Semantik von Unterprogr.
Übungen (Coderzeugung)
Übungen (Invarianten)
Bezeichner, Bindungen, Bereiche
Variablen
Namen
Typen für Variablen
Konstanten
Lebensort und -Dauer von Variablen
Sichtbarkeit von Namen
Überdeckungen
Statische und dynamische Sichtbarkeit
Sichtbarkeit und Lebensdauer
Typen
Warum Typen?
Historische Entwicklung
Überblick
Aufzählungstypen
Keine Aufzählungstypen
Aufzählungstypen in C
Aufzählungstypen in Java
Teilbereichstypen in Ada
Abgeleitete Typen in Ada
Zusammengesetzte Typen
Produkttypen (Records)
Summen-Typen
Potenz-Typen
Felder (Arrays)
Felder in C
Felder in Java
Nicht rechteckige Felder in C?
Dynamische Feldgrößen
Zeiger- und Verweistypen
Zeiger (pointer) in C
Verweise (references) in C++
Zeiger/Verweise in Java?
Probleme mit Zeigern
Aliasing
Automatische Freigabe
Verweiszähler
Markierende Kollektoren
Kopieren/Kompaktieren
Generationen usw.
Übung GC
Ausdrücke
Definitionen
Designfragen für Ausdrücke
Syntax von Konstanten
Der Plus-Operator in Java
Implizite/Explizite Typumwandlungen
Explizite Typumwandlungen
Der Verzweigungs-Operator
Verzweigungs-Operator(II)
Der Zuweisungs-Operator
Ausdrücke mit Nebenwirkungen
Reihenfolge von Nebenwirkungen
Relationale Operatoren
Logische (Boolesche) Ausdrücke
Noch mehr Quizfragen
Anweisungen
Programm-Ablauf-Steuerung
Blöcke
Verzweigungen (zweifach)
Mehrfach-Verzweigung
Switch/break
Kompilation
Wiederholungen
Schleifen steuern durch...
Zählschleifen
Schleifen mit Bedingungen
Abarbeitung von Schleifen
Geschachtelte Schleifen
Sprünge
Sprünge und Schleifen
Sprünge und Schleifen (Beweis)
Schleifen und Unterprogramme
setjmp/longjmp in C
Was ist hier los?
Unterprogramme
Grundsätzliches
Beispiele für Unterprogramme (Funktionen)
Argumente/Parameter
Positionelle/benannte Argumente
Default-Werte
Variable Argumentanzahl (C)
Variable Argumentanzahl (Java)
Semantik von Unterprogrammen
Typprüfungen
Generische Polymorphie
Das Überladen von Namen
Parameter-Übergabe (Semantik)
Parameter-Übergabe (Implementierungen)
Parameterübergabe
Aufgaben zu Parameter-Modi (I)
Aufgaben zu Parameter-Modi (II)
Resultate der Umfrage zur Vorlesung
Aspekte Funktionaler Programmierung
Warum sind Funktionen wichtig?
Übersicht
Funktionen als Daten
Funktionen als Daten (II)
Typsysteme
Deklarative Programmierung
Eifrige (eager) Auswertung
Bedarfs-Auswertung (faul, lazy)
Unendliche Datenstrukturen
Producer/Transformer/Consumer
Programmtransformationen
Fktl. Modellierg. von Zustandsänderungen
Zusammenfassung
Nebenläufige Programme
Einleitung
Nebenläufige Unterprogramme
Shop-Simulation
Shop-Simulation (II)
Ziele der Synchronisation
Synchronisation durch Semaphore
Semaphore (II)
Fünf Philosophen
Gefahr 1: Deadlock (Verklemmen)
Gefahr 2: Unfairness (Verhungern)
Deadlock?
Eine Gabel (im Prinzip)
Ein Philosoph (im Prinzip)
Das Hauptprogramm
Eine Gabel (genauer)
Eine Gabel (wait/notify)
Synchrone Kommunikation (Rendezvous)
Rendezvous (II)
Datentransport durch Kanäle
Kanäle (Beispiel)
Abstraktion und Kapselung
Einleitung
Polymorphie
Sichtbarkeiten
Information verstecken
Attribute in C#
Klassen, Interfaces
Algebraische Spezifikation
Signaturen, Algebren
Axiome, Modelle, Theorien
Mehrsortiger Signaturen/Algebren
Mehrsortig ...Beispiel
Eingeschränkte Polymorphie
Strategie-Muster
Interfaces benutzen
Namen (Designfragen)
Polymorphie
Übersicht
Dynamische Polymorphie (OO)
Equals richtig implementieren
Equals richtig implementieren (II)
Generische Polymorphie
Generische Polymorphie (Implement.)
Typinformation zur Laufzeit
Einschätzung
Generics und Subtypen
Generics und Subtypen (II)
Generics und Arrays
Generics und Arrays (II)
Anonyme Typen (Wildcards)
Anonyme Typen (Wildcards) (II)
Schranken für Typparameter
Wildcards und Bounds
Aufzählungstypen
Über dieses Dokument ...
Johannes Waldmann 2008-01-23