• Keine Ergebnisse gefunden

Vorlesung vom 04.02.09: Schlußbemerkungen

N/A
N/A
Protected

Academic year: 2022

Aktie "Vorlesung vom 04.02.09: Schlußbemerkungen"

Copied!
3
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Praktische Informatik 3

Einf¨ uhrung in die Funktionale Programmierung Vorlesung vom 04.02.09:

Schlußbemerkungen

Christoph L¨uth

WS 08/09

Christoph L¨uth: Praktische Informatik 3 1 WS 08/09

Fahrplan

Teil I: Grundlagen Teil II: Abstraktion

Teil III: Beispiele, Anwendungen, Ausblicke

Datenmodellierung mit XML Effizienzerw¨agungen Grafik

Schluss

Christoph L¨uth: Praktische Informatik 3 1 WS 08/09

Organisatorisches

Ausgef¨ulltenScheinvordruckzum Fachgespr¨achmitbringen

Nur wer ausgef¨ullten Scheinvordruck abgibt, erh¨alt auch einen.

Evaluationsbogen ausf¨ullen

Christoph L¨uth: Praktische Informatik 3 2 WS 08/09

Inhalt

Wiederholung

R¨uckblick, Ausblick

Christoph L¨uth: Praktische Informatik 3 3 WS 08/09

Vorlesung vom 29.10.08: Grundbegriffe

Was sind die Bestandteile einerFunktionsdefinition?

WelcheAuswertungsstrategiengibt es, welche benutzt Haskell?

Was bedeutetStriktheit?

Christoph L¨uth: Praktische Informatik 3 4 WS 08/09

Vorlesung vom 05.11.08: Funktionen und Datentypen

Wie werdensyntaktischFunktionen definiert?

Was ist dieAbseitsregel?

Welches sind diewesentlichenEigenschaften derKonstruktoreneines algebraischen Datentyps?

Welche vordefiniertenBasisdatentypengibt es in Haskell?

Christoph L¨uth: Praktische Informatik 3 5 WS 08/09

Vorlesung vom 12.11.08: Typvariablen und Polymorphie

Was istPolymorphiein funktionalen Sprachen?

Wo ist der Unterschied zu Java?

Woran kann Typableitungscheitern?

Was ist der Typ von\x y-> (x, 3) : [(, y)]?

Was ist ein Beispiel f¨ur einen Ausdruck vom Typ[[a], Int)]?

Christoph L¨uth: Praktische Informatik 3 6 WS 08/09

Vorlesung vom 19.11.08: Funktionen h¨ oherer Ordnung

Was ist eine Funktion h¨oher Ordnung?

Was isteinfache Rekursion?

Was ist einfache Rekursion aufListen?

Was ist der Unterschied zwischenfoldrundfoldl?

Was sind Typklassen in Haskell?

Was ist der Unterschied zwischen Polymorphie und Typklassen?

Christoph L¨uth: Praktische Informatik 3 7 WS 08/09

(2)

Vorlesung vom 26.11.08: Standarddatentypen

Was sind dievierPhasen der Programmentwicklung?

Welche Standarddatentypen gibt es?

Wie definiere ich an den Bl¨attern markierte B¨aume?

Was ist das:

data X a = X a [X a]

Christoph L¨uth: Praktische Informatik 3 8 WS 08/09

Vorlesung vom 03.12.08: ADTs

Was ist einabstrakter Datentyp?

Was ist einModul, und was sind seineBestandteile?

Wieso sind geordnete B¨aume ein abstrakter und kein algebraischer Datentyp?

Wieso sind Listen ein algebraischer und kein abstrakter Datentyp?

Haben abstrakte Datentypen einen verkapseltenZustand?

Christoph L¨uth: Praktische Informatik 3 9 WS 08/09

Vorlesung vom 10.12.08: Signaturen und Eigenschaften

Was w¨are ein ADT f¨urArray aaus Aufgabenblatt 2?

Welche Operationen k¨onnte ein ADT f¨ur Graphen haben?

Welche Eigenschaften m¨ussten gelten?

Christoph L¨uth: Praktische Informatik 3 10 WS 08/09

Vorlesung vom 17.12.08: Induktion und Beweis

Was ist strukturelleInduktion?

Wie beweist man folgende Behauptung:

map f (map g xs) = map (f. g) xs

Wie beweist man folgende Behauptung:

reverse (reverse xs ++ ys) = reverse ys ++ xs

Christoph L¨uth: Praktische Informatik 3 11 WS 08/09

Vorlesung vom 07.01.09: Ein-/Ausgabe

Was unterscheidet Aktionen (IO a) von anderen ADTs?

Was sind die Operationen des ADTIO a?

Wozu dientreturn?

WelcheEigenschaftenhaben die Operationen?

Wie kann man. . . . . . aus einer Datei lesen?

. . . die Kommandozeilenargumente lesen?

. . . eine Zeichenkette ausgeben?

Christoph L¨uth: Praktische Informatik 3 12 WS 08/09

Vorlesung vom 07.01.09: Ein-/Ausgabe

Was unterscheidet Aktionen (IO a) von anderen ADTs?

Was sind die Operationen des ADTIO a?

Wozu dientreturn?

WelcheEigenschaftenhaben die Operationen?

Wie kann man. . . . . . aus einer Datei lesen?

. . . die Kommandozeilenargumente lesen?

. . . eine Zeichenkette ausgeben?

Christoph L¨uth: Praktische Informatik 3 13 WS 08/09

Zusammenfassung Haskell

St¨arken:

