Willkommen, schön sind Sie da!
Logo Ex Libris

Übersetzung objektorientierter Programmiersprachen

  • Kartonierter Einband
  • 287 Seiten
(0) Erste Bewertung abgeben
Bewertungen & Rezensionen
(0)
(0)
(0)
(0)
(0)
Alle Bewertungen ansehen
Dieses Lehrbuch vermittelt Studierenden und Praktikern die Grundlagen für die Entwicklung von Übersetzern für objektorientierte Pr... Weiterlesen
20%
46.50 CHF 37.20
Sie sparen CHF 9.30
Print on Demand - Auslieferung erfolgt in der Regel innert 4 bis 6 Wochen.
Bestellung & Lieferung in eine Filiale möglich

Beschreibung

Dieses Lehrbuch vermittelt Studierenden und Praktikern die Grundlagen für die Entwicklung von Übersetzern für objektorientierte Programmiersprachen.
In einem Theorieteil werden zunächst ausführlich und anschaulich die Konzepte dieser Sprachen und ihrer Übersetzung behandelt, so daß der Leser einen umfassenden Überblick über die verschiedenen Übersetzungstechniken erhält. Die Übersetzung von Smalltalk-80, Java und C++ wird über eine einfache abstrakte (virtuelle) Maschine vereinheitlicht.
Im Praxisteil des Buches wird dann die Spezifikation eines Übersetzers für Java entwickelt. Diese kann als Eingabe für einen Übersetzergenerator verwendet werden, der daraus ein ablauffähiges C-Programm erzeugt. In einem abschließenden Praktikum mit Aufgaben und Lösungen (Gesamtlösung im WWW) wird der vermittelte Stoff am Beispiel der Entwicklung eines Java-Compilers eingeübt.

Das Lehrbuch vermittelt die Grundlagen für die Entwicklung von Übersetzern für objektorientierte Programmiersprachen. In einem Theorieteil werden ausführlich und anschaulich die Konzepte dieser Sprachen und ihrer Übersetzung behandelt. Die Übersetzung von Smalltalk-80, Java und C++ wird über eine einfache abstrakte (virtuelle) Maschine vereinheitlicht. Im Praxisteil wird dann die Spezifikation eines Übersetzers für Java entwickelt. Sie kann als Eingabe für einen Übersetzergenerator verwendet werden, der daraus ein ablauffähiges C-Programm erzeugt. In einem abschließenden Praktikum mit Aufgaben und Lösungen (Gesamtlösung im WWW) wird der Stoff am Beispiel der Entwicklung eines Java-Compilers eingeübt.

