Dolmetscher, der (rechnet)

In der Informatik hat ein Dolmetscher normalerweise ein Computerprogramm vor, das durchführt, d. h., auf einer Programmiersprache geschriebene Instruktionen leistet. Ein Dolmetscher kann ein Programm das irgendein sein

  1. führt den Quellcode direkt durch
  2. übersetzt Quellcode in etwas effiziente Zwischendarstellung (Code) und führt sofort diesen durch
  3. ausführlich führt versorgten vorkompilierten Code durch, der durch einen Bearbeiter gemacht ist, der ein Teil des Dolmetscher-Systems ist

Frühe Versionen der Lispeln-Programmiersprache und Dartmouth GRUNDLEGEND würden Beispiele des Typs 1 sein.

Perl, Pythonschlange, MATLAB und Ruby sind Beispiele des Typs 2, während UCSD Pascal Typ 3 ist: Quellprogramme werden vorzeitig kompiliert und als Maschine unabhängiger Code versorgt, der dann an der Durchlaufzeit verbunden und von einem Dolmetscher und/oder Bearbeiter (für JIT Systeme) durchgeführt wird. Einige Systeme, wie Plausch, zeitgenössische Versionen von GRUNDLEGENDEN, Java und anderen, können sich auch 2 und 3 verbinden.

Während die Interpretation und das Kompilieren die zwei Hauptmittel sind, durch die Programmiersprachen durchgeführt werden, sind das nicht völlig gegenseitig exklusive Kategorien, einer der Gründe, die sind, dass die meisten Interpretationssysteme auch etwas Übersetzungsarbeit gerade wie Bearbeiter durchführen. Die Begriffe "interpretierte Sprache" oder "kompilierte Sprache" bedeuten bloß, dass die kanonische Durchführung dieser Sprache ein Dolmetscher oder ein Bearbeiter ist; eine hohe Sprache ist grundsätzlich eine Abstraktion, die von besonderen Durchführungen (ideal) unabhängig ist.

Geschichte

Die erste interpretierte höhere Programmiersprache war wahrscheinlich Lispeln.

Lispeln wurde zuerst von Steve Russell auf einem Computer von IBM 704 durchgeführt. Russell hatte das Papier von McCarthy gelesen und begriffen (zur Überraschung von McCarthy), dass das Lispeln eval Funktion im Maschinencode durchgeführt werden konnte. Das Ergebnis war ein Arbeitslispeln-Dolmetscher, der verwendet werden konnte, um Lispeln-Programme, oder richtiger zu führen, 'Lispeln-Ausdrücke bewerten Sie.'

Vorteile und Nachteile, Dolmetscher zu verwenden

Programmierer schreiben gewöhnlich Programme im hohen Code, den die Zentraleinheit nicht durchführen kann; so muss dieser Quellcode in den Maschinencode umgewandelt werden. Diese Konvertierung wird durch einen Bearbeiter oder einen Dolmetscher getan. Ein Bearbeiter macht die Konvertierung gerade einmal, während ein Dolmetscher es normalerweise jedes Mal umwandelt, wenn ein Programm durchgeführt wird (oder auf einigen Sprachen wie frühe Versionen von GRUNDLEGENDEN, jedes Mal, wenn eine einzelne Instruktion durchgeführt wird).

Entwicklungszyklus

Während der Programm-Entwicklung nimmt der Programmierer häufige Änderungen mit dem Quellcode vor. Mit einem Bearbeiter jedes Mal nimmt der Programmierer eine Änderung mit dem Quellcode vor, s/he muss auf den Bearbeiter warten, um eine Kompilation der veränderten Quelldateien zu machen, und alle binären Codedateien zusammen zu verbinden, bevor das Programm durchgeführt werden kann. Je größer das Programm, desto länger der Programmierer warten muss, um die Ergebnisse der Änderung zu sehen. Im Vergleich tut ein Programmierer, der einen Dolmetscher verwendet, viel weniger Warten, weil der Dolmetscher gewöhnlich gerade den Code übersetzen, der auf einer Zwischendarstellung wird arbeitet (oder ihn überhaupt nicht übersetzen muss), so viel weniger Zeit verlangend, bevor die Änderungen geprüft werden können.

Vertrieb

Ein Bearbeiter wandelt Quellcode in die binäre Instruktion für eine Architektur eines spezifischen Verarbeiters um, so es weniger tragbar machend. Diese Konvertierung wird gerade einmal, auf der Umgebung des Entwicklers, und danach gemacht dieselbe Dualzahl kann zu den Maschinen des Benutzers verteilt werden, wo es ohne weitere Übersetzung durchgeführt werden kann. Ein böser Bearbeiter kann binären Code für die Benutzermaschine erzeugen, selbst wenn es einen verschiedenen Verarbeiter hat als die Maschine, wo der Code kompiliert wird.

Ein interpretiertes Programm kann als Quellcode verteilt werden. Es muss in jeder Endmaschine übersetzt werden, die mehr Zeit nimmt, aber den Programm-Vertrieb unabhängig der Architektur der Maschine macht. Jedoch ist die Beweglichkeit des interpretierten Quellcodes von der Zielmaschine abhängig, die wirklich einen passenden Dolmetscher hat. Wenn der Dolmetscher zusammen mit der Quelle versorgt werden muss, ist der gesamte Installationsprozess komplizierter als Übergabe eines monolithischen rechtskräftigen.

Die Tatsache, die Code interpretiert hat, kann leicht gelesen und von Menschen kopiert werden kann von Bedeutung aus dem Gesichtswinkel vom Copyright sein. Jedoch, verschiedene Systeme der Verschlüsselung

und Verfinsterung besteht. Die Übergabe des Zwischencodes, wie bytecode, hat eine ähnliche Wirkung zur Verfinsterung.

Leistungsfähigkeit

Der Hauptnachteil von Dolmetschern ist, dass, wenn ein Programm interpretiert wird, es normalerweise langsamer läuft, als wenn es kompiliert worden war. Der Unterschied in Geschwindigkeiten konnte winzig oder groß sein; häufig eine Größenordnung und manchmal mehr. Es nimmt allgemein länger, um ein Programm unter einem Dolmetscher zu führen, als, den kompilierten Code zu führen, aber man kann weniger Zeit brauchen, um es zu interpretieren, als die Gesamtzeit, die erforderlich ist, es zu kompilieren und zu führen. Das ist besonders wichtig, wenn prototyping und Code prüfend, wenn ein Zyklus "editieren, dolmetschen, kann Fehlersuchprogramm" häufig viel kürzer sein, als ein Editieren geführten Fehlersuchprogramm-Zyklus kompiliert.

Interpretation des Codes ist langsamer als das Laufen des kompilierten Codes, weil der Dolmetscher jede Behauptung im Programm jedes Mal analysieren muss, wenn es durchgeführt wird und dann führen Sie die gewünschte Handlung durch, wohingegen der kompilierte Code gerade die Handlung innerhalb eines festen durch die Kompilation bestimmten Zusammenhangs durchführt. Diese Laufzeitanalyse ist als "interpretierend oberirdisch" bekannt. Der Zugang zu Variablen ist auch in einem Dolmetscher langsamer, weil von Bezeichnern zu Speicherelementen kartografisch darzustellen, wiederholt an der Durchlaufzeit aber nicht während der Übersetzung getan werden muss.

Es gibt verschiedene Kompromisse zwischen der Entwicklungsgeschwindigkeit, wenn es einen Dolmetscher und der Ausführungsgeschwindigkeit verwendet, wenn es einen Bearbeiter verwendet. Einige Systeme (wie einige Lispelt), erlauben interpretiertem und kompiliertem Code, einander zu nennen und Variablen zu teilen. Das bedeutet, dass sobald eine Routine geprüft und unter dem Dolmetscher die Fehler beseitigt worden ist, kann sie kompiliert werden und so aus schnellerer Ausführung einen Nutzen ziehen, während andere Routinen entwickelt werden. Viele Dolmetscher führen den Quellcode nicht durch, weil er steht, aber wandeln Sie ihn in eine kompaktere innere Form um. Viele GRUNDLEGENDE Dolmetscher ersetzen Schlüsselwörter durch einzelne Byte-Jetons, die verwendet werden können, um die Instruktion in einem Sprung-Tisch zu finden. Andere erreichen noch höhere Niveaus des Programms compaction durch das Verwenden eines bitorientierten aber nicht einer byteorientierten Programm-Speicherstruktur, wo Befehl-Jetons vielleicht 5 Bit eines 16-Bit-Wortes besetzen, 11 Bit für ihr Etikett verlassend, oder operands richten können.

Ein Dolmetscher könnte denselben lexikalischen Analysator und parser wie der Bearbeiter gut verwenden und dann den resultierenden abstrakten Syntax-Baum interpretieren.

Rückwärtsbewegung

Interpretation kann als die alleinige Methode der Ausführung nicht verwendet werden: Wenn auch ein Dolmetscher selbst interpretiert werden kann, ist ein direkt durchgeführtes Programm irgendwo an der Unterseite vom Stapel erforderlich.

Schwankungen

Dolmetscher von Bytecode

Es gibt ein Spektrum von Möglichkeiten zwischen Interpretation und Kompilieren abhängig vom Betrag der durchgeführten Analyse, bevor das Programm durchgeführt wird. Zum Beispiel wird Emacs Lispeln zu bytecode kompiliert, der eine hoch komprimierte und optimierte Darstellung der Lispeln-Quelle ist, aber nicht Maschinencode (und deshalb nicht gebunden an jede besondere Hardware) ist. Dieser "kompilierte" Code wird dann von einem bytecode Dolmetscher (selbst geschrieben in C) interpretiert. Der kompilierte Code ist in diesem Fall Maschinencode für eine virtuelle Maschine, die nicht in der Hardware, aber im bytecode Dolmetscher durchgeführt wird. Dieselbe Annäherung wird mit Hervor in Offenen Firmware Systemen verwendeter Code verwendet: Die Quellsprache wird in "F Code" kompiliert (ein bytecode), der dann durch eine virtuelle Maschine interpretiert wird.

