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.

Verwandte Einträge: