• Keine Ergebnisse gefunden

Warum Fachgespräche?

N/A
N/A
Protected

Academic year: 2022

Aktie "Warum Fachgespräche?"

Copied!
3
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

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]

(2)

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]

(3)

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]

Referenzen

ÄHNLICHE DOKUMENTE

I Monaden als Berechnungsmuster I Funktionale Webanwendungen I Scala — Eine praktische Einführung I Rückblick & Ausblick.. PI3 WS 20/21

Entwickeln Sie einen Algorithmus, der einen Weg aus einem Labyrinth sucht, und implemen- tieren Sie den Algorithmus in einem Java-Programm (unter Umständen gibt es mehrere Lösun-

Speichern Sie alle drei Klassen in der Datei AdressenListeVListe.java (dieses ist möglich, da nur eine Klasse public deklariert wurde) und geben Sie Ihre Implementierung per abox

Wenn es zutrifft, daß, wenn ich Dienstag nicht arbeite, ich zwar Montag nicht, jedoch am Donnerstag arbeite, dann arbeite ich am Sams- tag?. Wenn ich Dienstag arbeite, dann arbeite

Wenn es zutrifft, daß, wenn ich Dienstag nicht arbeite, ich zwar Montag nicht, jedoch am Donnerstag arbeite, dann arbeite ich am Sams- tag.. Wenn ich Dienstag arbeite, dann arbeite

Schreiben Sie eine statische main-Methode, die eine rudimentäre Kommandosprache zum Zu- griff auf die Zahlen im Baum ermöglicht. In dieser Sprache gibt es die folgenden

Schreiben Sie eine statische main-Methode, die eine rudimentäre Kommandosprache zum Zu- griff auf die Zahlen im Baum ermöglicht. In dieser Sprache gibt es die folgenden

Es soll ein als Kommandozeilenparameter angegebener Eingabe-Bitstring ab- gearbeitet werden und bei jeder Transition das entsprechende Ausgabezeichen ausgeben werden}.