Steuertabellen - die notwendigerweise jemals keine Kompilieren-Phase durchzuführen brauchen - diktieren passenden algorithmischen Kontrollfluss über kundengerecht angefertigte Dolmetscher auf die ähnliche Mode bytecode Dolmetschern.

Abstrakte Syntax-Baumdolmetscher

Im Spektrum zwischen Interpretation und Kompilieren gestaltet eine andere Annäherung den Quellcode in optimierten Abstract Syntax Tree (AST) um, der dann das Programm im Anschluss an diese Baumstruktur durchführt, oder es verwendet, um heimischen Code Gerade rechtzeitig zu erzeugen. In dieser Annäherung muss jeder Satz gerade einmal grammatisch analysiert werden. Als ein Vorteil gegenüber bytecode behält der AST die globale Programm-Struktur und Beziehungen zwischen Behauptungen (der in einer bytecode Darstellung verloren wird), und wenn zusammengepresst, eine kompaktere Darstellung zur Verfügung stellt. So ist das Verwenden AST als ein besseres Zwischenformat für Gerade rechtzeitig Bearbeiter vorgeschlagen worden als bytecode. Außerdem erlaubt es, bessere Analyse während der Durchlaufzeit durchzuführen.

Jedoch, für Dolmetscher, verursacht ein AST mehr oberirdisch als ein bytecode Dolmetscher wegen Knoten, die mit der Syntax verbunden sind, die keine nützliche Arbeit, von einer weniger folgenden Darstellung (das Verlangen des Traversals von mehr Zeigestöcken) und vom Oberbesuch des Baums durchführt.

Gerade rechtzeitig Kompilation

Weiter ist das Verschmieren der Unterscheidung zwischen Dolmetschern, Dolmetschern des Byte-Codes und Kompilation gerade rechtzeitig Kompilation (oder JIT), eine Technik, in der die Zwischendarstellung zum heimischen Maschinencode an der Durchlaufzeit kompiliert wird. Das teilt die Leistungsfähigkeit zu, heimischen Code, auf Kosten der Anlauf-Zeit und des vergrößerten Speichergebrauches zu führen, wenn der bytecode oder AST zuerst kompiliert werden. Anpassungsfähige Optimierung ist eine Ergänzungstechnik, in der der Dolmetscher das laufende Programm im Profil darstellt und seine am meisten oft durchgeführten Teile in den heimischen Code kompiliert. Beide Techniken sind ein paar alte Jahrzehnte, auf Sprachen wie Plausch in den 1980er Jahren erscheinend.

Gerade rechtzeitig hat Kompilation Hauptströmungsaufmerksamkeit unter der Sprache implementers in den letzten Jahren, mit Java, dem.NET Fachwerk und den modernsten Durchführungen von JavaScript jetzt einschließlich JITs gewonnen.

Anwendungen

  • Dolmetscher werden oft verwendet, um Befehl-Sprachen durchzuführen, und Leim-Sprachen, seitdem jeder Maschinenbediener auf der Befehl-Sprache durchgeführt hat, sind gewöhnlich eine Beschwörung einer komplizierten Routine wie ein Redakteur oder Bearbeiter.
  • Das Selbständern des Codes kann auf einer interpretierten Sprache leicht durchgeführt werden. Das bezieht sich auf die Ursprünge der Interpretation im Lispeln und der Forschung der künstlichen Intelligenz.
  • Virtualisation. Für eine Hardware-Architektur beabsichtigter Maschinencode kann auf einem anderen Verwenden einer virtuellen Maschine geführt werden, die im Wesentlichen ein Dolmetscher ist.
  • Sandboxing: Ein Dolmetscher oder virtuelle Maschine werden nicht dazu gezwungen, wirklich alle Instruktionen der Quellcode durchzuführen, den sie bearbeitet. Insbesondere es kann sich weigern, Code durchzuführen, der irgendwelche Sicherheitseinschränkungen verletzt, unter denen es funktioniert.

Der geschlagene Karte-Dolmetscher

Der Begriff "Dolmetscher" hat sich häufig auf ein Stück der Einheitsrekordausrüstung bezogen, die geschlagene Karten lesen und die Charaktere in der menschlich-lesbaren Form auf der Karte drucken konnte. Der Dolmetscher von IBM 550 Numeric und Dolmetscher von IBM 557 Alphabetic sind typische Beispiele von 1930 und 1954 beziehungsweise.

Siehe auch

Zeichen und Verweisungen

Außenverbindungen


Der Charleston (Tanz) / Gleichung von Schrödinger
Impressum & Datenschutz