it-swarm.com.de

Compiler Vs Interpreter Vs Transpiler

Während einer reaJs-Sitzung, an der ich teilnahm, verwendete der Moderator einen Begriff Transpiler für die Codekonvertierung/Portierung. Ich habe immer die Begriffe Compiler und Interpreter verwendet und gehört, wenn es darum geht, einen Sprachcode in ein ausführbares Formular auf einem Computersystem/einer Maschine umzuwandeln. Transpiler ist für mich völlig neu. Kann mir jemand helfen zu verstehen, wie ein Transpiler sich von einem Compiler oder einem Interpreter unterscheidet und warum es wirklich benötigt wird?

32
RBT

Wie in diesem Wiki-Artikel erwähnt, handelt es sich um einen Compiler-Typ, der [ Quellcode von einer Programmiersprache in eine andere Programmiersprache übersetzt. Der Quellcode kann in einer Sprache vorliegen, die nicht mehr verwendet wird, oder die neuesten Hardware-/Software-Verbesserungen oder die Bequemlichkeit/Bevorzugung eines Programmierers nicht unterstützen.

Ein Konverter von VB6 nach VB.NET kann als Transpiler betrachtet werden. Ich könnte an COBOL to C #/C++/Java als Transpiler denken.

20
Ajay

Compiler - kompiliert Code zu einem Code auf niedrigerer Ebene.

Beispiel: 

  • "Developer code" -> "Machine code"
  • PHP -> C
  • Java -> bytecode

Transpiler - kompiliert Code auf derselben Ebene von Code/Abstraktion.

Beispiel: 

  • "Developer code" -> "Another developer code or version"
  • JavaScript ES2015+ -> JavaScript ES5

Interpreter - interpretiert Code, der nicht wirklich in derselben Klasse/Liga/Kontext mit den beiden oben genannten liegt.

Beispiel: php.exe

  • "Ihr PHP Code/Ihre Skripte in index.php" -> "Ergebnisse für html oder einfach wie reiner index.html"
21
Jim M

Es wird oft als "Transpiling" bezeichnet, wenn Sie Code mit JS-Preprozessoren wie CoffeeScript, TypeScript (wie Sie es nennen) in reines JavaScript umwandeln. Aber es ist wirklich keine exklusive JS-Sache. Es gilt für alle Arten von Programmiersprachen. Meist wird es nur Compilieren genannt.

Transpiling ist ein bestimmter Begriff für das Schreiben von Quellcode in einer Sprache und Umwandlung in eine andere Sprache, die eine .__ hat. ähnliche Abstraktionsebene.

Gemäß https://www.stevefenton.co.uk/2012/11/compiling-vs-transpiling/

Also in Ihrem Fall:

  • 'compile' JSX => JavaScript (und HTML), was meiner Meinung nach mit der obigen Definition übereinstimmt.
  • Daher kann es als "Transpiling" bezeichnet werden. Wenn man es "Kompilieren" nennt, wäre das auch in Ordnung.

Ein anderes Beispiel:

  • CoffeeScript/TypeScript/... whatEverScript .. => JavaScript und umgekehrt.
17
fuma

Ich habe solche Werkzeuge seit den 1980er Jahren gebaut

Wir nannten sie "Source to Source Programmtransformationssysteme ".

Diese Amtszeit diente AFAICT für rund 45 Jahre. Die Idee geht weit zurück. Siehe Val Schorres Meta II Compiler-Compiler-Arbeit für eine 1963-Version dieser Idee.

Jetzt haben wir diesen neuen Begriff; Ich habe es vor einigen Jahren angefangen. Es fügt nichts hinzu, klingt aber geheimnisvoll und cool. So stellen Priester ihren Wert fest; Sie erfinden ein neues Vokabular für alte Ideen.

6
Ira Baxter

Ein Source-to-Source-Compiler übersetzt zwischen Programmiersprachen, die ungefähr auf derselben Abstraktionsebene arbeiten, während ein herkömmlicher Compiler von einer höheren Programmiersprache in eine niedrigere Programmiersprache übersetzt.

Quelle: Wikipedia

  • Compiler - übersetzt Quellcode von höherer Sprache in niedrigere Sprache. 
    Beispiel: C-Compiler (C in Maschinencode), Javac-Tool von JDK (Java in Byte-Code)
  • Transpiler - ein Compiler-Typ, der Quellcodes auf derselben Abstraktionsebene übersetzt.
    Beispiel: Babel (ES6 + bis ES5) - damit können Sie ES6-Code schreiben und ältere Browser wie IE 11 und darunter unterstützen.
4
SmS

Per Definition ist Transpiler eine spezielle Form von Übersetzer .

Compiler konvertiert Quellcode hoher Ebene in einen Code niedrigerer Abstraktionsebene. Typischerweise, aber nicht notwendigerweise, ist das Ziel der Kompilierung Maschinencode . Ein Code, der direkt von der CPU ausgeführt werden kann. Compiler kann auch Bytecode erzeugen, was eine Simulation von Maschinencode ist, aber später von einer sogenannten virtuellen Maschine (d. H. Java-Bytecode und Java-VM) interpretiert wird. Der Begriff Compiler kann jedoch für das a gelten, das den Code in eine andere Programmiersprache konvertiert, die kein vom Computer ausführbarer Code ist. Auffälliger Unterschied ist, dass der Compiler den Abstraktionsgrad verringert.

Translator konvertiert den Quellcode von einer Programmiersprache in eine andere Programmiersprache der gleichen oder unterschiedlichen Abstraktionsstufe. Beachten Sie, dass das Ergebnis ein Maschinencode sein kann, wenn der Quellcode auch ein Maschinencode war.

Traspiler ist dem Übersetzer sehr ähnlich, konvertiert jedoch spezifisch den Quellcode zwischen Programmiersprachen der gleichen Abstraktionsebene. Beachten Sie, dass sich die Programmiersprachen stark voneinander unterscheiden. Die Abstraktionsebene unterscheidet sich insbesondere in Bezug auf verschiedene Konzepte, die sie als Abstraktion unterstützen. Aus diesem Grund liegt die Konvertierung (Transpilierung) häufig zwischen den ähnlichen und nicht denselben Abstraktionsebenen.

2
Valera Grishin

Compiler - Er fungiert als Schnittstelle zwischen Mensch und Computer, um die Sprache des menschlichen Verstehens in eine Sprache des Maschinenverständnisses umzuwandeln.

Arten des Compilers

  • Native Code Compiler : Der Compiler, der zum Kompilieren eines Quellcodes nur für denselben Plattformtyp verwendet wurde. Die von diesem Compilertyp generierte Ausgabe kann nur auf dem gleichen Computersystem- und Betriebssystemtyp ausgeführt werden, auf dem der Compiler selbst ausgeführt wird.
  • Cross Compiler : Der Compiler, mit dem ein Quellcode für verschiedene Plattformplattformen kompiliert wurde. Wird bei der Erstellung von Software für eingebettete Systeme verwendet, die auf mehreren Plattformen verwendet werden kann.
  • Quell-zu-Quell-Compiler : .__ KonvertiertHLL(Hochsprache) oder Quellsprache inLLL(Niedrigsprache) oder Maschinensprache.
  • Transpiler : KonvertiertHLL(High Level Language) in eine andere HLL
1
Jeyanth