190 likes | 351 Views
Visualisierung funktionaler Programme. Ljudmila Nekrasova. Inhalt. Einleitung Ansätze der Visualisierung Abarbeitung imperativer Programme Abarbeitung funktionaler Programme Visualisierung funktionaler Programme Auswertung funktionaler Programme Ersetzungsstrategien
E N D
Visualisierung funktionaler Programme Ljudmila Nekrasova Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003
Inhalt • Einleitung • Ansätze der Visualisierung • Abarbeitung imperativer Programme • Abarbeitung funktionaler Programme • Visualisierung funktionaler Programme • Auswertung funktionaler Programme • Ersetzungsstrategien • Die von KIEL unterstützte Teilsprache von ML • Unterschiede zwischen Berechnungsregeln am Beispiel von Morris-Funktion mit Anwendung von KIEL • Visualisierung von Quicksort in KIEL • Zusammenfassung • Literatur Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003
Abarbeitung funktionaler Programme • Ein funktionales Programm besteht aus der Definition von einem oder mehreren Rechenvorschriften • Ausführung eines funktionalen Programms bedeutet Auswertung eines Ausdrucks. Ein Ausdruck bzw. Term ist ein gewisser Aufruf des Rechenvorschrifts, wobei die formalen Parameter durch die jeweiligen Argumente substituiert werden • Die Auswertung geschieht durch Termersetzung. Mit jedem Ersetzungsschritt wird der Ausdruck immer mehr bis zum seinen Wert reduziert. Also besteht die Auswertung aus einer Folge von Reduktionsschritten, die am Ende , wenn keine Reduktion mehr möglich ist, zum Ergebnis (Wert des Ausdrucks) führt. Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003
Visualisierung funktionaler Programme • Ein möglicher Ansatz der Visualisierung funktionaler Programme ist die Visualisierung der Termersetzung • Dazu wird ein Term als Baum dargestellt. Es wird also eine Graph-Repräsentation des Programms erstellt, die mittels Graph-Reduktion die Termersetzung nachbildet Beispiel: f ( x ) = (x + 1) * (x – 1 ) Die Auswertung des Terms f ( 4 ) Kann wie folgt dargestellt werden: @ * * f 4 + - 5 3 15 4 1 4 1 Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003
Visualisierung funktionaler Programme • Es gibt zwei Arten von Auswertung:strikteundnicht strikteAuswertung @ f x Funktion f wird auf Argument x angewandt • Strikte Auswertung: Das Argument x wird reduziert, bevor die Definition von f eingesetzt und weiter reduziert wird • Nicht-strikte Auswertung: Die Expansion der Definition von f, bevor das Argument x ausgewertet wird, kann unnötige Berechnungen ersparen. Ein Argument wird erst dann ausgewertet, wenn eine Funktion tatsächlich auf das Argument zugreifen muss Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003
Visualisierung funktionaler Programme Beispiel: nicht-strikte Funktion fac (x) = if x = 0 then 1 else x * fac(x – 1) fac (0) ist auszuwerten @ if @ = 1 f - 1 f 0 0 0 0 1 Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003
Auswertung funktionaler Programme • Die im Expansionsschritt zu expandierenden Rechenvorschriftsaufrufe werden von der gewählten Ersetzungsart (Ersetzungsstrategie) bestimmt • Es gibt mehrere Ersetzungsarten Sei t ein Ausdruck . Sei b der Auswertungsbaum zu t Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003
Auswertung funktionaler Programme • Leftmost-Outermost-Strategie stellt nicht-strikte Auswertung dar und Leftmost-Innermost - strikte Auswertung • Allgemein ist die Leftmost-Innermost-Ersetzung effizienter als Leftmost-Outermost–Strategie, da Argumentausdrücke durch das Einsetzen von verdoppelt und damit mehrfach ausgewertet werden Beispiel: Gegeben ist folgende Funktion: double (x) = x + x Wenn der Ausdruck double (fac (125)) nach Leftmost-Outermost-Strategie ausgewertet wird, dann erhalten wir folgenden Ausdruck fac ( 125) + fac (125) Also fac (125) muß doppelt ausgewertet werden Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003
Unterschiede zwischen Berechnungsregeln am Beispiel von Morris-Funktion mit Anwendung von KIEL Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003
Auswertung von Morris-Funktion nach der Leftmost-Innermost Strategie Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003
Auswertung von Morris-Funktion nach der Leftmost-Innermost Strategie Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003
Auswertung von Morris-Funktion nach der Leftmost-Outermost Strategie Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003
Quicksort Das Quicksort –Algorithmus wird in ML wie folgt rekursiv definiert: fun qsort (s: int list) : int list = if null(s) then s else qsort( le (s, hd (s))) @ eq (s, hd (s)) @ qsort (gr (s, hd (s)) ; Die Funktion qsort benutzt drei Hilfsfunktionen: fun le (s: int list, n : int) : int list = if null (s) then nil else if hd (s) < n then hd (s) :: le (tl (s), n) else le (tl (s), n) ; fun eq (s: int list, n : int) : int list = if null (s) then nil else if hd (s) = n then hd (s) :: eq (tl (s), n) else eq (tl (s), n) ; fun gr (s : int list, n : int) : int list = if null (s) then nil else if hd (s) > n then hd ( s) :: gr (tl (s), n) else gr (tl (s), n) ; Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003
Visualisierung von Quicksort in KIEL Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003
Visualisierung von Quicksort in KIEL Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003
Visualisierung von Quicksort in KIEL Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003
Visualisierung von Quicksort in KIEL Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003
Visualisierung von Quicksort in KIEL Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003
Literatur • Dr. Prof. Berghammer R. : KIEL Ein Computersystem zur Visualisierung der Auswertung von funktionalen Programmen. Inst. Für Informatik und Praktische Mathematik, Universität Kiel ( 1999) • Tiedt M. : Kiel interactive evaluation laboratory: Eine Arbeitsumgebung zur Visualisierung von Termersetzungssemantik. Diplomarbeit, Inst. Für Informatik und Praktische Mathematik,Universität Kiel (1999) • Dr. Hubwieser P. : Rekursion im didaktischen Querschnitt. Habilitationsvortrag (2000) • Koj J.: Eine graphische Programmierumgebung für deklarative Programmiersprachen. Diplomarbeit, Mathematisch-naturwissenschaftliche Fakultät der Rheinisch-Wesfälichen Technischen Hochschule Aachen (2000) Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003