Inhalt
1: Theorie.- 1 Einleitung.- 1.1 Übersetzung von Programmiersprachen.- 1.2 Objektorientiertheit und objektorientierte Programmiersprachen.- 1.3 Reine und hybride objektorientierte Programmiersprachen.- 1.4 Die Programmiersprache Java.- 1.5 Überblick über die weiteren Kapitel.- 2 Objektorientierte Konzepte.- 2.1 Klassenbasierte objektorientierte Sprachen.- 2.1.1 Objekte und Klassen.- 2.1.2 Gleichheit und Kopieren von Objekten.- 2.1.3 Abstrakte Klassen und Interface-Klassen.- 2.1.4 Multi-Methoden.- 2.2 Vererbung.- 2.2.1 Einfachvererbung.- 2.2.2 Mehrfachvererbung.- 2.2.3 Dynamische Vererbung.- 2.3 Kapselung.- 2.4 Parametrisierung und generische Datentypen.- 2.5 Parametrisierung versus Vererbung.- 2.6 Polymorphismus.- 3 Übersetzung objektorientierter Konzepte und abstrakte Maschinen.- 3.1 Lose Übersetzung.- 3.1.1 Abstrakte Maschine AM.- 3.1.1.1 Laufzeitumgebung der abstrakten Maschine AM..- 3.1.1.2 Befehle der abstrakten Maschine AM.- 3.1.1.3 Adressierungsarten.- 3.1.2 Klassen und Einfachvererbung.- 3.1.3 Methodendeklarationen.- 3.1.4 Nachrichten und Methodenaufrufe.- 3.1.5 Objekte.- 3.1.6 Semiformale Beschreibung der Semantik der abstrakten Maschine.- 3.2 Smalltalk-80-Realisierung.- 3.2.1 Klassen und Einfachvererbung.- 3.2.2 Übersetzung von Methoden.- 3.2.3 Objekte.- 3.2.4 Objektverwaltung.- 3.2.5 Methodenaufruf.- 3.2.6 Die abstrakte Maschine für Smalltalk-80.- 3.3 Java-Realisierung.- 3.3.1 Klassen und einfache Vererbung.- 3.3.1.1 Einträge im Konstantenpool.- 3.3.1.2 Einträge für Instanzvariablen.- 3.3.1.3 Einträge für Methoden.- 3.3.1.4 Bemerkungen.- 3.3.2 Methodendeklarationen.- 3.3.3 Methodenaufruf und Rücksprung.- 3.3.4 Objekte.- 3.3.5 Die virtuelle Maschine von Java.- 3.4 C++-Realisierung.- 3.4.1 Methoden, Klassen und einfache Vererbung.- 3.4.2 Objekte.- 3.4.3 Methodenaufruf.- 3.4.4 Mehrfachvererbung.- 3.5 Parametrisierung.- 3.5.1 Kopierende Sicht.- 3.5.2 Echte generische Sicht.- 4 Typinferenz und Typüberprüfung.- 4.1 Typisierung und Binden.- 4.1.1 Typisierung.- 4.1.2 Binden und Methodensuche.- 4.1.3 Zusammenhang von Typisierung und Binden.- 4.1.4 Typisierungsprobleme.- 4.2 Typisierung mit Datenflußanalyse.- 4.2.1 Datenflußanalyse.- 4.2.2 Typisierung mit Datenflußanalyse.- 4.3 Typisierung mit Constraints.- 5 Optimierungen.- 5.1 Standardoptimierungen.- 5.1.1 Elimination redundanter Ausdrücke.- 5.1.2 Konstantenfaltung.- 5.1.3 Elimination toten Programmcodes.- 5.1.4 Kopien-Verbreitung.- 5.1.5 Schleifenoptimierungen.- 5.1.6 Reduktion des Operators und algebraische Umformungen.- 5.1.7 Kontrollflußoptimierungen.- 5.2 Objektorientierte Optimierungen.- 5.2.1 Intraprozedurale Klassenanalyse.- 5.2.2 Analyse der Klassenhierarchie.- 5.2.3 Effiziente Implementierung der Methodensuche.- zur Übersetzungszeit.- 5.2.4 Inkrementelle Programmentwicklung und separate Übersetzung.- 5.2.5 Klassentest.- 5.2.5.1 Einfach-Klassentest.- 5.2.5.2 Unterklassentest.- 5.2.5.3 Verwendung von Klassentests und Splitting.- 5.2.6 Funktionsexpansion.- 5.2.7 Wertbasierte Analyse und Instanzvariablen-Optimierung..- 5.2.8 Profile-Informationen.- 5.2.9 Spezialisierte Varianten: Customization.- 5.2.10 Lookup- und Inline-Caches.- 6 Speicherbereinigung.- 6.1 Nicht-inkrementelle Techniken.- 6.1.1 Mark-Scan-Speicherbereinigung.- 6.1.2 Kopierende Speicherbereinigung.- 6.1.2.1 Kopierende Speicherbereinigung mit zwei Regionen.- 6.1.2.2 Kopierende Speicherbereinigung mit Generationen.- 6.2 Inkrementelle Techniken: Referenzzählende Algorithmen.- 7 Ausblick.- 7.1 Compiler-Entwicklung.- 7.1.1 Bootstrapping und Cross-Compiler.- 7.1.2 Compiler-Generatoren.- 7.2 Varianten von Compilern.- 7.2.1 Dynamische Recompilierung.- 7.2.2 Deutsch-Schiffman-Technik.- 7.2.3 Just-In-Time Compiler.- 7.2.4 Compiler und Programmkorrektheit.- 7.3 Hardware-Unterstützung.- 2: Praxis.- 8 Compilerbaupraktikum.- 9 Java Die Programmiersprache.- 9.1 Java-Merkmale.- 9.2 Objekte in Java.- 9.3 Ausdrücke und Statements.- 9.4 Einschränkungen.- 9.5 Aufgaben.- 10 Das MAX-System.- 10.1 Eigenschaften.- 10.2 MAX-Spezifikationen.- 10.3 Ordnungssortierte Terme.- 10.4 Occurrence- bzw. Knotensorten.- 10.5 Muster.- 10.5.1 Sondersymbole in den Mustern.- 10.5.2 Mustersyntax.- 10.6 Attribute.- 10.7 Funktionen.- 10.8 Kontextbedingungen.- 10.9 Generierung eines Java-Übersetzers mit dem MAX-System.- 10.10 Aufgaben.- 11 Befehle der virtuellen Java-Maschine.- 11.1 Konstanten auf den Keller laden.- 11.2 Lokale Variablen auf den Keller laden.- 11.3 Speichern in eine lokale Variable.- 11.4 Manipulation des Kellers.- 11.5 Behandlung von Objekten.- 11.6 Arithmetische Befehle.- 11.7 Sprungbefehle.- 11.8 Methodenaufruf und Rücksprung.- 11.9 Überprüfung der Klassenzugehörigkeit.- 11.10 Erzeugung des JVM-Codes.- 12 Übersetzerspezifikation.- 12.1 Bindungsanalyse (Identifikation).- 12.1.1 Ziele der Bindungsanalyse.- 12.1.2 Bindungsanalyse für Java.- 12.1.3 Aufgaben.- 12.2 Typdeklarationen und Typisierung.- 12.2.1 Typdeklarationen.- 12.2.2 Typisierung von Ausdrücken.- 12.2.3 Aufgaben.- 12.3 MAX-Spezifikation der Klassendatei.- 12.3.1 Aufgaben.- 12.4 Ausdrücke und ihre Codeerzeugung.- 12.4.1 Wert eines Ausdrucks.- 12.4.2 Codeerzeugung für Ausdrücke.- 12.5 Statements und ihre Codeerzeugung.- 12.5.1 Statements.- 12.5.2 Code für Statements.- 12.5.3 Ausdrücke als Statements.- 12.5.4 Aufgaben.- 12.6 Methodendeklaration.- 12.6.1 Abstrakte Syntax.- 12.6.2 Methodeneinträge in die Klassendatei.- 12.6.3 Attributierung für Method@-Knoten.- 12.7 Kellerrahmen von Java-Methodeninkarnationen.- 12.8 Methodenaufruf.- 12.8.1 Abstrakte Syntax.- 12.8.2 Methodenreferenzeinträge im Konstantenpool.- 12.8.3 JVM-Code.- 12.8.4 Attributierung für MethodCall@-Knoten.- 12.8.5 Aufgaben.- 12.9 Vererbung.- 12.9.1 Vererbung in Java.- 12.9.2 Implementierung von Vererbung.- 12.9.3 Berücksichtigung der Vererbungshierarchie.- 12.9.4 Implementierung von super.- 12.9.5 Aufgaben.- 12.10 Ausgabeschnittstelle.- 12.10.1 Java-Klassen für print-Ausgaben.- 12.10.2 Code für print-Ausgaben.- 12.10.3 Aufgaben.- Anhang A: Klassenfile und Bytecode.- Anhang B: Java-Syntax.- Literatur.

Produktinformationen

Titel: Übersetzung objektorientierter Programmiersprachen
Untertitel: Konzepte, abstrakte Maschinen und Praktikum Java-Compiler
Autor:
EAN: 9783540642565
ISBN: 978-3-540-64256-5
Format: Kartonierter Einband
Hersteller: Springer Berlin
Herausgeber: Springer Berlin Heidelberg
Genre: Programmiersprachen
Anzahl Seiten: 287
Gewicht: 464g
Größe: H235mm x B155mm x T16mm
Jahr: 1998
Untertitel: Deutsch
Auflage: 1998

Weitere Produkte aus der Reihe "Springer-Lehrbuch"