Fachseminar Programmiersprachen WS07/08 (Entwurf)
Total Page:16
File Type:pdf, Size:1020Kb
Fachseminar Programmiersprachen WS07/08 (Entwurf) 11. Januar 2008 Inhaltsverzeichnis 1 Einfuhrung¨ 2 2 OCaml (Steffen Brummer)¨ 3 2.1 Was ist OCaml? . 3 2.2 Von Caml zu OCaml . 3 2.3 Compiler und Tools . 4 2.4 Grundlagen der Sprache . 6 2.5 Imperative Konzepte . 8 2.6 Listen . 9 2.7 Module . 10 2.8 Objektorientierung . 11 2.9 Fazit, Verwendung von OCaml in der Praxis . 15 3 F# (Martin Lohrmann) 17 3.1 Einleitung . 17 3.2 Ziele und Einsatzgebiete . 17 3.3 Werkrzeuge zur Entwicklung . 18 3.3.1 .NET Framework . 18 3.3.2 der Compiler . 18 3.3.3 die Entwicklungsumgebung . 18 3.3.4 F# Interactive . 18 3.3.5 Nutzung unter Linux . 18 3.4 Ein erstes Beispiel . 19 3.5 Sprachfeatures . 20 3.5.1 Variablen und Funktionen . 20 3.5.2 Tuple . 21 3.5.3 Records . 21 3.5.4 Listen und Arrays . 22 3.5.5 Referenz . 22 3.5.6 if-Anweisung . 22 3.5.7 Schleifen . 23 3.5.8 Object Types . 23 1 4 Scala (Fabian Keller) 26 4.1 Einleitung . 26 4.1.1 Was ist Scala . 26 4.1.2 Geschichte . 26 4.1.3 Ziele bei der Entwicklung . 27 4.2 Verfugbare¨ Compiler und Interpreter . 27 4.2.1 Der Interpreter . 27 4.2.2 Der Compiler . 28 4.2.3 Scala als Shellscript . 28 4.3 Ausfuhrungsmodell¨ . 29 4.4 Allgemeine Sprachkonstrukte . 29 4.4.1 Variablendeklaration . 30 4.4.2 Bedingungen . 30 4.4.3 Schleifen . 30 4.4.4 Arrays . 31 4.4.5 Methoden . 31 4.4.6 Funktionen . 31 4.4.7 Infixnotation . 32 4.5 Typensystem . 32 4.5.1 Typen . 32 4.5.2 Superklassen . 33 4.6 Objektorientiertes Paradigma . 33 4.6.1 Klassen, Objekte und Vererbung . 33 4.6.2 Mixin Klassen . 34 4.6.3 Traits . 34 4.6.4 Generische Klassen . 35 4.6.5 Singleton-Objekte . 35 4.7 Funktionales Paradigma . 35 4.7.1 Anonyme Funktionen . 35 4.7.2 Currying . 36 4.7.3 Higher Order Functions . 36 4.7.4 Pattern Matching . 37 4.8 Webservices Paradigma . 37 4.8.1 XML Processing . 37 4.9 Beispiele . 39 4.9.1 Interaktion mit Java . 39 4.9.2 Setterfunktion . 40 4.10 Zusammenfassung . 40 4.11 Anhang . 41 4.11.1 Installation (Quickstart) . 41 5 Python (Robert Rauschenberg) 42 5.1 Einleitung . 42 5.2 Geschichte . 42 5.2.1 Woher kommt Python ? . 42 5.2.2 Python der Name . 42 5.2.3 Weiteres . 43 5.3 Python wofuer steht es? . 43 2 5.3.1 Typisierung und Plattformunabh¨angigkeit . 43 5.3.2 Plattformunabh¨angig . 43 5.4 Beispiele zur Programmierung . 43 5.4.1 Hello World in Python . 44 5.4.2 Wertzuweisungen . 44 5.4.3 Arbeiten mit Listen . 46 5.4.4 GUI eine schnelle Oberfl¨ache . 46 5.5 Weitere Informationen . 46 6 Haskell (Andreas Textor) 47 6.1 Einleitung . 47 6.2 Haskellcompiler und -Interpreter . 48 6.3 Die Grundeigenschaften am Beispiel . 48 6.3.1 Eine funktionale“ Sprache . 49 ” 6.3.2 Verschiedene Schreibweisen fur¨ Funktionen . 50 6.3.3 Typklassen . 51 6.4 Datentypen und ihre Manipulation . 52 6.4.1 Typsystem und Grundlegende Datentypen . 52 6.4.2 Listen . 53 6.4.3 Tupel . 56 6.4.4 Selbstdefinierte Datentypen . 56 6.5 Funktionale Programmierung . 59 6.5.1 Verz¨ogerte Auswertung . 59 6.5.2 Lambda-Kalkul¨ . 60 6.5.3 Funktionen h¨oherer Ordnung . 61 6.5.4 Funktionskomposition . 63 6.6 Monaden . 63 6.6.1 Das Problem mit Seiteneffekten . 63 6.6.2 Ein- und Ausgabe . 64 6.6.3 Kombination von Monaden . 65 6.7 Entwicklung von Haskell und sonstige Features . 65 6.7.1 Fazit . 66 7 Ada (Alexey Korobov) 68 7.1 Einleitung . 68 7.2 Exkurs in die Geschichte . 68 7.3 Tools & Co. 69 7.3.1 Reference Manual . 69 7.3.2 Compiler & Editoren . 69 7.4 Ausfuhrungsmodell¨ . 70 7.5 Besondere Sprachmerkmale . 70 7.5.1 Strenge statische Typisierung auf angenehme Art . 71 7.5.2 Skalare Typen . 71 7.5.3 Syntaktische Highlights . 71 7.5.4 Uberladung¨ . 71 7.5.5 Zeiger & Co. 71 7.5.6 OOP `ala Ada . 71 7.5.7 Generische Programmierung . 72 3 7.5.8 Nebenl¨aufigkeit . 72 7.5.9 Anschluß an andere Sprachen . 72 7.5.10 Pragmas . 72 7.5.11 Compiler und -Laufzeittests . 72 7.5.12 Beispielprogramm . 72 7.6 Anwendungsgebiete . 72 7.7 Fazit . 73 7.8 Quellenangaben . 73 8 D (Alexander Stolz) 74 8.1 Einleitung . 74 8.2 Geschichte . 75 8.3 Compiler . 75 8.3.1 DMD . 75 8.3.2 GDC . 76 8.3.3 Compilerbenutzung.