Visualisierung funktionaler Programme
description
Transcript of Visualisierung funktionaler Programme
Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003
1
Visualisierung funktionaler Programme
Ljudmila Nekrasova
Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003
2
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
3
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
4
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 nachbildetBeispiel:f ( x ) = (x + 1) * (x – 1 )Die Auswertung des Termsf ( 4 )Kann wie folgt dargestellt werden: @ * *
f 4 + - 5 3 15
4 1 4 1
Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003
5
Visualisierung funktionaler Programme Es gibt zwei Arten von Auswertung: strikte und nicht strikte
Auswertung @
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
6
Visualisierung funktionaler Programme
Beispiel: nicht-strikte Funktionfac (x) = if x = 0 then 1else 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
7
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
Ersetzungsart Zu expandierende Rechenvorschriftsaufrufe Leftmost-Innermost {r | r ist bei einem Tiefensuchedurchlauf in b
der erste Rechenvorschriftsknoten, der keine Rechenvorschtriftsknoten als Nachkommen hat }
Leftmost-Outermost {r | r ist bei einem Tiefensuche-Durchlauf in b
der erste Rechenvorschriftsknoten }
Full {r | r ist Rechenvorschriftsknoten in b }
Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003
8
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
9
Unterschiede zwischen Berechnungsregeln am Beispiel von Morris-Funktion mit Anwendung von KIEL
Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003
10
Auswertung von Morris-Funktion nach der Leftmost-Innermost Strategie
Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003
11
Auswertung von Morris-Funktion nach der Leftmost-Innermost Strategie
Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003
12
Auswertung von Morris-Funktion nach der Leftmost-Outermost Strategie
Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003
13
QuicksortDas 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
14
Visualisierung von Quicksort in KIEL
Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003
15
Visualisierung von Quicksort in KIEL
Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003
16
Visualisierung von Quicksort in KIEL
Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003
17
Visualisierung von Quicksort in KIEL
Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003
18
Visualisierung von Quicksort in KIEL
Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003
19
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)