Funktionales Programmieren - Informatik - FB3

Werbung
Zusammenfassung Rückblick Befragung Ausblick
Zusammenfassung Rückblick Befragung Ausblick
Rückblick und Ausblick
Funktionales Programmieren
1
Zusammenfassung
Organisatorisches
2
Rückblick
3
Befragung
4
Ausblick
Rückblick und Ausblick
Organisatorisches
( 4. Februar 2008)
Berthold Hoffmann
Studiengang Informatik
Universität Bremen
Wintersemester 2007/2008
(Vorlesung am 4. Februar 2008)
Berthold Hoffmann
Zusammenfassung Rückblick Befragung Ausblick
Berthold Hoffmann
Funktionales Programmieren
Organisatorisches
Scheine
Zusammenfassung Rückblick Befragung Ausblick
Funktionales Programmieren
Organisatorisches
Fachgespräch
Ziel: Individualität der Leistung sicherstellen
Also: Beteiligung an der Bearbeitung der Übungsaufgaben
Idealfall: Note wird bestätigt
Schein ausfüllen (siehe WWW: PI3 → “Scheine”)
Entweder beim Tutor oder mir abgeben
Oder zum Fachgespräch mitbringen
Scheine gehen zur DPA-Geschäftsstelle
Das kann bis Ende Februar dauern
Berthold Hoffmann
Zusammenfassung Rückblick Befragung Ausblick
Funktionales Programmieren
Logisch Funktional
Rückblick und Ausblick
( 4. Februar 2008)
1
Zusammenfassung
2
Rückblick
Logik-Programmieren
Funktionales Programmieren
3
Befragung
4
Ausblick
Berthold Hoffmann
Zusammenfassung Rückblick Befragung Ausblick
Funktionales Programmieren
Logisch Funktional
Logik-Programmieren nach Prolog
Mercury U. Melbourne
Typisierung
Modes (in- und out-Parameter
Curry CAU Kiel
polymorphe Typisierung
Funktionen höherer Ordnung
Oz / Mozart DFKI Saarbrücken
polymorphe Typisierung, Funktionen
constraints, Vererbung
Nebenläufigkeit
eigentlich alle Programmierstile
Berthold Hoffmann
Funktionales Programmieren
Organisation
Anmeldung im WWW (PI3 → “Fachgespräche”)
Freitag, den 15. bzw. Montag, den 18. bzw. Mittwoch
den 19. Februar
Dauer: 10-15 min.
Thema: 2 Aufgaben (eine wählen Sie aus)
Wichtig: abgegebene Übungsblätter mitbringen
Berthold Hoffmann
Zusammenfassung Rückblick Befragung Ausblick
Funktionales Programmieren
Logisch Funktional
Logik-Programmieren
Einsatzfelder
wissensbasierte Systeme, künstliche Intelligenz
Analyse natürlicher Sprachen
Vorteile
sehr einfach
backtracking
Meta-Programmieren
Berthold Hoffmann
Zusammenfassung Rückblick Befragung Ausblick
Nachteile
keine Typisierung
keine Funktionen
(deterministische
Berechnungen)
ineffizient
Funktionales Programmieren
Logisch Funktional
Kern des funktionalen Programmierens
Definition von Funktionen durch Gleichungen
Auswertung durch Reduktion von Ausdrücken
Typisierung und Polymorphie
Funktionen höherer Ordnung
Algebraische Datentypen
Beweise durch strukturelle und Fixpunktinduktion
Fortgeschrittene Features:
Modellierung von Zuständen mit Monaden (z.B. IO)
überladene Funktionen (Typklassen)
Unendliche Datenstrukturen und verzögerte Auswertung
Berthold Hoffmann
Funktionales Programmieren
Zusammenfassung Rückblick Befragung Ausblick
Logisch Funktional
Entlegenere Konzepte von Haskell
Felder (array) siehe Kapitel “Effizienz”
Strukturen (Tupel mit benannten Features, record)
Nebenläufigkeit (concurrent Haskell)
Threads in Haskell:
forkIO :: IO () -> IO ThreadID
killThread :: ThreadID -> IO ()
Zusätzliche Primitive zur Synchronisation
Erleichtert Programmierung reaktiver Systeme
Schnittstelle zu C
Berthold Hoffmann
Zusammenfassung Rückblick Befragung Ausblick
Funktionales Programmieren
Logisch Funktional
Bewertung von Haskell
Zusammenfassung Rückblick Befragung Ausblick
Logisch Funktional
Grafische Benutzungsschnittstellen für Haskell
HTk
Verkapselung von Tcl/Tk in Haskell
Nebenläufig mit Events
Entwickelt an der AG BKB (Dissertation E. Karlsen)
Mächtig, abstrakte Schnittstelle, mittelprächtige Grafik
GTk+HS
Verkapselung von GTk+ in Haskell
Zustandsbasiert mit call-backs
Entwickelt an der UNSW (M. Chakravarty)
Neueres Toolkit, ästethischer, nicht ganz so mächtig
Berthold Hoffmann
Zusammenfassung Rückblick Befragung Ausblick
Funktionales Programmieren
Logisch Funktional
Andere funktionale Sprachen
Lisp (Common Lisp, Scheme)
Stärken
Abstraktion durch
Polymorphie und
Typsystem
algebraische
Datentypen
Funktionen höherer
Ordnung
Schwächen
Komplexität
Dokumentation
Noch viel im Fluß
Berthold Hoffmann
Ml (Edinburgh, Caml, O’Caml)
Polymorphie, Module, kontrollierte Seiteneffekte
Miranda (Kent, Turner)
Mutter von Haskell
Clean (RU Nijmegen)
Stiefschwester von Haskell
effiziente Implementierung
grafische Benutzungsschnittstelle
Flexible Syntax
Ausgereifter Compiler
Bibliothek
Zusammenfassung Rückblick Befragung Ausblick
dynamische Typisierung, Seiteneffekte
Funktionales Programmieren
Logisch Funktional
Einsatzfelder funktionaler Sprachen
Berthold Hoffmann
Zusammenfassung Rückblick Befragung Ausblick
Funktionales Programmieren
Logisch Funktional
Wozu deklaratives Programmieren lernen?
Common Lisp
künstliche Intelligenz (fragt Diedrich Wolter)
Erlang (Firma Ericsson)
Telekommunikation
Ml
Theorembeweiser
Haskell
Casl-Entwicklungsumgebung
Berthold Hoffmann
Zusammenfassung Rückblick Befragung Ausblick
Rückblick und Ausblick
1
Zusammenfassung
2
Rückblick
3
Befragung
Evaluation
4
Ausblick
Berthold Hoffmann
Funktionales Programmieren
Evaluation
Berthold Hoffmann
Zusammenfassung Rückblick Befragung Ausblick
( 4. Februar 2008)
Funktionales Programmieren
Evaluation
“verzögerte” Auswertung der Fragebögen
Befragung am 11., 12. und 18. Dezember 2007
Auswertung (manuell) am 25. Januar 2008 (!)
56 Bögen von ca. 90 Studierenden
36 “freie Angaben”
Vollständige Auswertung unter
PI3 → “Auswertung der Befragung . . . ”
Funktionales Programmieren
Berthold Hoffmann
Funktionales Programmieren
Zusammenfassung Rückblick Befragung Ausblick
Evaluation
Auswertung von Fragen 1–12
18 von 56 aus höheren Semestern
Kritik am Veranstalter
Kein Eingehen auf neuere Entwicklungen (7.)
kein Bezug zu Forschungsfragen (12.)
Kein Bezug zur Berufspraxis (12.)
zu wenig hilfreiche Beratung
Zusammenfassung Rückblick Befragung Ausblick
Evaluation
Auswertung von Fragen 13–28
Selbsteinschätzung der Studierenden
nicht besonders gut vorbereitet (13.)
Nachbereitung war nicht gut zu bewältigen (14.)
mangelnde Beteiligung wegen (17.)
hohen Ansprüchen des Lehrenden
mangelnder Vorbereitung
Aufgaben waren nicht nicht immer verständlich
Nachebretung durch andere Lektüre (Welche?)
Berthold Hoffmann
Zusammenfassung Rückblick Befragung Ausblick
Berthold Hoffmann
Funktionales Programmieren
Evaluation
Auswertung der “freien” Fragen
Zusammenfassung Rückblick Befragung Ausblick
Berthold Hoffmann
Geringe Motivation der Studierenden
PI3 leidet unter TI2 und Softwareprojekt
PI3 ist nicht zu aufwendig, aber abstrakt
lieber Prolog als Robotik / Grafik in Haskell ?
Berthold Hoffmann
Funktionales Programmieren
Evaluation
Meine Pläne
Evaluation
Mein persönlicher Eindruck
Ich werde nie wieder mit Haskell zu tun haben müssen
Andererseits: eine neue Art zu denken
Auch wenn man hier über manche Dinge meckert, es ist
nun mal Informatik, was soll man dazu sonst sagen?
Was kann ich später mit Haskell anfangen?
(im Beruf, in der Wissenschaft?)
Nicht Java runtermachen
Mehr direkte Anwendungen
(5) Besser verständliche Formulierung der Aufgaben
(10) Der Zeitpunkt der Vorlesung ist ungünstig
Zeitmangel im 3. Semester
Zusammenfassung Rückblick Befragung Ausblick
Funktionales Programmieren
Zusammenfassung Rückblick Befragung Ausblick
Funktionales Programmieren
Werbepause
Rückblick und Ausblick
Weniger Haskell
mehr abstrakte Datentypen
mehr Algorithmen und Datenstrukturen
ein anderes Skript (mehr Beispiele, Fragen, Beweise)
mehr Folien, weniger Tafel
Musterlösungen für die Aufgaben
Berthold Hoffmann
Zusammenfassung Rückblick Befragung Ausblick
Zusammenfassung
2
Rückblick
3
Befragung
4
Ausblick
Werbepause
Berthold Hoffmann
Funktionales Programmieren
Werbepause
Zusammenfassung Rückblick Befragung Ausblick
Funktionales Programmieren
Werbepause
Übersetzer
Programmiersprachen
Lehrveranstaltung im Sommer 2008
(Typ A = “Aufbau”)
Angeboten von Berthold Hoffmann
Inhalt: Prinzipien von Programmiersprachen
Konzepte: Werte, Befehle, Prozeduren, Typen, Module
...
Stile: imperativ, objektorientiert, funktional, logisch
Beispiele: Ada, Eiffel . . .
Berthold Hoffmann
1
( 4. Februar 2008)
Funktionales Programmieren
Lehrveranstaltung im Sommer 2009
(Typ A = “Aufbau”)
Angeboten von Berthold Hoffmann
Inhalt: Implementierung von Programmiersprachen
Lexikalische Analyse: lex
Syntaxanalyse: Parser (Generatoren), yacc
Kontextanalyse: Vereinbarungen und Typen
Codeerzeugung und abstrakte Maschinen
Berthold Hoffmann
Funktionales Programmieren
Zusammenfassung Rückblick Befragung Ausblick
Werbepause
Tschüß
Schöne vorlesungsfreie Zeit!
Berthold Hoffmann
Funktionales Programmieren
Herunterladen