560 likes | 705 Views
Fortbildungsveranstaltung des Staatlichen Schulamts Frankfurt. Theoretische Informatik mit AtoCC : Formale Sprachen, abstrakte Automaten und Compiler. Einsatz der Software AtoCC (Kurs: 07F305201). Christian Wagenknecht, Michael Hielscher. Frankfurt, am 10.06.08. Das Wichtigste zuerst!.
E N D
Fortbildungsveranstaltung des Staatlichen Schulamts Frankfurt Theoretische Informatik mit AtoCC:Formale Sprachen, abstrakte Automaten und Compiler.Einsatz der Software AtoCC (Kurs: 07F305201) Christian Wagenknecht, Michael Hielscher Frankfurt, am 10.06.08
Das Wichtigste zuerst! Vielen Dank an Herrn Thomas Lösler. Frau Nagel und Frau Rückert
Veranstaltungsort: Gymnasium I, Frankfurt/Oder, Wieckestr. 1b
TI-Inhalte in der Schulinformatik: Probleme und Chancen Blick in die Lehrpläne verschiedener Bundesländer
Lehrplan Ziele und Inhalte In den meisten Bundesländern sind ausgewählte Inhalte der TI Lehrplaninhalt der Sek. II:
TI-Inhalte in der Schulinformatik: Probleme und Chancen • Blick in die Lehrpläne verschiedener Bundesländer • Konkrete Inhalte
TI an Hochschulen – NICHTS für Schulen Typischerweise: Begrifflich orientiert, deduktiv • Zeichen, Alphabet, Wort, Verkettung, Wortmenge • Sprache, formale Grammatik, Ableitung • reguläre Sprachen: Chomsky-Typ-3-Grammatik, reguläre Ausdrücke, DEA, NEA, L(DEA)=L(NEA), Minimalautomat, diverse Sätze (Nerode/Myhill, Pumping Lemma, ...), ... • kontextfreie Sprachen: Typ-2-Gr., DKA, NKA, L(DKA)<L(NKA), Transformation G >>> NKA (1 Zustand), diverse Sätze, ... • ksS / unbeschr. Sprachen: Typ-1- und Typ-0-Grammatiken, Turing-Maschine (beschränkt/unbeschränkt) • * Theorie der formalen Sprachen • * Automatentheorie • * Berechenbarkeitstheorie • * Komplexitätstheorie
Lernbereich 8 A (Sächs. Lehrplan) endlicher Automat GK Informatik f. Jahrgangsstufen 11 und 12, wird ab Schuljahr 2008/09 wirksam
Informatik-Lehrplan: S II, Brandenburg gemeinsames Kerncurriculum mit Berlin und MeckPomm = Basis für schulinterne Lehrpläne 1. Auflage: 2006, gültig für Qualifizierungsphase ab Schuljahr 2008/9
Kompetenzerwerb im Themenfeld (Auszug) • Die Schülerinnen und Schüler verstehen die zur Problemlösung eingesetzten Programmiersprachen als spezielle formale Sprachen, die es ihnen erlauben, Probleme mit den Methoden der Informatik zu lösen. Hoffentlich nicht!!! • Durch die Einführung des Automatenmodells vertiefen sie ihr Verständnis von Informatiksystemen. Naja, die LehrerInnen werden's schon machen!
Abbildung der Kompetenzbereiche auf Kurshalbjahre Klassen 11 und 12 (Qualifikationsphase): 4 Kurshalbjahre 3-5 Stunden pro Kurshalbjahr
TI-Inhalte in der Schulinformatik: Probleme und Chancen • Blick in die Lehrpläne verschiedener Bundesländer • Konkrete Inhalte: • totale Überfrachtung mit Fachinhalten • TI-Kompetenz der LP-Autoren? (Fachsystematik, Formulierung von Wunschvorstellungen, ...)
Gefühlssituation der Lehrenden • "TI wollte ich nie machen." • "TI hat mich nie richtig interessiert." • "TI war mir immer zu theoretisch und abstrakt." • "Die TI-Dozenten waren suspekt – TI im postgradualen Studium erinnere ich mit Grausen." • "Die TI-Inhalten helfen mir nicht, wenn das Schulnetzwerk mal wieder zusammenbricht." • ...
TI-Inhalte in der Schulinformatik: Probleme und Chancen • Zeit-Problem, Inhalte-Problem(Zusammenfassung von oben) • Manche Lehrende mögen es nicht. – Motivationsproblem Manche Lehrende können es nicht richtig. - Qualifikationsproblem SchülerInnen/Studierende fragen gelegentlich: "Wann geht es denn nun endlich richtig los mit der Informatik? Ach so, das ist es schon." - Vermittlungsproblem "Ergebnis": Wenn möglich, TI weglassen. FALSCH!!! Chance:Informatik als Wissenschaft repräsentieren! (wie Mathematik und Naturwissenschaften)Sonst: Studienabbrecher als konkrete Folge!!!
Didaktische Software für TI • in Schulen: diverse Simulationstools oder Lernumgebungen, wie Kara; meist von enthusiastischen LehrerInnen entwickelt • in Hochschulen:Systeme für die Lehre, wie JFLAP LEX und YACC für die Hand des Ingenieurs Simulationstool – Bildungsserver Hessen
Defizite existierender Systeme • Systeme bzw. separate Module thematisieren Einzelaspekte • nicht definitionskonform und/oder nicht an Lernprozessen orientiert, sondern die Prozess-Simulation dominiert • Suggerieren abstrakten Automat als physikalisches Objekt • Systeme können nur simple Beispiele bearbeiten – zu große Distanz zur Praxis
Lernumgebungen (Quelle: LP Brandenburg) "Lernumgebungen werden so gestaltet, dass sie das selbst gesteuerte Lernen von Schülerinnen und Schülern fördern. Sie unterstützen durch den Einsatz von Medien sowie zeitgemäßer Kommunikations- und Informationstechnik sowohl die Differenzierung individueller Lernprozesse als auch das kooperative Lernen. Dies trifft sowohl auf die Nutzung von multimedialen und netzbasierten Lernarrangements als auch auf den produktiven Umgang mit Medien zu. Moderne Lernumgebungen ermöglichen es den Lernenden, eigene Lern- und Arbeitsziele zu formulieren und zu verwirklichen sowie eigene Arbeitsergebnisse auszuwerten und zu nutzen."
Lern- und Arbeitsumgebung für TI: Anforderungen (1/2) • ganzheitlicher Ansatz: Praxis Theorie Praxis, s. Lehrplanforderung • einheitliche Bedienung der Module (für Automatentheorie und Sprachübersetzer) • Handlungsorientierung auf hohen Abstraktionsniveaus (wenig technischer Ballast auch für anspruchsvolle Aufgabenstellungen)
AtoCC - Vom abstrakten Automaten zur automatisierten Entwicklung von Sprachübersetzern • Typische Kopplung von Automatentheorie mit Aspekten des Compilerbaus (s. Lehrpläne) • Wichtige didaktische Entscheidung: Zielsprache des Compilers sollte nicht Maschinencode sein!! • Herstellung eines lauffähigen(!) Sprachüberset-zers durch Anwendung der Kenntnisse aus der TI erfordert hohe Abstraktion (CC mit VCC) • Modellierung des Übersetzungsprozesses mit "ausführbaren" T-Diagrammen
Didaktische Gestaltung der Lerneinheit Belastbare Motivation für TI-Inhalte durch herausforderndeStart-Fragestellung mit Praxisrelevanz und Modellierungeines Zielsystems (Sprachübersetzer) am Anfang Vermittlungs-/Anwendungszyklen für TI-Wissen mit Projekt-bezug (Praxis nicht als "Anhängsel" zur Theorie) Komplexe Anwendung von TI-Inhalten auf sehr hohemAbstraktionsniveau (automatisierte Compiler-Generierung),Rückkehr zur und Konkretisierung der Modellierungsebene Behauptung: Dabei ist AtoCC ein unverzichtbares Hilfsmittel.
Beispiel: ZR – eine Sprache für einen Zeichenroboter Installationshinweise: Bitte Reihenfolge einhalten! Software unter:www.atocc.de Fortbildung Software • Installieren Sie GhostScript 8.60http://www.michael-hielscher.de/download/gs860w32.exe • Installieren Sie „AtoCC Setup.exe“http://www.michael-hielscher.de/download/atocc/AtoCC%20Setup.exe • Wenn nicht vorhanden einen PDF Reader (Adobe Reader oder Foxit Reader) installieren.
Beispiel: ZR – eine Sprache für einen Zeichenroboter 24 • Praxisnahe (echte!) Aufgabe mit grafischer (akustischer) Ausgabe: • Entwickeln Sie einen Compiler, der die Sprache ZR (ZeichenRoboter) in PDF übersetzt. (Schülergerecht formulieren!) • Eingabewort (in ZR):WH 36 [WH 4 [VW 100 RE 90] RE 10] • Sprachelemente: • VW nVorWärtsn Schritte • RE n Rechts um n Grad • WH n [ ... ] WiehderHolen-mal [...] • FARBE fStiftFARRBEf • STIFT n Strichstärke n Aufgabe: Verwenden Sie den fertigen Compiler zr2pdf blume.zr (konsole.bat aufrufen, blume.zr ansehen)
Beispiel: ZR – eine Sprache für einen Zeichenroboter 25 Der Zeichenroboter kann auch mehr: BunteBlume.zr
Beispiel: ZR – eine Sprache für einen Zeichenroboter 26 Weiterer Ablauf: Modellierung der Problemlösung mit TDiag Syntax-Definition von ZR: formale Grammatik, Ableitungsbaum mit kfGEdit Parser Akzeptoren Automatenmodelle (EA, KA) mit AutoEdit Arbeitsteilung: Scanner, Parser Zielsprachenbezug automatisierte Compiler-Entwicklung mit VCC Teilsysteme werden in Modellierung eingebracht (TDiag) Ergebnis: lauffähiger (nichttrivialer) Übersetzer, den man benutzen kann! TDiag, kfGEdit, AutoEdit, und VCC sind Bestandteile von AtoCC.
Beispiel: ZR – eine Sprache für einen Zeichenroboter • Wir wollen zunächst den Übersetzungsprozess entwerfen modellieren • Verwendung von T-Diagrammen: • T-Diagramme bestehen aus 4 Bausteintypen. • Compilerbaustein, Programmbaustein, Interpreterbaustein und Ein/Ausgabe-Baustein Ein/Ausgabe an Programmbaustein Compiler Programm Interpreter
Beispiel: ZR – eine Sprache für einen Zeichenroboter T-Diagramm: 1. Entwurf ZR2PDF möchte niemand schreiben!!!
Beispiel: ZR – eine Sprache für einen Zeichenroboter T-Diagramm: 2. Entwurf ZR2PS werden wir entwickeln, PS2PDF und Acrobat Reader wird vom System bereitgestellt.
Beispiel: ZR – eine Sprache für einen Zeichenroboter Nachdem wir nun wissen, wie unser Compiler später zur Übersetzung eingesetzt werden soll, wenden wir uns der Entwicklung des Compilers zu. Zunächst für die Quellsprache: • Mit Sprache auseinandersetzen: Beispielwörter bilden; Grammatik definieren, d.h. Terminale bestimmten, Produktionsregeln angeben und dabei Nichtterminale festlegen = induktives Vorgehen • Ableitungsbäume erzeugen
Beispiel: ZR – eine Sprache für einen Zeichenroboter Wir betrachten die Sprache ZR und versuchen ihren Aufbau zu beschreiben: • VW 50 • RE 270 • RE 45 WH 2 [VW 100] • WH 4 [VW 100 RE 100] • WH 36 [WH 4 [VW 100 RE 90] RE 10] Magnetkarten an der Tafel
Beispiel: ZR – eine Sprache für einen Zeichenroboter • Beschreiben wir den Baustein Zahl genauer: • 0 soll in ZR keine Zahl sein, da VW 0 oder RE 0 keine Veränderung herbeiführen. • Vorangestellte Nullen, wie bei 0815, wollen wir auch nicht erlauben. • Ergänzen wir unsere Grammatik um: ZahlErsteZiffer Ziffern ZiffernZiffer Ziffern | Ziffer 0 | 1 | ... | 9 ErsteZiffer 1 | 2 | ... | 9
Beispiel: ZR – eine Sprache für einen Zeichenroboter ProgrammAnweisungen AnweisungenAnweisungAnweisungen|EPSILON AnweisungVWZahl |REZahl |WHZahl[Anweisungen] |FARBEFarbwert |STIFTZahl Farbwertrot|blau|gruen|gelb|schwarz ZahlErsteZifferZiffern ZiffernZifferZiffern|EPSILON Ziffer 0 | 1 | ... | 9 ErsteZiffer 1 | 2 | ... | 9
Beispiel: ZR – eine Sprache für einen Zeichenroboter Automaten als Akzeptoren für Sprachen • Akzeptor prüft, ob ein Wort zur Sprache gehört oder nicht. (Keine Ausgabe Wort akzeptiert)(Thema: Programmiersprachen und Syntaxfehler) • Wir nehmen zwei Ausschnitte aus den Produktionen: ZahlErsteZifferZiffern ZiffernZifferZiffern|EPSILON Ziffer 0 | 1 | ... | 9 ErsteZiffer 1 | 2 | ... | 9 AnweisungenAnweisungAnweisungen|EPSILON AnweisungVWZahl|WHZahl[Anweisungen]
Beispiel: ZR – eine Sprache für einen Zeichenroboter Kleiner Sprachausschnitt: ZahlErsteZifferZiffern ZiffernZifferZiffern|EPSILON Ziffer 0 | 1 | ... | 9 ErsteZiffer 1 | 2 | ... | 9
Beispiel: ZR – eine Sprache für einen Zeichenroboter AnweisungenAnweisungAnweisungen|EPSILON AnweisungVWn |WHn[Anweisungen] DKA für obigen Grammatik-Ausschnitt
Beispiel: ZR – eine Sprache für einen Zeichenroboter • Aus der Kombination von kleinen endlichen Automaten und einem Kellerautomaten wird später unser Compiler bestehen. • Für EA-Sprachen können auch reguläre Ausdrücke verwendet werden: Beispiel Zahl (nicht 0, ohne Vornullen): [1-9][0-9]*
Arbeitsweise eines Scanners Ein- und Ausgabe des Scanners: Viele kleine endliche Automaten entscheiden welche Schlüsselworte im Quelltext stehen. Token als Paare [Tokenname, Lexem] z.B.: [Wiederhole, "WH"] [Zahl, "12"] [KlammerAuf, "["] Quelltext besteht aus Zeichen und der Rechner weiß noch nicht wie diese zusammengehören.
Beispiel: ZR – eine Sprache für einen Zeichenroboter ProgrammAnweisungen AnweisungenAnweisungAnweisungen|EPSILON AnweisungVWZahl |REZahl |WHZahl[Anweisungen] |FARBEFarbwert |STIFTZahl Farbwert:rot|blau|gruen|gelb|schwarz Zahl : [1-9][0-9]*
Reguläre Grammatik NEA DEA farbwert.txt
Beispiel: ZR – eine Sprache für einen Zeichenroboter Endliche Automaten (RegExp) für alle unsere Terminale: KlammerAuf : \[ KlammerZu : \] Wiederhole : WH Rechts : RE Vor : VW Stift : STIFT Farbe : FARBE Farbwert:rot|blau|gruen|gelb|schwarz Zahl : [1-9][0-9]* S, T, I, F, T
Beispiel: ZR – eine Sprache für einen Zeichenroboter per Hand ergänzen
Arbeitsweise des Parsers Ein- und Ausgabe des Parsers: Grammatik von ZR in Form eines Kellerautomaten Prüft ob Wort zur Sprache gehört Beinhaltet die aufgetretenen Terminale der Grammatik des Parsers #false erfolgt meinst durch Ausgabe von „Syntax Error“
Beispiel: ZR – eine Sprache für einen Zeichenroboter • Entwicklung des ZR2PS Compilers in VCC • Übertragen der EA in die Scannerdefinition • Übertragen der vereinfachten Grammatik in die Parserdefinition • Entwickeln sogenannter S-Attribute für die Zielcodegenerierung