Praktische Informatik 3: Funktionale Programmierung Vorlesung 14 vom 15.02.21: Rückblick & Ausblick
Christoph Lüth
Wintersemester 2020/21
11:51:43 2021-02-22 1 [23]
Fahrplan
ITeil I: Funktionale Programmierung im Kleinen ITeil II: Funktionale Programmierung im Großen
ITeil III: Funktionale Programmierung im richtigen Leben IAktionen und Zustände
IMonaden als Berechnungsmuster IFunktionale Webanwendungen IScala — Eine praktische Einführung IRückblick & Ausblick
PI3 WS 20/21 2 [23]
I. Prüfungen
PI3 WS 20/21 3 [23]
Inhalt
IWarumFachgespräche?
IWas bedeutet das für dieScheinbedingungen?
IAblaufder Fachgespräche
ITerminfür die Fachgespräche
IBeispiele
PI3 WS 20/21 4 [23]
Warum Fachgespräche?
IFachgespräche dienen dazu, „Individualität der Leistung“ sicherzustellen.
IBesonders in Corona-Zeiten.
IFormat: Eine Gruppe (3 Studierende), 15 Minuten
IIndividuelle Prüfungen (30 Minuten) zeitlich nicht darstellbar (127 (Pabo) – 190 (stud.ip)) IOpen-Book Klausur o.ä. keine Alternative, da keine wesentliche Verbesserung zu Übungsbetrieb IParallelisierung erlaubt höheren Durchsatz und längere Antwortzeit
IGruppe muss keine Übungsgruppe sein
PI3 WS 20/21 5 [23]
Scheinkriterien
IFachgespräch am Ende (Individualität der Leistung)
IMind. 50% in den Einzelübungsblättern und mind. 50% in allen Übungsblättern IVornoteaus den Übungsblättern
INotenspiegel(in Prozent aller Punkte):
Pkt.% Note Pkt.% Note Pkt.% Note Pkt.% Note 89.5-85 1.7 74.5-70 2.7 59.5-55 3.7
≥95 1.0 84.5-80 2.0 69.5-65 3.0 54.5-50 4.0 94.5-90 1.3 79.5-75 2.3 64.5-60 3.3 49.5-0 n/b IFachgesprächbestätigtVornote (Abänderung bis max. 1 Notenstufe)
PI3 WS 20/21 6 [23]
Ablauf des Fachgeprächs
IFachgespräche finden überZoomstatt
IFachgespräche bestehen aus der schriftlichen Bearbeitung einer kurzen Programmieraufgabesowie kurzenVerständnisfragendazu IAufgaben werden online auf HedgeDoc bearbeitet.
IKein Syntaxcheck, kein Compiler IBeispielfragen auf der Webseite
PI3 WS 20/21 7 [23]
Ablauf und Ziel des Fachgespräches
IKamera istPflicht(eingeschaltetlassen) IRuhigerOrt ohne Hintergrundgeräusche INiemandsonstim Raum
IBearbeitungliveim HedgeDoc, nicht aus Editor kopieren
IDer Weg ist das Ziel. . .
INicht: Gelöste Aufgabe.
ISondern:wie löst ihr die Aufgabe?
PI3 WS 20/21 8 [23]
Termine
IFachgespräche finden andreiTagen statt.
IMöglicheTermine: 11/12.03, 18/19.03., 25/26.03.
IDazuUmfrage.
IAnmeldung wirdnach der Vorlesungfreigeschaltet.
PI3 WS 20/21 9 [23]
Beispielfrage (leicht)
Definieren Sie eine Funktionformat, die eine Zahl in einer Zeichenkette ge- gebener Länge rechtsbündig ausgibt.
Bsp. format 4 35 "␣␣35"
Lösung:
format :: Int→ Int→String format n x=
replicate ’ ’ (n- length s)++s wheres=show x
Fragen:
IWas ist daran falsch?
IFunktioniert das auch für negative Zahlen?
IWie kann ich Länge aufnbegrenzen?
PI3 WS 20/21 10 [23]
Beispielfrage (mittel)
Definieren Sie eine Funktionmean, die den arithmetischen Durchschnitt einer Liste von ganzen Zahlen berechnet.
Bsp.mean [2,1,5,4,3] 3.0
Lösung:
mean :: [Int]→Double mean xs=sum xs/length xs Fragen:
IWas ist daran falsch?
IWie konvertiert manIntnachDouble?
mean xs=fromIntegral (sum xs)/...
ISchwer: wie vereinfacht man fromIntegral (length xs)
PI3 WS 20/21 11 [23]
Beispielfrage (schwer)
Zwei Int-Listen sollenähnlichheißen, wenn Sie die gleichen Zahlen un- abhängig von ihrer Reihenfolge und Häufigkeit enthalten. Schreiben Sie eine Testfunktionsimdafür.
Bsp.
sim [3,2,2,1,3] [1,2,3] True
sim :: [Int]→[Int]→Bool sim xs ys=all (λx→elem x ys) xs Fragen:
IWas fehlt da?
sim xs ys=
.. && all (λy→elem y xs) ys IKann man die Signatur verallgemeinern?
sim :: Eqα⇒[α]→[α]→Bool
PI3 WS 20/21 12 [23]
Mündliche Prüfung
IDauer: in der Regel 20-30 Minuten IEinzelprüfung, ggf. mit Beisitzer
IInhalt: Programmieren mit Haskell und Vorlesungsstoff IAblauf: “Fachgespräch plus”
IEinstieg mit leichter Programmieraufgabe wie im Fachgespräch IDaran anschließend Fragen über den Stoff
IListe vonVerständnisfragenauf der Webseite.
PI3 WS 20/21 13 [23]
II. Rückblick und Ausblick
PI3 WS 20/21 14 [23]
Warum funktionale Programmierung lernen?
IFunktionale Programmierung macht aus Programmierern Informatiker
IBlick über den Tellerrand — was kommt in 10 Jahren?
IHerausforderungender Zukunft
IEnthält diewesentlichenElemente moderner Programmierung
PI3 WS 20/21 15 [23]
Zusammenfassung Haskell
Stärken:
IAbstraktiondurch IPolymorphieund Typsystem IalgebraischeDatentypen IFunktionenhöhererOrdnung
IFlexible Syntax IHaskell alsMeta-Sprache IAusgereifter Compiler IViele Büchereien
Schwächen:
IKomplexität IBüchereien
INicht immer gut gepflegt IVielim Fluß
IKeinstabilerundbrauchbarerStandard IDivergierendeZiele:
IForschungsplattformundnutzbares Werkzeug
PI3 WS 20/21 16 [23]
Andere Funktionale Sprachen
IStandard ML(SML):
IStreng typisiert, strikte Auswertung IStandardisiert, formal definierte Semantik IDrei aktiv unterstütze Compiler
IVerwendet in Theorembeweisern (Isabelle, HOL) Ihttp://www.standardml.org/
ICaml,O’Caml:
IStreng typisiert, strikte Auswertung IHocheffizienter Compiler, byte code & nativ INur ein Compiler (O’Caml)
Ihttp://caml.inria.fr/
PI3 WS 20/21 17 [23]
Andere Funktionale Sprachen
ILISPundScheme IUngetypt/schwach getypt ISeiteneffekte
IViele effiziente Compiler, aber viele Dialekte IAuch industriell verwendet
IHybridsprachen:
IScala (Functional-OO, JVM) IF# (Functional-OO, .Net) IClojure (Lisp, JVM)
PI3 WS 20/21 18 [23]
Was spricht gegen funktionale Programmierung?
IMangelndeUnterstützung:
ILibraries, Dokumentation, Entwicklungsumgebungen IWird besser (Scala). . .
IProgrammierungnur kleiner Teil der SW-Entwicklung INichtverbreitet— funktionale Programmierer zuteuer IKonservatives Management
I“Nobody ever got fired for buying IBMSAP”
PI3 WS 20/21 19 [23]
Haskell in der Industrie
ISimon Marlow bei Facebook ISimon Peyton-Jones bei Microsoft.
IsecuCloud in Hamburg (https://www.secucloud.com/) IBluespec: Schaltkreisentwicklung, DSL auf Haskell-Basis IGalois, Inc: Cryptography (Cryptol DSL)
IFinanzindustrie: Barclays Capital, Credit Suisse, Deutsche Bank
ISiehe auch: Haskell in Industry (https://wiki.haskell.org/Haskell_in_industry) IAndere Sprachen: Scala, Erlang, FL, . . .
PI3 WS 20/21 20 [23]
Perspektiven funktionaler Programmierung
IForschung:
IAusdrucksstärkereTypsysteme Ifür effizienteImplementierungen
Iund eingebauteKorrektheit(Typ als Spezifikation) IParallelität?
IAnwendungen:
IEingebettetedomänenspezifische Sprachen
IZustandsfreieBerechnungen (MapReduce, Hadoop, Spark) IBig DataandCloud Computing
PI3 WS 20/21 21 [23]
If you liked this course, you might also like . . .
IDie VeranstaltungReaktive Programmierung(findet irregulär stattt) IScala, nebenläufige Programmierung, fortgeschrittene Techniken der funktionalen
Programmierung
IWir suchenstudentische Hilfskräfteam DFKI, FB CPS IScala als Entwicklungssprache
IWir suchenTutoren für PI3
IIm WS 2021/22 —meldet Euchbei Thomas Barkowsky (oder bei mir)!
PI3 WS 20/21 22 [23]
Tschüß!
PI3 WS 20/21 23 [23]