Die Definition, die Sie oben zitiert haben, ist zu allgemein, als dass ein Anfänger sie vollständig verstehen könnte. Lassen Sie mich sie daher einfach auf etwas vereinfachen, das wir praktisch sehen.
Compiler: ist ein Überbegriff für ein Programm, das Quellcode in einer Sprache verwendet und eine (oder mehrere) Ausgabedateien in einer anderen Sprache erstellt. In der Praxis verwenden wir diesen Begriff meistens, um einen Compiler wie gcc zu beschreiben, der C-Code als Eingabe verwendet und eine binäre ausführbare Datei (Maschinencode) als Ausgabe erzeugt.
Transpiler werden auch als Source-to-Source-Compiler bezeichnet. Im Wesentlichen handelt es sich also um eine Teilmenge von Compilern, die eine Quellcodedatei aufnehmen und in eine andere Quellcodedatei in einer anderen Sprache oder einer anderen Version derselben Sprache konvertieren . Die Ausgabe ist für einen Menschen allgemein verständlich. Diese Ausgabe muss noch einen Compiler oder Interpreter durchlaufen, um auf dem Computer ausgeführt werden zu können.
Einige Beispiele für Transpiler:
- Emscripten : Transpiliert C / C ++ in JavaScript
- Babel : Transpiliert ES6 + -Code in ES5 (ES6 und ES5 sind verschiedene Versionen oder Generationen der JavaScript-Sprache)
Was meinen sie nun mit "ähnlicher Abstraktionsebene": Wie ich bereits sagte, wird eine Quelldatei kompiliert / transpiliert, man kann argumentieren, dass Assemblersprache auch eine Quelldatei ist und gcc somit auch ein Transpiler. Dieses Argument ist es also, was diese ähnliche Abstraktionsebene ungültig macht.
Der Begriff der Kategorisierung von Sprachen in niedrigere, mittlere und höhere Ebenen basiert auf der Abstraktionsebene, die sie von der tatsächlichen Arbeitsweise der Maschine / Architektur bieten.
Untergeordnete Sprachen wie Assembly sind der Prozessorarchitektur sehr nahe, dh sie haben unterschiedliche Anweisungen für verschiedene Prozessoren. Während C / C ++ / Java / JavaScript, abstrahieren Sie all dies weg und sorgen Sie für mehr Abstraktion.
Ein Transpiler kompiliert also zu einer Sprache, die näher an der Sprache liegt, mit der Sie in Bezug auf diese Abstraktion begonnen haben (oder näher an der Ebene dieser Sprache in der Sprachleiter der unteren, mittleren und höheren Ebene).
Hoffe das hilft!