Abstraktiondurch Polymorphieund Typsystem algebraischeDatentypen Funktionenh¨ohererOrdnung Flexible Syntax

Haskell alsMeta-Sprache Ausgereifter Compiler Viele B¨uchereien

Schw¨achen:

Komplexit¨at Dokumentation

z.B. im Vergleich zu Java’s APIs B¨uchereien

Nochviel im Fluß Tools ¨andern sich Zum Beispiel HGL Entwicklungsumgebungen

Christoph L¨uth: Praktische Informatik 3 14 WS 08/09

Andere Funktionale Sprachen

Standard ML(SML):

Streng typisiert, strikte Auswertung Formal definierte Semantik Drei aktiv unterst¨utze Compiler

Verwendet in Theorembeweisern (Isabelle, HOL) http://www.standardml.org/

Caml,O’Caml:

Streng typisiert, strikte Auswertung Hocheffizienter Compiler, byte code & native Nur ein Compiler (O’Caml)

http://caml.inria.fr/

Christoph L¨uth: Praktische Informatik 3 15 WS 08/09

(3)

Andere Funktionale Sprachen

LISP & Scheme Ungetypt/schwach getypt Seiteneffekte

Viele effiziente Compiler, aber viele Dialekte Auch industriell verwendet

Christoph L¨uth: Praktische Informatik 3 16 WS 08/09

Funktionale Programmierung in der Industrie

Erlang

schwach typisiert, nebenl¨aufig, strikt Fa. Ericsson — Telekom-Anwendungen FL

ML-artige Sprache Chip-Verifikation der Fa. Intel Galois Connections

Hochqualit¨atssoftwarein Haskell

Hochsicherheitswebserver, Cryptoalgorithmen Verschiedene andere Gruppen

Christoph L¨uth: Praktische Informatik 3 17 WS 08/09

Perspektiven

Funktionale Programmierung in10 Jahren?

Anwendungen:

Integration von XML, DBS (X#/Xen, Microsoft) Integration in Rahmenwerke (F# & .Net, Microsoft) Eingebettetedom¨anenspezifische Sprachen Forschung:

Ausdrucksst¨arkereTypsysteme f¨ur effizienteImplementierungen

und eingebauteKorrektheit(Typ als Spezifikation) Parallelit¨at?

Christoph L¨uth: Praktische Informatik 3 18 WS 08/09

Warum funktionale Programmierung nie Erfolg haben wird

Programmierungnur kleiner Teil der SW-Entwicklung Unterst¨utzung:

Libraries, Dokumentation, Entwicklungsumgebungen Nichtverbreitet— funktionale Programmierer zuteuer Konservatives Management

“Nobody ever got fired for buying IBM”

Christoph L¨uth: Praktische Informatik 3 19 WS 08/09

Was lernt uns funktionale Programmierung?

Abstraktion

Denken in Algorithmen, nicht in Programmiersprachen

Konzentration aufwesentlicheElemente moderner Programmierung:

Typisierung und Spezifikation Datenabstraktion

Modularisierung und Dekomposition

Blick ¨uber den Tellerrand — Blick in die Zukunft Studium6= Programmierkurs— was kommt in 10 Jahren?

Christoph L¨uth: Praktische Informatik 3 20 WS 08/09

Hilfe!

Haskell: prim¨are Entwicklungssprache am DFKI, FG SKS Formale Programmentwicklung:http://www.tzi.de/cofi/hets Sicherheit in der Robotik:http://www.dfki.de/sks/sams Wir suchenstudentische Hilfskr¨afte

f¨ur diese Projekte Wir bieten:

AngenehmesArbeitsumfeld InteressanteT¨atigkeit Wir suchenTutoren f¨ur PI3

im WS 09/10 —meldet Euchbei Berthold Hoffmann!

Christoph L¨uth: Praktische Informatik 3 21 WS 08/09

Tsch¨uß!

Christoph L¨uth: Praktische Informatik 3 22 WS 08/09

Referenzen

ÄHNLICHE DOKUMENTE

Praktische Informatik 3: Funktionale Programmierung Vorlesung 10 vom 20.12.2016: Aktionen und ZuständeI. Christoph Lüth Universität Bremen

Zeigen Sie, dass jede normale algebraische Kurve eine komplexe Struktur zulässt, d. mit einer Hausdorff-Topologie und einem komplexen Atlas versehen

Zeigen Sie: Der Bahnenraum G\Y mit seiner Quotiententopologie ist hausdorffsch, und er lässt sich auf eindeutige Weise mit einer komplexen Struktur versehen, so dass die

(c) (3. Liouville'scher Satz) Jede nicht-konstante elliptische Funktion zum Gitter Λ nimmt auf C /Λ jeden Wert gleich oft an, wobei die Werte mit ihren Vielfachheiten zu rechnen

Zeigen Sie: Jede holomorphe Abbildung zwischen elliptischen Kurven ist entweder konstant oder eine endliche (surjektive) unverzweigte Überlagerung. Letztere werden

Insbesondere erhält man mit der Definition „Y isogen zu X ⇔ es gibt eine Isogenie Y → X“ eine Äquivalenzrelation auf der Menge der elliptischen Kurven.

Auch diese Eigenschaften hängen nicht von der Anordnung der C i ab. Ein Verzweigungstyp [G, P, C] heiÿt (schwach) rigide, wenn C (schwach)

Jede rationale, rigide Verzweigungstyp [G, P, C] ist Verzweigungstyp einer (eindeutig bestimm- ten) Galoiserweiterung L| Q ¯ (T ), die über Q definiert ist. Folgern Sie, dass