Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Types and Programming Languages: Einführung Typen SWT Seminar WS 05/06 Linda Schmuhl Manuel Aldana Dozenten: Florian Kammüller, Matthias Vösgen.

Ähnliche Präsentationen


Präsentation zum Thema: "Types and Programming Languages: Einführung Typen SWT Seminar WS 05/06 Linda Schmuhl Manuel Aldana Dozenten: Florian Kammüller, Matthias Vösgen."—  Präsentation transkript:

1 Types and Programming Languages: Einführung Typen SWT Seminar WS 05/06 Linda Schmuhl Manuel Aldana Dozenten: Florian Kammüller, Matthias Vösgen

2 Gliederung 1.Typisierung arithmetische Ausdrücke 2.Einfach getypter lambda-Kalkül 3.Typlöschung 4.Zusammenfassung/Fragen

3 Typisierung arithmetische Ausdrücke

4 Vorteile der Typisierung Fehlererkennung –Flüchtigkeitsfehler (vergessener Cast) –Konzeptuelle Fehler (komplexe Fallunterscheidungen) Wartung –Änderungen in den Datenstrukturen führen zu erwünschten Inkonsistenzen Dokumentation –insbesondere in verwendeten Interfaces Effizienz –weniger Checks zur Laufzeit notwendig

5 Syntax untypisierter arithmetischer Ausdrücke Evaluationt -> t if true then t2 else t3 -> t2E-IF-TRUE if false then t2 else t3 -> t3E-IF-FALSE t1 -> t1E-IF if t1 then t2 else t3 -> if t1 then t2 else t3 t1 -> t1 E-SUCC succ t1 -> succ t1 pred 0 -> 0E-PRED-ZERO pred (succ nv1) -> nv1E-PRED-SUCC t1 -> t1 E-PRED pred t1 -> pred t1 iszero 0 -> trueE-ISZERO-ZERO iszero (succ nv1) -> falseE-ISZERO-SUCC t1 -> t1 E-ISZERO iszero t1 -> iszero t1 Syntax t ::=Terme trueKonstante true falseKonstante false if t then t else tKonditional 0Konstante Null succ tNachfolger pred tVorgänger iszero tNull-Test v ::=Werte truetrue-Wert falsefalse-Wert nvnumerischer Wert nv ::= numerische Werte 0Wert 0 succ nvNachfolger-Wert

6 Probleme untypisierter Terme iszero (if true then 0 else succ 0) succ if iszero (succ 0) then false else true These: Evaluierung eines Terms führt immer zu einem Wert. Stuck State: Term ist in Normalform, aber noch kein Wert erreicht

7 Idee der Typisierung zugeordnet, = Typen KlassenTermen werden die ihr Evaluierungsergebnis charakterisieren = Typisierungsrelation t : T t ist vom Typ T Bedeutung: Es ist ohne Notwendigkeit einer Evaluierung ersichtlich, dass der Term zu einem Ergebnis dieses Typs führt.

8 Erweiterung der Syntax arithmetischer Ausdrücke Syntax t ::=Terme trueKonstante true falseKonstante false if t then t else tKonditional 0Konstante Null succ tNachfolger pred tVorgänger iszero tNull-Test T ::= Typen BoolTyp der booleschen Ausdrücke NatTyp der natürlichen Zahlen v ::=Werte truetrue-Wert falsefalse-Wert nvnumerischer Wert nv ::= …

9 Erweiterung der Syntax arithmetischer Ausdrücke II Evaluationsregelnt -> t if true then t2 else t3 -> t2E-IF-TRUE if false then t2 else t3 -> t3E-IF-FALSE … Typisierungsregeln true : BoolT-TRUE false : BoolT-FALSE t1 : Bool t2 : T t3 : TT-IF if t1 then t2 else t3 : T 0 : NatT-ZERO t1 : Nat T-SUCC succ t1 : Nat t1 : Nat T-PRED pred t1 : Nat t1 : NatT-ISZERO iszero t1 : Bool

10 Wohlgeformter Term Definition: Ein Term t ist typisierbar oder wohlgeformt (well-typed), wenn es unter Berücksichtigung der Typisierungsregeln einen Typen T gibt, sodass gilt: t : T Konsequenz: Für jeden Term kann vor der Evaluierung, also zur Compile-Zeit, entschieden werden, ob er wohlgeformt ist und wenn ja, welchem Typen er zugeordnet werden kann.

