6 - Theorie der Programmierung (ThProg) [ID:3833]
50 von 570 angezeigt

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

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

Tags

Reflexiv transitiv Präordnung Äquivalenz Kontext Signatur TermErsetzungssystem
Einbetten
Wordpress FAU Plugin
iFrame
Teilen