VU Software Paradigmen 716.060 / SS 2011

36
Institute for Software Technology VU Software Paradigmen 716.060 / SS 2011 Alexander Felfernig Institut für Softwaretechnologie [email protected]

description

VU Software Paradigmen 716.060 / SS 2011. Alexander Felfernig Institut für Softwaretechnologie [email protected]. Lehrziele. Vermittlung von einführenden Kenntnissen des Compilerbaus (Analyse der Programmsyntax) und der Ausführungskonzepte von Programmiersprachen (Semantik) - PowerPoint PPT Presentation

Transcript of VU Software Paradigmen 716.060 / SS 2011

Institute for Software Technology

VU Software Paradigmen716.060 / SS 2011

Alexander FelfernigInstitut für Softwaretechnologie

[email protected]

Institute for Software Technology 2

Lehrziele

Vermittlung von einführenden Kenntnissen des Compilerbaus (Analyse der Programmsyntax) und der Ausführungskonzepte von Programmiersprachen (Semantik)

Verstehen und Entwickeln von einfachen Compilern

Verstehen von Sprachsemantiken

Institute for Software Technology 3

Inhalt

Organisatorisches Aufbau der LV Benotung

Ziele und Inhalt

Institute for Software Technology 4

Organisatorisches

VU (3 Wochenstunden) Vorlesungsteil (2 Wochenstunden)

Jeweils Dienstag, 9:30-11:00 (s.t.), HS I12 Prüfungstermin: 28.6.2011 Nachklausur: Ende September 2011

Übungsteil (1 Wochenstunde) Jeweils Montag, 16:00-17:30 (s.t.), HS I1

(Verbundhörsaal; Ausnahme: 14.3. HS I12)

LV mit „immanentem Prüfungscharakter“

Institute for Software Technology 5

TermineDI, 1.3 9:30-11:00 HS I12 / s.t.

DI, 8.3. 9:30-11:00 HS I12 / s.t.

DI, 15.3. 9:30-11:00 HS I12 / s.t.

DI, 22.3. 9:30-11:00 HS I12 / s.t.

DI, 29.3. 9:30-11:00 HS I12 / s.t.

DI, 5.4. 9:30-11:00 entfällt.

DI, 12.4. 9:30-11:00 HS I12 / s.t.

DI, 10.5. 9:30-11:00 HS I12 / s.t.

DI 17.5. 9:30-11:00 HS I12 / s.t.

DI, 24.5. 9:30-11:00 HS I12 / s.t.

DI, 31.5. 9:30-11:00 HS I12 / s.t.

DI, 7.6. 9:30-11:00 HS I12 / s.t.

DI, 21.6. 9:30-11:00 HS I12 / s.t.

DI, 28.6. 8:00-11:00 Prüfung

Institute for Software Technology 6

Übung

Organisatorisches wird in der 1en Übungseinheit besprochen: MO, 7.3., 16.00 – 17.30 (s.t.), HS I1 (Verbundhörsaal)

Kontakt: [email protected]

Institute for Software Technology 7

Benotung

Note setzt sich zusammen aus: Anzahl der gelösten Aufgaben und deren

Bewertung (1/3) (jedes Übungsblatt > 50%) Schriftliche Prüfung

Bewertung (2/3) (> 50%)

Positive Note bei>50 %

Institute for Software Technology 8

Anmeldung

UE-Teilnahme

Endklausur

NachterminEndklausur

Positiv

PositivPositives Zeugnis

Negatives Zeugnis

Kein Zeugnis

JA

NEIN

NEIN

JA

JA

START

Abmeldung

Institute for Software Technology 9

Bei Fragen…

Vor der VU

Sprechstunde nach Vereinbarung

[ E-Mail: [email protected] ]

[ Telefon: DW 5710 ]

Institute for Software Technology 10

Unterlagen

Lehrveranstaltungsverlauf unter http://www.ist.tugraz.at/swp11.html

Folien Skriptum Übungsangaben

SWP Newsgroup @ TUGtu-graz.lv.swp

Buchempfehlungen

Institute for Software Technology 11

Ziele der LV

Sprachdefinition Syntax Semantik von Programmiersprachen

Konzepte von Programmiersprachen Auswertung von Programmen Struktur von Programmen

Entscheidungsprobleme

Institute for Software Technology 12

Grober Ablauf (I)

Syntax

BNFBNFSprachhierarchieSprachhierarchiePrinzipienPrinzipien

Institute for Software Technology 13

Grober Ablauf (II)

Semantik

Funktionale SprachenFunktionale SprachenImperative SprachenImperative SprachenLogikorientierte SprachenLogikorientierte SprachenOO SprachenOO Sprachen

Institute for Software Technology 14

Grober Ablauf (III)

Entscheidungsprobleme

HalteproblemÄquivalenzproblemHalteproblemÄquivalenzproblem

Institute for Software Technology 15

Grober Ablauf (IV)

Prog.sprachen-konzepte

ModulesModulesLibrariesLibrariesComponentsComponentsAspects,...Aspects,...

Institute for Software Technology

Überblick

Institute for Software Technology 17

Klassifikation von Sprachen

