VU Software Paradigmen 716.060 / SS 2010 Stephan Gspandl Institut für Softwaretechnologie sgspandl@ist.tugraz.at Institute for Software Technology
Lehrziele Vermittlung von einführenden Kenntnissen des Compilerbaus (Analyse der Programmsyntax) und der Ausführungskonzepte von Programmiersprachen (Semantik). Schreiben und Verstehen von einfachen Compiler Verstehen von Sprachsemantiken und deren Unterschiede Institute for Software Technology 2
Inhalt Organisatorisches Aufbau der LVA Benotung Ziele und Inhalt Institute for Software Technology 3
Organisatorisches VU (3 Wochenstunden) Vorlesungsteil (2 Wochenstunden) Jeweils Dienstag, 9:30-11:00, HS I12 Prüfungstermin: 29.6.2010 Nachklausur: Ende September 2010 Übungsteil (1 Wochenstunde) LV mit immanenten Prüfungscharakter Institute for Software Technology 4
Termine DI, 2.3 12:00-13:30 HS I12 / s.t. DI, 9.3. 9:30-11:00 HS I12 / s.t. DI, 16.3. 9:30-11:00 HS I12 / s.t. DI, 23.3. 9:30-11:00 HS I12 / s.t. DI, 20.4. 9:30-11:00 HS I12 / s.t. DI, 27.4. 9:30-11:00 HS I12 / s.t. DI, 4.5. 9:30-11:00 HS I12 / s.t. DI, 18.5. 9:30-11:00 HS I12 / s.t. DI, 1.6. 9:30-11:00 HS I12 / s.t. DI, 8.6. 9:30-11:00 HS I12 / s.t. DI, 15.6. 9:30-11:00 HS I12 / s.t. DI, 22.6. 9:30-11:00 HS I12 / s.t. DI, 29.6. 8:00-12:00 Prüfung Institute for Software Technology 5
Übung Übungsgruppen (siehe TUGonline) Ummeldung bis Mo, 8.3. Übungsaufgaben (5 Abgaben): 22.3., 26.4., 10.5., 7.6. (!) und 14.6. Abgabe im IST-Sekretariat bis spätestens 12 Uhr Anwesenheitspflicht in der jeweiligen Woche, in der der Abgabetermin liegt Benotet werden: Anzahl der gelösten Beispiele Präsentation der Lösungen Programmierbeispiel 2 Abgabetermine (19.4. und 21.6., 12 Uhr, per E-Mail) Institute for Software Technology 6
Tutoriumstermine Voraussichtlich: Montag, 15-16 Uhr, 16-17 und 17-18 Uhr Dienstag, 14-15 Uhr und 15-16 Uhr Mittwoch, 11-12 Uhr, 12-13 Uhr Donnerstag, 18-19 Uhr Freitag, 9-10 Uhr und 10-11 Uhr Wo? Seminarraum IST und CityTower Institute for Software Technology 7
Programmierbeispiele Gruppenarbeit zu 4 Studierenden 2 Aufgaben Anwendungsgebiet: RoboCup Simulation League 2D Framework KickOffTUG (Java) wird auf der Homepage bereitgestellt Institute for Software Technology 8
Programmierbeispiele Aufgabe 1: Parser für visuelle Nachrichten Aufgabe 2: planbasierte Entscheidungsfindung logische Verhaltensmodellierung von Tormann Stürmer Einführung in LV und Tutorien Turnier am Ende des Semesters Abgabe von Source und Dokumentation Institute for Software Technology 9
RSL-Umgebung Schwerpunkt auf KI keine Hardware Realitätsgetreuste Liga Korrekte Proportionen FIFA-Reglement Komponenten 11 autonome Spieler (Agenten) verbinden sich zu virtuellem Stadion (SoccerServer) visualisiert in 2d (Monitor) Zusammenspiel der Komponenten Institute for Software Technology
Spielfeld Situation + verstrichene Zeit (460 of 6000) linkesteam (yellow) Tore Team Red BALL Goalie Spieler Team Red Abb. 2: Eine Spielszene der 2D Simulationsliga Institute for Software Technology
Prinzipien des Spiels beruht auf Kommunikation zwischen Spieler und SoccerServer Ein Agent bekommt Input dreier fiktiver Sensoren: erstellt daraus seine absolute Sicht der Dinge SEE HEAR - Player - Referee - Coach Sense Schluß auf das bestmögliche Kommando innerhalb des Zeitfensters von 100 ms. kann eine Reihe primitiver Kommandos ausführen Institute for Software Technology
Benotung Noten setzt sich zusammen aus: Anzahl der gelösten Aufgaben und deren Bewertung (20 %) Programmierbeispiel (20 %) Schriftliche Prüfung am 23.6., x Uhr, HS x (60 %) Positive Note bei >50 % Institute for Software Technology 13
START Anmeldung UE-Teilnahme Endklausur Positiv JA Positives Zeugnis NEIN JA Nachtermin Endklausur Positiv Abmeldung NEIN JA Kein Zeugnis Negatives Zeugnis Institute for Software Technology 14
Bei Fragen.. Vor der VO Sprechstunde Mo 10-11 Uhr nach Vereinbarung [ E-Mail: sgspandl@ist.tugraz.at ] [ Telephon: DW 5475 ] Institute for Software Technology 15
Unterlagen Lehrveranstaltungsverlauf unter http://www.ist.tugraz.at/swp10.html Folien Skriptum Übungsangaben SWP Newsgroup @ TUG tu-graz.lv.swp Buchempfehlungen Institute for Software Technology 16
Ziele der LVA Sprachdefinition Syntax Semantik von Programmiersprachen Konzepte von Programmiersprachen Auswertung von Programmen Struktur von Programmen Entscheidungsprobleme Institute for Software Technology 17
Grober Ablauf (I) Syntax BNF Sprachhierarchie Prinzipien Institute for Software Technology 18
Grober Ablauf (II) Semantik Funktionale Sprachen Imperative Sprachen Logikorientierte Sprachen OO Sprachen Institute for Software Technology 19
Grober Ablauf (III) Entscheidungsprobleme Halteproblem Äquivalenzproblem Institute for Software Technology 20
Grober Ablauf (IV) Prog.sprachenkonzepte Modules Libraries Components Aspects,... Institute for Software Technology 21
Institute for Software Technology Überblick
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 23
Semantik? Bedeutung (der Konstrukte) einer Sprache Die Bank von Peter. Sitzbank Geldinstitut Institute for Software Technology 24
Bedeutung von Programmen fun test (x,y) = if x=0 then 0 else y + test(x-1,y); Was berechnet das obige SML- Programm? Institute for Software Technology 25
Vergleich mit math. Definition x * y = y + (( x 0 if 1)* ( x y) = 0) otherwise (Induktive) Definition der Multiplikation test implementiert die Multiplikation! Institute for Software Technology 26
Logik-orientierte Programme Prädikate vater(x,y)... X ist der Vater von Y Regeln can_fly(x) :- bird(x). Anfragen can_fly(papagei). Institute for Software Technology 27
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. Institute for Software Technology 28
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. Institute for Software Technology 29
Prolog-Programmbeispiel grossvater(x,y) :- vater(x,z), vater(z,y). X ist der Großvater von Y wenn X der Vater von Z ist und Z der Vater von Y. Institute for Software Technology 30
Anfragen vater(franz,karl). vater(karl,otto). grossvater(franz,otto)? Anfrage grossvater(franz,otto) muß Ja (True/Yes) liefern. Institute for Software Technology 31
Semantik von Imperativen Sprachen? void change(int x,y) { } int z = x; x = y; y = z; Definition über die Interpretation der einzelnen Statements. Die Statements führen dabei zu Zustandsänderung des Programms. Institute for Software Technology 32
Semantik von Imperativen Sprachen? void change(int x,y) { } int z = x; x = y; y = z; Was passiert hier bei Auswertung der einzelnen Statements? Institute for Software Technology 33
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 34
Beispiel [[x = e]] (Θ) = Θ mit Θ (y) = Θ(y) für alle y x Θ (x) = [[e]] (Θ) [[x]] (Θ) = Θ(x) für x VAR {Θ(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 35
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 36
Programmiersprachen / Wieso? Problemstellung Verteilung Teilprobleme Teillösungen Institute for Software Technology 37
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 38