Dieser Audiobeitrag wird von der Universität Erlangen-Nürnberg präsentiert.
Also herzlich willkommen. Die Frage, die eben hochkam, die haben wir uns natürlich auch
schon gestellt. Also wir haben uns jetzt bei den Übungen ja für ein Modell entschieden,
so wie wir das letztes Semester auch schon gemacht haben, dass in den Übungen abgegeben wird. Das
heißt dann aus Gerechtigkeitsgründen, dass dann tatsächlich auch die Deadline ist. Wenn man
allgemein eine andere Regelung lieber möchte, wo wir also eine feste Deadline für alle haben,
dann können wir das diskutieren, aber im Moment ist die Regelung Abgabe der Übungsaufgaben ist im
Tutorium. Des Weiteren fiel uns ein, dass wir besser nochmal vorweg, bevor die ersten Unfalle
passieren, unseren Begriff von Plagiarismus erläutern. Also vorweg, erstens, wir haben nichts
dagegen, wenn sie sich zusammensetzen und diese Aufgaben in Gruppen lösen. Dazu sind sie da. Es
ist nicht geschummelt, wenn sie sich von irgendwem erklären lassen, wie das funktioniert. Aber
aufschreiben sollen sie es bitteschön selbst. Und wir sind auch nicht völlig blöd. Wir merken also
schon auch, wenn sie irgendwo mal immer, wo beim anderen F steht, ein G setzen.
Okay. Ja. Richtig. Also ich wiederhole die Frage nochmal für die Aufnahme. Es wird gefragt,
nochmal bei einem kritischen Paar, wo man muss man sich ja Teiltherme einer linken
Seite einer Regel angucken. Das sind nur nicht triviale Teiltherme in dem Sinne, dass das also,
der Teiltherm nicht eine einzelne Variable sein soll. Das steht auch so in der Definition. Ja,
der Teiltherm kann der ganze Term sein. Das kann passieren. Aber er soll laut Definition nicht
eine einzelne Variable sein. Ich meine, da passiert nichts, wenn man das macht. Man macht
sich nur zu viel Arbeit. Gut. Ja, dann. Ja, der Lambda-Kalkül. Der Lambda-Kalkül ist also
im Vergleich zu vielen, was sie in ihrem Studium lernen, ein äußerst altehrwürdiges Thema.
Ich habe es extra nochmal nachgeschlagen. Er ist also erfunden worden in den 30ern. Die
relevanten Veröffentlichungen sind so Datum 1936 und so was. Aber die tatsächlichen Erfindungen
sind natürlich früher von Alonzo Church und unabhängig davon von Stephen Kleeney. Das ist
derselbe wie der mit dem Satz von Kleeney, den wir gegen Ende der Veranstaltung nochmal anreißen.
Das ist also regulärer Ausdrücke. Dasselbe sind wie endliche Automaten, wäre weniger. Ja,
ich motiviere gleich noch, wozu der gut ist. In Begriffen von Programmiersprachen,
abstrakten oder anonymen Funktionen in Java 8 und dergleichen mehr. Ich würde trotzdem jetzt
den Einstieg hier in dieses Thema Lambda-Kalkül anlass für eine Predigt nehmen. Es gibt Dinge
in der geistigen menschlichen Ideenwelt, deren Relevanz unabhängig davon ist, ob sie es irgendwann
mal als Feature in Java 8 schaffen. Der Lambda-Kalkül ist, und ich sage das nicht oft, der
Lambda-Kalkül ist eine der großen Ideen der Menschheit. Der steht in einer Reihe mit Quanten
und Relativitätstheorie, mit der Erfindung des Otto-Motors und der Currywurst. Er ist in
seiner Einfachheit und Eleganz eine geniale Erfindung. Nur so ein Ausschnitt von dem,
was wir nachher sehen. Unter anderem ist der ungetypte Lambda-Kalkül ein universelles
Berechnungsmodell, das sich in einer Zeile definieren kann. Und das alles vor der Konstruktion
des ersten Computers. Nur mal das zur Einstimmung. Also wo finden wir Ihnen wieder den Lambda-Kalkül?
Also im Wesentlichen ist der Lambda-Kalkül von der gewissen Werte aus gesehen eben
Funktionales Programmieren. Nun werden Sie fragen, ja Moment, also das, was wir jetzt
die letzten drei Wochen gemacht haben, war ja auch schon Funktionales Programmieren. Ich
habe ja stapelweise rekursive Definitionen angeschrieben. Nun, der Lambda-Kalkül unterscheidet
sich dann von dem, was wir bisher hatten, dadurch, dass er höhere Funktionen zulässt.
Also Funktionen, deren Argumente wiederum Funktionen sind. Dass es sowas gibt, dass
es der eine Grund, warum Funktionales Programmieren überhaupt Spaß macht. Zwei kurze Beispiele.
Eine typische höhere Funktion ist die, die eine gegebene Funktion nimmt und die gestermaßen
Verdoppelt zweimal nacheinander ausführt. Ich habe also eine Funktion, die nennt sich
TwiceF, also zweimal F. Die kann ich anwenden auf eine Variable X. Das hier ist jetzt alles
legales Hess-Cal, was ich gerade schreibe. So, und das kann ich so definieren. Also TwiceF
von X ist eben zweimal F anwenden auf X. Soweit so primitiv. Und dann fielen sicher
bekannt die Map-Funktion auf Listen zum Beispiel. Die schreibe ich mal mit Typ hin. Sie nimmt
Presenters
Zugänglich über
Offener Zugang
Dauer
01:21:17 Min
Aufnahmedatum
2014-05-05
Hochgeladen am
2014-05-07 12:11:56
Sprache
de-DE