Anmerkung des Autor Diese Präsentation ist mit Powerpoint für MacOS erstellt. Leider ist sie nicht vollständig mit Powerpoint für Windows kompatibel. Das hat zur Folge, dass die Animationen nicht korrekt abgearbeitet werden und erscheinende Elemente zum Teil nicht wieder verschwinden. Dirk Pape.
Warum versteht mich mein Taschenrechner? Von der Formel zum Ergebnis Dr. Dirk Pape, Institut für Informatik, Freie Universität Berlin zum 1. Berliner MNU-Kongress, Sept. 2002
Der klassische Taschenrechner reagiert auf Tastendrucke 30 sin = 55 *
Der Computer interpretiert Formeln 5 * sin(30) =2.5 f(x) = 5 * sin(x) f(30) speichert Formeln ok. formt Formeln um, etc.
Was bedeutet „interpretieren“? Wörter (Symbole) erkennen Z.B. Pferd, das oder Satzzeichen Sätze (Syntax) erkennen Z.B. Das Pferd hält schwarz Bedeutung (Semantik) ermitteln ???
Formeln interpretieren Wörter (Symbole) erkennen 5, *, sin, (, 30, ) Sätze (Syntax) erkennen Bedeutung (Semantik) ermitteln =2.5 * 5sin 30
Phasen des Interpretierens Formel als Text 5*sin(30) * 5sin 30 Formel in abstrakter Syntax Berechne Formel =2,5 AnalyseSynthese
Abstrakte Syntax – Beispiel: eine Datenstruktur für Formeln data Formel = ZAHL Int | PLUS Formel Formel | MAL Formel Formel | SIN Formel | COS Formel | VAR String
Formeln rekursiv berechnen Berechne 1 1. Berechne 2 -> 5 2. Berechne 3 Berechne 4 -> 30 Berechne sin (30) -> Berechne 5 * 0.5 -> 2.5 * 5sin
Berechnen – Beispiel berechnen(f) = case f of ZAHL n -> n PLUS f1 f2 -> berechnen(f1) + berechnen(f2) MAL f1 f2 -> berechnen(f1) * berechnen(f2) SIN f -> sin (berechnen(f)) COS f -> cos (berechnen(f)) VAR v -> [„auslesen von Variable v“]
Formeln umformen Forme x * ( ) um 2 * (4 + 5) -> 2 * * 5 * x * x * x 2
Umformen – Beispiel umformen(f) = case f of ZAHL n -> ZAHL n PLUS f1 f2 -> PLUS (umformen(f1)) (umformen(f2)) MAL f1 (PLUS f2 f3) -> PLUS (umformen(MAL f1 f2)) (umformen(MAL f1 f3)) MAL f1 f2 -> MAL (umformen(f1)) (umformen(f2)) SIN f -> SIN (umformen(f)) COS f -> COS (umformen(f)) VAR v -> VAR v
Formeln interpretieren Wörter (Symbole) erkennen 5, *, sin, (, 30, ) Sätze (Syntax) erkennen Bedeutung (Semantik) ermitteln Berechnen =2.5, Umformen, Speichern,... * 5sin 30
Wie versteht mich der Computer? Zeichen werden zu Wörtern SO...S? So...nntag? So...ndermeldung?
Wörter erkennen start so n s SOS pause a x
Formelsymbole erkennen start235 4 co t s cos ( ( + Var „cost“
Tabellengesteuerter Automat (+)cos*t Cos Var 1
Informatiker sind erfindungsreich Computerprogramme erzeugen die Tabellen Computerprogramme erzeugen Computerprogramme, die Formeln erkennen Computerprogramme erzeugen Tabellen und Computerprogramme aus Formeln
„Scanner“ erkennen Symbole bs= [a-z] zf= [0-9] cos= cos var= bs+ zahl= -?zf+...
„Scanner“ erkennen Symbole 5*sin(30) Zahl 5 Mal Sin Klammerauf Zahl 30 Klammerzu
„Scanner“ erkennen Symbole 5*cost*30 Zahl 5 Mal Var cost Mal Zahl 30
„Scanner“ erkennen Symbole 5*sin)30( Zahl 5 Mal Sin Klammerzu Zahl 30 Klammerauf
Scanner-Generatoren Lex für C, C++, Java,... Flex für C, C++, Java,... Alex für Haskell...
Wie versteht mich der Computer? Wörter werden zu Sätzen Zahl 5* 5 SinusKlammeraufZahl 30Klammerzu 30 sin*
Kellerautomat + formel1 + ( ) + + formel2 + + formel1 (
Eine Grammatik für Formeln formel : Zahl | formel Plus formel | formel Mal formel | Sinus Klammerauf formel Klammerzu | Cosinus Klammerauf formel Klammerzu | Variable | Klammerauf formel Klammerzu
„Parser“ erkennen Sätze 5, *, Sinus, (, 30, ) Formel 1 * (... * 5sin 30
Parser-Generatoren Yacc für C, C++, Java,... Bison für C, C++, Java,... Happy für Haskell...
Übersetzerbau Programmiersprachen sind Sprachen, mit denen der Computer programmiert wird (C, Java, Haskell,...) haben eine Grammatik Programme sind grammatikalisch korrekte Formeln in einer Programmiersprache werden mit Hilfe von Scannern und Parsern analysiert und in einfache Maschinenbefehle übersetzt (Synthese)
Algorithmen im Übersetzerbau Scannen und Parsen Endlicher Automat Endlicher Kellerautomat Rekursiver „Ad-hoc-Parser“ Scanner- und Parsergeneratoren Anspruchsvolle Algorithmen Synthese Rekursive Funktionen und Prozeduren auf baumartigen Datenstrukturen weitere „Highlights“, z. B. „bootstrapping“
Ich wünsche noch viel Spaß beim MNU-Kongress