Offensichtlich ist die Wahrnehmbarkeit von Menschen und einem elektronischen Gerät wie einem Computer anders. Menschen können alles durch die natürlichen Sprachen verstehen, ein Computer dagegen nicht. Der Computer benötigt einen Übersetzer, um die in der vom Menschen lesbaren Form geschriebenen Sprachen in die vom Computer lesbare Form zu konvertieren.
Compiler und Interpreter sind die Sprachenübersetzer. Was ist ein Sprachübersetzer? Diese Frage könnte sich in Ihrem Kopf stellen.
Ein Sprachübersetzer ist eine Software, die die Programme aus einer Ausgangssprache, die in einer von Menschen lesbaren Form vorliegen, in ein äquivalentes Programm in einer Objektsprache übersetzt. Die Quellsprache ist im Allgemeinen eine Programmiersprache auf hoher Ebene, und die Objektsprache ist typischerweise die Maschinensprache eines tatsächlichen Computers.
Vergleichstabelle
Basis zum Vergleich | Compiler | Dolmetscher |
---|---|---|
Eingang | Es dauert jeweils ein ganzes Programm. | Es dauert jeweils nur eine Zeile Code oder Anweisung. |
Ausgabe | Es generiert einen Zwischenobjektcode. | Es erzeugt keinen Zwischenobjektcode. |
Arbeitsmechanismus | Die Kompilierung erfolgt vor der Ausführung. | Zusammenstellung und Ausführung finden gleichzeitig statt. |
Geschwindigkeit | Vergleichsweise schneller | Langsamer |
Erinnerung | Der Speicherbedarf ist mehr auf die Erstellung von Objektcode zurückzuführen. | Es erfordert weniger Speicher, da kein Zwischenobjektcode erstellt wird. |
Fehler | Alle Fehler nach der Kompilierung gleichzeitig anzeigen. | Zeigt den Fehler jeder Zeile nacheinander an. |
Fehlererkennung | Schwer | Leichter vergleichsweise |
Zugehörige Programmiersprachen | C, C ++, C #, Scala, Typoscript verwendet Compiler. | Java, PHP, Perl, Python, Ruby verwendet einen Interpreter. |
Definition von Compiler
Ein Compiler ist ein Programm, das ein Programm liest, das in der Hochsprache geschrieben ist, und es in die Maschine oder die Niedrigsprache konvertiert und die im Programm vorhandenen Fehler meldet. Es konvertiert den gesamten Quellcode auf einmal oder benötigt dazu mehrere Durchläufe, aber der Benutzer erhält schließlich den kompilierten Code, der zur Ausführung bereit ist.
Compiler arbeitet in Phasen; Verschiedene Stufen können in zwei Teile gruppiert werden:
- Die Analysephase des Compilers wird auch als Frontend bezeichnet, in dem das Programm in grundlegende Bestandteile unterteilt wird und die Grammatik, Semantik und Syntax des Codes überprüft, woraufhin der Zwischencode generiert wird. Die Analysephase umfasst einen lexikalischen Analysator, einen semantischen Analysator und einen Syntaxanalysator.
- Die Synthesephase des Compilers wird auch als Back-End bezeichnet, in dem der Zwischencode optimiert und der Zielcode generiert wird. Die Synthesephase beinhaltet Code Optimizer und Code Generator.
PHASEN DES COMPILERS
Lassen Sie uns nun die Arbeitsweise jeder Stufe im Detail verstehen.
- Lexical Analyzer : Es scannt den Code als Zeichenstrom, gruppiert die Zeichenfolge zu Lexemen und gibt eine Folge von Token mit Bezug zur Programmiersprache aus.
- Syntax Analyzer : In dieser Phase werden die Token, die in der vorherigen Stufe generiert wurden, anhand der Grammatik der Programmiersprache geprüft, ob die Ausdrücke syntaktisch korrekt sind oder nicht. Es macht dafür Parsing-Bäume.
- Semantic Analyzer : Überprüft, ob die in der vorherigen Phase generierten Ausdrücke und Anweisungen den Regeln der Programmiersprache entsprechen oder nicht, und erstellt kommentierte Parsing-Bäume.
- Zwischencodegenerator : Er erzeugt einen äquivalenten Zwischencode des Quellcodes. Es gibt viele Darstellungen des Zwischencodes, aber TAC (Three Address Code) wird am häufigsten verwendet.
- Code Optimizer : Es verbessert den Zeit- und Platzbedarf des Programms. Dazu wird der im Programm vorhandene redundante Code eliminiert.
- Codegenerator: Dies ist die letzte Phase des Compilers, in der der Zielcode für eine bestimmte Maschine generiert wird. Es führt Operationen wie Speicherverwaltung, Registerzuweisung und maschinenspezifische Optimierung durch.
Bei der Symboltabelle handelt es sich in gewisser Weise um eine Datenstruktur, die die Kennungen zusammen mit dem relevanten Datentyp verwaltet, den sie speichert. Error Handler erkennt, meldet und korrigiert die Fehler, die zwischen den verschiedenen Phasen eines Compilers auftreten.
Definition von Dolmetscher
Der Interpreter ist eine Alternative zum Implementieren einer Programmiersprache und führt dieselbe Arbeit aus wie ein Compiler. Der Interpreter führt eine Lexing-, Parsing- und Typprüfung ähnlich einem Compiler durch. Interpreter verarbeitet den Syntaxbaum jedoch direkt, um auf Ausdrücke zuzugreifen und Anweisungen auszuführen, anstatt Code aus dem Syntaxbaum zu generieren.
Ein Interpreter kann es erforderlich machen, denselben Syntaxbaum mehr als einmal zu verarbeiten. Aus diesem Grund ist die Interpretation vergleichsweise langsamer als die Ausführung des kompilierten Programms.
Kompilierung und Interpretation wahrscheinlich zur Implementierung einer Programmiersprache. Wenn ein Compiler Code auf mittlerer Ebene generiert, wird der Code interpretiert und nicht in Maschinencode kompiliert.
Die Verwendung eines Interpreters ist während der Programmentwicklung von Vorteil, wobei der wichtigste Teil darin besteht, eine Programmänderung schnell testen zu können, anstatt das Programm effizient auszuführen.
Hauptunterschiede zwischen Compiler und Interpreter
Schauen wir uns die wichtigsten Unterschiede zwischen Compiler und Interpreter an.
- Der Compiler nimmt ein Programm als Ganzes und übersetzt es, der Interpreter übersetzt jedoch eine Programmanweisung für Anweisung.
- Bei einem Compiler wird ein Zwischencode oder ein Zielcode generiert. Im Gegensatz zu Interpreter erzeugt kein Zwischencode.
- Ein Compiler ist vergleichsweise schneller als Interpreter, da der Compiler das gesamte Programm auf einmal durchführt, wohingegen Interpreter jede Codezeile nach der anderen kompilieren.
- Der Compiler benötigt aufgrund der Generierung von Objektcode mehr Speicher als Interpreter.
- Der Compiler zeigt alle Fehler gleichzeitig an, und es ist schwierig, die Fehler in den Anzeigefehlern der Kontrastinterpreter der einzelnen Anweisungen nacheinander zu erkennen, und es ist einfacher, Fehler zu erkennen.
- Wenn im Compiler ein Fehler im Programm auftritt, stoppt er seine Übersetzung und nach dem Entfernen eines Fehlers wird das gesamte Programm erneut übersetzt. Im Gegenteil, wenn ein Fehler im Interpreter auftritt, verhindert er dessen Übersetzung, und nachdem der Fehler behoben wurde, wird die Übersetzung fortgesetzt.
- In einem Compiler erfordert der Prozess zwei Schritte, in denen zuerst Quellcode in ein Zielprogramm übersetzt und dann ausgeführt wird. Während des Dolmetschers ist dies ein einstufiger Prozess, in dem der Quellcode gleichzeitig kompiliert und ausgeführt wird.
- Der Compiler wird in Programmiersprachen wie C, C ++, C #, Scala usw. verwendet. Zum anderen wird Interpreter in Sprachen wie Java, PHP, Ruby, Python usw. verwendet.
Fazit
Sowohl Compiler als auch Interpreter sind für die gleiche Arbeit gedacht, unterscheiden sich jedoch in den Betriebsabläufen. Compiler verwendet Quellcode auf aggregierte Weise, während Interpreter konstituierende Bestandteile des Quellcodes, dh Anweisung für Anweisung, übernimmt.
Obwohl sowohl der Compiler als auch der Interpreter bestimmte Vor- und Nachteile haben, werden interpretierte Sprachen als plattformübergreifend betrachtet, dh der Code ist portabel. Es muss auch keine Anweisung kompilieren, die zuvor im Gegensatz zu Compiler zeitsparend war. Kompilierte Sprachen sind in Bezug auf den Kompilierungsprozess schneller.