Grundlagen der Programmiersprachen und Compiler
Eingeordnet in Informatik
Geschrieben am in Deutsch mit einer Größe von 36,15 KB
Definition: Algorithmus
Die folgende Definition: "Rezept für eine Reihe von logischen Schritten, um Probleme der gleichen Art zu lösen" entspricht:
A | Boolesche Logik | C | Ein Algorithmus |
B | Eine Programmiersprache | D | Ein Computerprogramm |
Antwort (C)
Speicherprogrammierbare Computer
Wenn die Folge von Anweisungen, die von einem Computer ausgeführt werden soll, im Hauptspeicher abgelegt ist, so heißt es, dass der Computer intern programmiert ist, und das ist, was definiert:
A | Quellsprache | C | Speicherprogrammierbare |
B | Zielsprache | D | Programm-Anweisungen |
Antwort (C)
Konzept: Stapelverarbeitung
Dies sind Prozesse, bei denen die Ein- und Ausgaben Dateien in Stapeln (Chargen) sind, deren Datensätze von einem Programm verarbeitet werden.
Konzept: Integriertes System
Dies sind Systeme, bei denen das EDV-System und der Computer ein integraler Bestandteil eines größeren Systems sind. Ein Computerausfall bedeutet in der Regel auch einen Ausfall des übergeordneten Systems.
Definition: Syntax
Die Anordnung der Worte als Elemente in einem Satz, um eine bestimmte Beziehung zu zeigen, beschrieben durch die Reihenfolge der Symbole, die wirksame Programme bauen können, ist die Definition:
A | Semantik | C | Syntax |
B | Eine Programmiersprache | D | Ein Computerprogramm |
Antwort (C)
Elemente der Syntax
Im Allgemeinen wird der Stil der Syntax einer Sprache durch die Wahl von mehreren grundlegenden Elementen der Syntax bestimmt. Drei der sieben bedeutendsten, die in der Vorlesung behandelt wurden, sind:
A | Menge von Zeichen, Operationssymbole, optionale Wörter | C | Zeichensatz, Leerzeichen, Bedeutungen |
B | Schlüssel- und reservierte Wörter, Data Dictionary, Kommentare | D | Keines der oben genannten |
Antwort (A)
Funktionen des Semantik-Analysators
Die genauen Funktionen des Semantik-Analysators variieren erheblich, je nach Sprache und logischer Organisation des Übersetzers.
Zwei der häufigsten sind:
A | Operationszeichen Behandlung optionaler Worte | C | Die Pflege der Symboltabelle Fehlererkennung |
B | Register der reservierten Wörter Unterbrechungen von Daten | D | Keines der oben genannten |
Antwort (C)
Konzept: Lexikalische Analyse
Sie ist der Beginn einer Übersetzung. Dabei wird die Reihenfolge der Zeichen in ihre elementaren Teile gruppiert: Bezeichner, Trennzeichen, Operationssymbole, Zahlen, Schlüsselwörter, optionale Leerzeichen, Kommentare und alles andere. Das Ergebnis sind die sogenannten Lexeme oder "Token".
Rolle der Optimierung
Erklären Sie, welche Rolle die "Optimierung" als eine Stufe in der Übersetzung eines Programms spielt: Sie verfeinert das Ergebnis der semantischen Auswertung, das vom Analysator erstellt wurde, um Vielseitigkeit und Effizienz zu verbessern, und produziert in den meisten Fällen ein Objektprogramm mit besserer Leistung.
Konzept: Syntaktische Einheit
Eine Folge von Lexemen ist eine syntaktische Einheit wie ein Ausdruck, ein Satz, eine Anweisung oder ein Unterprogrammaufruf.
Ausführung von Programmen
Damit das Programm im Speicher des Computers ausgeführt werden kann, wird es geschrieben in:
A | Ausgangssprache | C | Ein Algorithmus |
B | Eine Programmiersprache | D | Eine Maschinensprache |
Antwort (D)
Teil des Compilers: Front End
Es ist der Teil eines Compilers, der den Quellcode analysiert, um seine Gültigkeit zu überprüfen und die Werte der Symboltabelle zu füllen. Er ist oft unabhängig von der Plattform, für die kompiliert wird.
A | Front End | C | Speicherprogrammierbare |
B | Objektcode | D | Back End |
Antwort (A)
Konzept: Sprach-Interpreter
Er analysiert das Quellprogramm und führt es direkt aus, ohne äquivalenten Code zu generieren. Seine Wirkung ist vergleichbar mit einem menschlichen Dolmetscher, der gehörte Phrasen sofort übersetzt, ohne sie permanent aufzuschreiben. Beispiele für interpretierte Sprachen sind BASIC, Lisp und Prolog.
Konzept: Zentraler PC oder Mainframe
Große Computer, die eine Vielzahl von Benutzern bedienen, sowohl für Stapelverarbeitung als auch zur Adressierung einer Reihe von verbundenen Workstations.
Problem: Zweideutigkeit
Es ist ein zentrales Problem bei der Konstruktion jeder Sprache, die zwei oder mehr unterschiedliche Interpretationen bei der Durchführung einer Operation oder einer Reihe von Anweisungen zulässt:
A | Fehlende Definition | C | Semantikfehler |
B | Syntaxfehler | D | Zweideutigkeit |
Antwort (D)
Identifizierung von Ausdrücken und Aussagen
Die Ausdrücke und Aussagen werden identifiziert als:
A | Programme und Unterstrukturen | C | Operationssymbole |
B | Syntaktische Elemente der Sprache | D | Grundlegende Anweisungen einer Sprache |
Antwort (B)
Konzept: Syntaktische Analyse
Hier werden die strukturellen Elemente des Programms (Anweisungen, Ausdrücke usw.) mithilfe der vom lexikalischen Analysator produzierten Lexeme ermittelt.
Rolle von "Bindung und Laden"
Erklären Sie, welche Rolle "Die Bindung und das Laden" als ein Schritt in der Übersetzung eines Programms spielen:
Dies ist die Phase, in der das Programm auf externe Daten oder andere Applets verweist, die verschiedenen Segmente des übersetzten Codes im Speicher verknüpft und lädt, mit einer angehängten Tabelle, um die Adressen der Daten und Programme im Code, wo nötig, korrekt zu verknüpfen.
Konzept: Terminalsymbole
Die Symbole, die verwendet werden, um Zeichenketten abzuleiten, die den Grammatikregeln einer Sprache entsprechen, werden Terminalsymbole genannt.
Phase: Code-Generierung
Nachdem die Übersetzung des Programms optimiert wurde, muss der Übersetzer die assemblierte Ausgabe in Anweisungen und Aussagen umwandeln, die in Maschinensprache gelesen werden können.
Diese Phase in der Übersetzung eines Programms wird bezeichnet als:
A | Bau- und Unterprogramm | C | Code-Generierung |
B | Semantische Analyse | D | Sprachproduktion |
Antwort (C)
Grundlegende Aspekte von Programmiersprachen
Alle Programme geben eine Reihe von Operationen an, die auf bestimmte Daten in einer bestimmten Reihenfolge angewendet werden. Es gibt grundlegende Unterschiede zwischen den Sprachen in drei grundlegenden Aspekten:
A) Art der Daten, die unterstützt werden, Art der Operationen und Mechanismen zur Steuerung der Reihenfolge der Operationen
B) Typen, die das Lesen unterstützen, verfügbarer Speicher-Typen und Mechanismen zur Steuerung der Reihenfolge der Operationen
C) Art der Sequenzdaten, die unterstützt werden, Art der verfügbaren Codes und Mechanismen zur Überwachung der Operationen
D) Art des Mechanismus zur Kontrolle von Daten, Art der verfügbaren Transaktionen und die Reihenfolge der Operationen
Antwort (A)
Definition: Elementares Datenobjekt
Ein Datenobjekt ist elementar, wenn:
A | es ein Aggregat von anderen Datenobjekten ist | C | es einen Datenwert enthält, der immer als eine Einheit manipuliert wird |
B | es ein Array von anderen Datenobjekten ist | D | es einen Datenwert enthält, der immer als ein Objekt manipuliert wird |
Antwort (C)
Begriff: Datentyp
Ein Datentyp ist eine Art von integriertem Datenobjekt, um eine Reihe von Operationen zu erstellen und zu manipulieren.
Begriff: Repräsentation im Speicher
Die gespeicherte Repräsentation dient dazu, Datenobjekte der Datentypen im Speicher des Computers während der Programmausführung darzustellen.
Konzept: Abstrakter Datentyp
Wir definieren einen abstrakten Datentyp als:
- Eine Menge von Datenobjekten mit einer oder mehreren Typdefinitionen
- Eine Menge von abstrakten Operationen auf diesen Datenobjekten
- Kapselung der Menge, so dass der Benutzer des neuen Typs die Datenobjekte nicht manipulieren kann, außer durch die Verwendung der definierten Operationen.
Unterstützung für Abstraktion
Eine Programmiersprache bietet Unterstützung für die Abstraktion in zweierlei Hinsicht:
A) 1. Bereitstellung von Platz für zwei Objekte, 2. Bereitstellung von Hilfe für den Programmierer bei der Gestaltung von Werkzeugen
B) 1. Bereitstellung eines virtuellen Computers, 2. Bereitstellung von Vermittlern, die dem Programmierer helfen, Abstraktionen zu bauen
C) 1. Bereitstellung einer virtuellen Verbindung, 2. Bereitstellung von Daten, die dem Programmierer helfen, Redundanz herzustellen
D) 1. Bereitstellung einer Struktur zur Unterstützung des Programmierers, 2. Erleichterung des Aufbaus von Abstraktionen auf virtuellen Verbindungen
Antwort (B)
Größter Speicherblock
Der größte Speicherblock auf einem System sollte benannt werden, um zu speichern:
A | Kontrollroutinen des Speicher-Managers zur Laufzeit | C | Die Codesegmente, die von einem Benutzer erstellte Programme repräsentieren |
B | Schlüssel und Schlüsselwörter, Data Dictionary, Kommentare | D | keines der oben genannten |
Antwort (C)
Konzept: "Verheimlichung von Informationen"
Das Zurückhalten von Informationen ist in erster Linie eine Frage der Programmgestaltung. Eine gekapselte Abstraktion ist nur wirksam, wenn die Sprache den Zugriff auf die versteckten Informationen verbietet.
Elemente, die Speicher erfordern
Nennen Sie mindestens zwei Elemente, die Speicher erfordern, und beschreiben Sie sie kurz:
Codesegmente für kompilierte Programme
Laufzeit-Systemprogramme
Datenstrukturen und benutzerdefinierte Konstanten
Rücksprungadressen von Unterprogrammen
Temporäre Auswertung von Ausdrücken
Ablaufsteuerungsstrukturen
Die Ablaufsteuerungsstrukturen lassen sich bequem in vier Gruppen einteilen, erwähnen Sie mindestens zwei von ihnen:
Ausdrücke
Anweisungen
Deklarative Programmierung
Applets
Konzept: Syntaxbaum
Das Parsen erzeugt eine hierarchische Struktur, die Kette der lexikalischen Komponenten wird zu syntaktischen Bäumen, die durchgeführt werden durch... (Der Satz ist unvollständig im Original)
Compiler-Phasen (Strong et al., 1958)
Im Jahr 1958 schlugen Strong und andere eine Lösung für das Problem vor, dass ein Compiler von einer Reihe von Maschinen abgedeckt werden sollte. Dies wird durch die erste Teilung des Compilers in zwei Phasen erreicht, bezeichnet als:
A | Analysator und Synthesizer | C | Front End und Back End |
B | Übersetzer und Integrator | D | keines der oben genannten |
Antwort (C)
Fehlererkennung im Compiler
Die Phasen, die normalerweise einen Großteil der vom Compiler erkannten Fehler behandeln, sind:
Ein | Lexikalische Analyse | C | Code-Optimierung |
B | Syntaktische und semantische Analyse | D | Code-Generierung |
Antwort (B)
Unterschied: Compiler vs. Interpreter
Was ist der grundlegende Unterschied zwischen einem Compiler und einem Interpreter?
Compiler führen die Übersetzung zur Entwicklungszeit durch. Das heißt, das Programm läuft noch nicht. Der Compiler erhält den gesamten Quellcode, analysiert, optimiert und übersetzt ihn in Maschinensprache, sodass ein vollständiges Programm zur Ausführung bereitsteht.
Interpreter führen die Übersetzung zur Laufzeit durch. Das heißt, während das Programm ausgeführt wird, übersetzt der Interpreter die Anweisungen in Maschinensprache.
Software-Tools zur Quellcode-Manipulation
Viele Software-Tools, die Quellprogramme manipulieren, führen zuerst eine Analyse durch. Beispiele für solche Werkzeuge sind:
- Strukturierte Editoren
- Ästhetische Drucker
- Statische Verifizierer
- Interpreter
Geben Sie an, was mindestens zwei von ihnen sind.
Strukturierte Editoren
Strukturierte Editoren nehmen Eingaben als eine Folge von Befehlen zur Überprüfung eines Quellprogramms entgegen. Der strukturierte Editor führt nicht nur die Aufgaben der Erstellung und Änderung von Texten aus, sondern analysiert auch den Programmtext über die Eingabe des Quellprogramms hinaus, um eine entsprechende hierarchische Struktur zu erstellen.
Ästhetische Drucker
Ein ästhetischer Drucker analysiert ein Programm und druckt es so aus, dass die Programmstruktur deutlich sichtbar ist. Zum Beispiel können Kommentare in einer speziellen Schrift erscheinen, und Sätze können mit einem Einzug proportional zur Tiefe der Verschachtelung in der hierarchischen Organisation dieser Sätze erscheinen.
Statische Verifizierer
Ein statischer Verifizierer liest ein Programm, analysiert es und versucht, mögliche Programmfehler zu entdecken, ohne es auszuführen. Der Analyseteil ähnelt dem, der bei der Optimierung von Compilern gefunden wird.
Interpreter
Anstatt ein Objektprogramm als Ergebnis einer Übersetzung zu generieren, führt ein Interpreter eine der Operationen aus, die im Quellprogramm enthalten sind.
Modulare Programmierung
Um ein umfangreiches Programm zu erstellen, wird es in eine Reihe von Komponenten unterteilt, die Module genannt werden. Die Modulbauweise umfasst in der Regel zwei Aspekte:
Eine funktionale Zerlegung des Programms
Eine Datenzerlegung des Programms
Speicherzuweisung bei Unterprogrammaufrufen
Eine Operation, die oft eine größere Nachfrage nach Speicherzuweisung stellt, ist:
Die Aktivierung eines Datensatzes eines Unterprogramms und anderer Informationen über den Aufruf eines Unterprogramms
Konzept: Statisches Speicher-Management
Erklären Sie das Konzept des "statischen Speicher-Managements":
Die einfachste Form der Zuweisung ist die statische Zuweisung. Gewöhnlich wird der Speicher für Programm-Codesegmente und globale Benutzerdaten statisch zugewiesen, ebenso wie Puffer für E/A und diverse sonstige Systemdaten.
Konzept: Infix-Notation
Diese Schreibweise ist besser geeignet für binäre Operationen, wobei das Operationssymbol zwischen den beiden Operanden geschrieben wird, basierend auf der Notation, die üblicherweise für einfache arithmetische, relationale und logische Operationen verwendet wird.
Begriff: Versteckte oder verdeckte Informationen
Das Zurückhalten von Informationen ist in erster Linie eine Frage der Programmgestaltung. Eine gekapselte Abstraktion ist nur wirksam, wenn die Sprache den Zugriff auf die versteckten Informationen verbietet.
Unterstützung für Abstraktion (Wiederholung)
Eine Programmiersprache bietet Unterstützung für die Abstraktion in zweierlei Hinsicht:
1. Bereitstellung eines virtuellen Computers
2. Bereitstellung von Hilfe für den Programmierer, um Abstraktionen zu bauen
Größter Speicherblock (Wiederholung)
Der größte Speicherblock auf einem System sollte benannt werden, um zu speichern:
A | Kontrollroutinen des Speicher-Managers zur Laufzeit | C | Die Codesegmente, die von einem Benutzer erstellte Programme repräsentieren |
B | Schlüssel und Schlüsselwörter, Data Dictionary, Kommentare | D | keines der oben genannten |
Antwort (C)
Konzept: Temporäre Speicherbereiche
Gewöhnlich arbeiten die Input- und Output-Operationen mit Puffern, die als temporärer Speicher für Daten zwischen Bereichen dienen, in denen die Übergangszeit gebracht wird und die Ausführung des Programms die Platzierung eines anderen Datensatzes erfordert.
Elemente, die Speicher erfordern (Wiederholung)
Nennen Sie mindestens zwei Elemente, die Speicher erfordern, und beschreiben Sie sie kurz:
Codesegmente für kompilierte Programme
Laufzeit-Systemprogramme
Datenstrukturen und benutzerdefinierte Konstanten
Rücksprungadressen von Unterprogrammen
Temporäre Auswertung von Ausdrücken
Ablaufsteuerungsstrukturen (Wiederholung)
Die Ablaufsteuerungsstrukturen lassen sich bequem in vier Gruppen einteilen, erwähnen Sie mindestens zwei von ihnen:
Ausdrücke
Anweisungen
Deklarative Programmierung
Applets
Konzept: Syntaxbaum (Wiederholung)
Das Parsen erzeugt eine hierarchische Struktur, die Kette der lexikalischen Komponenten wird zu syntaktischen Bäumen, die durchgeführt werden durch... (Der Satz ist unvollständig im Original)
Lexikalische Erkennung (Rabin und Scott, 1959)
Am Ende der 50er Jahre wurde die Grundlage für die Verteilung der Aufgaben innerhalb eines Compilers gelegt. So schlugen Rabin und Scott im Jahr 1959 die Verwendung von deterministischen und nichtdeterministischen Automaten für die... vor:
A | Semantische Analyse | C | Syntaktische Analyse |
B | Lexikalische Erkennung | D | keines der oben genannten |
Antwort (B)
Fehlererkennung im Compiler (Wiederholung)
Die Phasen, die normalerweise einen Großteil der vom Compiler erkannten Fehler behandeln, sind:
Ein | Lexikalische Analyse | C | Code-Optimierung |
B | Syntaktische und semantische Analyse | D | Code-Generierung |
Antwort (B)
Unterschied: Compiler vs. Assembler
Was ist der grundlegende Unterschied zwischen einem Compiler und einem Assembler?
Compiler übersetzen Quellcode (oft Hochsprachen) in Maschinencode oder Zwischencode. Sie führen komplexe Analysen und Optimierungen durch und erzeugen ein ausführbares Programm.
Assembler übersetzen Assemblersprache (eine Low-Level-Sprache, die Maschinencodeanweisungen direkt repräsentiert) in Maschinencode. Die Übersetzung ist in der Regel eine direkte 1:1-Abbildung von Anweisungen.
Software-Tools zur Quellcode-Manipulation (Wiederholung)
Viele Software-Tools, die Quellprogramme manipulieren, führen zuerst eine Analyse durch. Beispiele für solche Werkzeuge sind:
- Strukturierte Editoren
- Ästhetische Drucker
- Statische Verifizierer
- Interpreter
Geben Sie an, was mindestens zwei von ihnen sind.
Strukturierte Editoren
Strukturierte Editoren nehmen Eingaben als eine Folge von Befehlen zur Überprüfung eines Quellprogramms entgegen. Der strukturierte Editor führt nicht nur die Aufgaben der Erstellung und Änderung von Texten aus, sondern analysiert auch den Programmtext über die Eingabe des Quellprogramms hinaus, um eine entsprechende hierarchische Struktur zu erstellen.
Ästhetische Drucker
Ein ästhetischer Drucker analysiert ein Programm und druckt es so aus, dass die Programmstruktur deutlich sichtbar ist. Zum Beispiel können Kommentare in einer speziellen Schrift erscheinen, und Sätze können mit einem Einzug proportional zur Tiefe der Verschachtelung in der hierarchischen Organisation dieser Sätze erscheinen.
Statische Verifizierer
Ein statischer Verifizierer liest ein Programm, analysiert es und versucht, mögliche Programmfehler zu entdecken, ohne es auszuführen. Der Analyseteil ähnelt dem, der bei der Optimierung von Compilern gefunden wird.
Interpreter
Anstatt ein Objektprogramm als Ergebnis einer Übersetzung zu generieren, führt ein Interpreter eine Operation aus.