Syntaktische Kriterien / Grammatik Wie wird ein Programm strukturiert? Ist die Sprache einfach zu lernen? Unterstützt eine Sprache die

Programmierung großer SW-Systeme? ...

Semantische Kriterien Auswertung von Programmen

Institute for Software Technology 18

Semantik? Bedeutung (der Konstrukte) einer

Sprache

„Die Bank von Peter.“

a = b + c

Zuweisung, Bedingung, Gleichung.

Sitzbank Geldinstitut

Institute for Software Technology 19

Bedeutung von Programmen

Was berechnet das obige SML-Programm ?

fun test (x,y) = if x=0 then 0else y + test(x-1,y);

Institute for Software Technology 20

Vergleich mit math. Definition

(Induktive) Definition der Multiplikation

test implementiert die Multiplikation!

otherwiseyxy

xifyx

)*)1((

)0(0*

Institute for Software Technology 21

Logik-orientierte Programme

Prädikatevater(X,Y) ... X ist der Vater von Y

Regeln

can_fly(X) :- bird(X). Anfragen

can_fly(papagei).

Institute for Software Technology

Prolog-Programmbeispiel

Formalisieren Sie mit Hilfe von vater das Prädikat grossvater(X,Y), das wahr ist, wenn X der Großvater von Y ist.

22

Institute for Software Technology

Prolog-Programmbeispiel

Formalisieren Sie mit Hilfe von vater das Prädikat grossvater(X,Y), das wahr ist, wenn X der Großvater von Y ist.

„X ist der Großvater von Y wenn X der Vater von Z ist und Z der Vater von Y.“

23

Institute for Software Technology 24

Prolog-Programmbeispiel

„X ist der Großvater von Y wenn X der Vater von Z ist und Z der Vater von Y.“

grossvater(X,Y) :- vater(X,Z),vater(Z,Y).

Institute for Software Technology 25

Anfragen

Anfrage grossvater(franz,otto) muß Ja (True/Yes) liefern.

vater(franz,karl).vater(karl,otto).

grossvater(franz,otto) ?

Institute for Software Technology 26

Semantik von Imperativen Sprachen?

Definition über die Interpretation der einzelnen Statements. Die Statements führen dabei zu Zustandsänderung des Programms.

void change(int x,y) {int z = x;x = y;y = z;

}

Institute for Software Technology 27

Semantik von Imperativen Sprachen?

Was passiert hier bei Auswertung der einzelnen Statements?

void change(int x,y) {int z = x;x = y;y = z;

}

Institute for Software Technology 28

Semantikfunktion

Interpretation eines Statements s[[s]]: env env

Environment: env: VAR D env(x)D

wobei x eine Variable ist und D der Wertebereich (Domain) von x ist.

Institute for Software Technology 29

Beispiel [[x = e]] () = ‘ mit

‘(y) = (y) für alle yx ‘(x) = [[e]] ()

[[x]] () = (x) für xVAR

{(x)=1, (y)=2}z = x;{(x)=1, (y)=2, (z)=1}x = y;{(x)=2, (y)=2, (z)=1}y = z;{(x)=2, (y)=1, (z)=1}

Institute for Software Technology 30

Entscheidungsprobleme

Gegeben: Frage Antwort: Ja oder Nein Halteproblem: Gibt es ein

Programm, daß für beliebige Programme entscheiden kann, ob diese für alle Eingaben halten?

Äquivalenzproblem: Gibt es ein Programm, daß die Äquivalenz zweier beliebiger Programme feststellen kann?

Institute for Software Technology 31

Programmiersprachen / Wieso?

Problemstellung

Teilprobleme

Verteilung

Teillösungen

Institute for Software Technology 32

Erstellung großer Software

Problemstellung für Einzelne zu groß

Teamarbeit

Aufteilung in Teile, die getrennt gelöst werden können

Zusammenführen der Einzellösungen zur Lösung des Gesamtproblems

Unterstützung in der Programmiersprache?

Institute for Software Technology 33

Funktionale Sichtweise

Beispiel: Interpreter für eine Sprache

Programm = Sequenz von Befehlen

Maschine hat Speicher und führt ein Programm aus.

Befehle verändern den Inhalt des Speichers.

Institute for Software Technology 34

Beispiel - Blocksichtweise

LD 1 2LD 2 3ADD 1 2

Maschine

1: 02: 03: 04: 0

Programm Speicher

Adresse Wert

LD x y .. Lädt y in Speicher xADD x y .. Addiert den Wert von

x und y. Das Resultat stehtin x.

Institute for Software Technology 35

Beispiel – Funktionale Sicht

ExecuteProgIN: Programm, SpeicherOUT: Speicher

ExecuteStmntIN: Statement, SpeicherOUT: Speicher

SetMemIN: Value,Adresse,SpeicherOUT: Speicher

GetMemIN: Adresse,SpeicherOUT: Value

Institute for Software Technology 36

Beispiel - Zusammenfassung

Funktion kann in Teilfunktionen aufgeteilt werden

Getrennte Korrektheitsüberprüfung

Verständliche Programme

Problemlösung wird vereinfacht

Einfachere Fehlersuche

Re-Use