11 Ableitungsbäume aus den Typinformationen seiner Subterme kann eindeutig auf den Typen des Terms selbst geschlossen werden genau ein Ableitungsbaum pro wohlgeformtem Term

12 Typcheck: Positives Beispiel iszero (if true then 0 else succ 0) (Ableitungsbaum siehe Tafel)

13 Typcheck: Negatives Beispiel succ if iszero (succ 0) then false else true (Ableitungsbaum siehe Tafel)

14 Sicherheit von Typsystemen Garantie, dass wohlgeformte Terme während ihrer Evaluation niemals in einen Stuck State führen Eigenschaft der Wohlgeformtheit reicht als Aussage, dass dieser Term zur Laufzeit keinen Typ-Fehler erzeugen wird Sicherheit = Progress + Preservation

15 Progress Ein wohlgeformter Term ist niemals in einem Stuck State. Term t Wertt -> t

16 Preservation Ein wohlgeformter Term bleibt auch nach Anwendung einer Evaluierungsregel wohlgeformt. t : T und t t, so gilt t : T

17 Einfach getypter Lambda-Kalkül

18 Motivation Typen für arithmetische Ausdrücke kennengelernt Ziel: Typcheck verhindert Stuck State zur Laufzeit Stuck-State: Term=Normalform + Wert Gleiches soll für den lambda Kalkül eingeführt werden

19 Vorgehensweise Einführung Typcheck für lambda-Kalkulus Vorgehensweise wie bei arithm. Ausdrücken: Term SyntaxTyp-Regeln TermTypcheck Abstrakte Ebene Konkrete Ebene verwendet befolgt checkt

20 Wiederholung (kurz) Lambda Kalkül stellen Funktionen dar, die Eingänge als Variablen enthalten und miteinander komponiert werden können Drei einfache Konstrukte: 1.Variablen 2.Abstraktion 3.Applikation

21 Syntax Erweiterung: Funktions-Typ Lambda-Ausdrücke repräsentieren Funktionen Idee Einführung einfacher Funktions-Typ: Funktions-Typ der Beispiel-Terme: Einfacher Funktions-Typ nicht mächtig genug…

22 Funktions-Typ Typ-Definition (wie wird Typ zusammengestzt) : Typ-Relation (wie wird einem Term ein Typ zugeordnet) : Typ-Urteil (wie werden gebundenen Variablen Typen zugeordnet) : MengeTyp-Urteil auf Term Erweiterung Typ-Urteil

23 Typ-Regeln Typchecker verwendet Typ-Regeln Pro lambda-Konstrukt eine Typ-Regel 1)Variablen Typ-Regel: 2)Abstraktion Typ-Regel: 3)Applikation Typ-Regel:

24 Typcheck Beispiel Beispiele eines Typchecks auf lambda-Ausdrücke TypdefinitionTyp-Regeln

25 Typcheck Ergebnis ist wohlgeformt ist nicht wohlgeformt Beispiele (Ableitungsbaum siehe Tafel): 1) 2)

26 Typlöschung

27 Löschen von Typinformationen Typ-Informationen sind für Evaluierung irrelevant Typ-Informationen stellen Overhead dar und können gelöscht werden Typ-Information über Typ-Rekonstruktion wieder herstellbar

28 Zusammenfassung Vorgestellt wurde statische Typisierung von arithmetischen und lambda-Ausdrücken Term-Typisierung realisiert über Typ-Syntax Term-Typcheck realisiert über Typ-Regeln Typisierung + Typcheck verhindert Fehlerklasse Stuck- State Typsicherheit-Beweis über Eigenschaften Progress und Preservation

29 Fragen an Euch :) Kann ein Term typsicher sein? Warum sollten Normalformen aus Werten bestehen? Positive/Negative Erfahrung mit nicht-statischer Typisierung (meist Skriptsprachen)?


Herunterladen ppt "Types and Programming Languages: Einführung Typen SWT Seminar WS 05/06 Linda Schmuhl Manuel Aldana Dozenten: Florian Kammüller, Matthias Vösgen."

Ähnliche Präsentationen


Google-Anzeigen