65 votes

Compiler Vs Interpreter Vs Transpiler

Au cours d’une session de réaction à laquelle j’assistais, le présentateur a utilisé un terme transpiler pour expliquer le transfert / le transfert de code. J'ai toujours utilisé et entendu les termes compilateur et interprète pour convertir un code de langue en une forme pouvant être exécutée sur un ordinateur / système informatique. Transpiler est complètement nouveau pour moi. Quelqu'un peut-il m'aider à comprendre en quoi un transpiler est différent d'un compilateur ou d'un interprète et pourquoi cela est vraiment nécessaire?

54voto

Jim M Points 2525

Compilateur - compile le code à un niveau inférieur de code.

Exemple:

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

Transpiler - compile le code à même niveau de code, de l'abstraction.

Exemple:

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

Interprète - interprète le code, pas vraiment dans la même classe/ligue/contexte avec les deux ci-dessus.

Exemple: php.exe

  • "Votre code PHP/scripts à l'intérieur d' index.php" -> "Résultats d' html ou tout simplement comme de purs index.html"

35voto

Ajay Points 5320

Comme mentionné dans cet article de Wiki, c'est un type de compilateur qui traduit le code source d'un langage de programmation à un autre langage de programmation. Le code source peut être dans une langue qui n'est plus utilisé, ou ne prend pas en charge les plus récentes de matériel/logiciel progrès, ou par du programmeur commodité/favoritisme.

Une VB6 à VB.NET le convertisseur peut être considéré comme un Transpiler. Je pourrais penser de COBOL vers C# / C++ / Java outil comme un transpiler.

22voto

fuma Points 46

Il est souvent appelé "transpiling', lorsque vous traduisez code avec JS-préprocesseurs comme CoffeeScript, Tapuscrit (marque) à la plaine de JavaScript. Mais ce n'est pas vraiment un JS chose exclusive. Il s'applique à tous les types de langages de programmation. Surtout que c'est juste appelé la compilation.

Transpiling est un terme spécifique pour la prise en code source écrit dans une langue et la transformer en une autre langue qui a même niveau d'abstraction.

Selon https://www.stevefenton.co.uk/2012/11/compiling-vs-transpiling/

Donc dans votre cas:

  • 'compiler' JSX => JavaScript (et HTML), ce qui je pense correspond à la définition ci-dessus.
  • Par conséquent, il peut être appelé "transpiling'. Si le qualifiant de "compilation" aurait également être ok.

Un autre exemple:

  • CoffeeScript / Tapuscrit / ...whatEverScript.. => JavaScript et vice versa.

10voto

Ira Baxter Points 48153

J'ai été la construction de ces outils depuis les années 1980.

Nous les avons appelés "Source de source de programme de transformation des systèmes".

Ce terme a servi fine, AFAICT, pour près de 45 ans. L'idée remonte loin avant; voir Val Schorre de la Méta II Compilateur compilateur de travail pour un 1963 version de cette idée.

Maintenant, nous avons ce nouveau terme; j'ai commencé à le voir il y a quelques années. Elle n'ajoute rien, mais ça à l'air mystérieux et cool. C'est comment les prêtres établir leur dignité; ils inventent de nouveaux mots de vocabulaire pour les vieilles idées.

7voto

SmS Points 153

Une source-à-source compilateur traduit entre langages de programmation qui fonctionnent à peu près au même niveau d'abstraction, tandis qu'un traditionnel compilateur traduit à partir d'un niveau plus élevé de langage de programmation à un niveau inférieur langage de programmation.

Source : Wikipedia

  • Compilateur - traduit le code source de langage de plus haut niveau de langage de plus bas niveau.
    Exemple: les compilateurs C C en code machine), javac outil de JDK (java byte code)
  • Transpiler - un type de compilateur qui traduit entre les codes source au même niveau d'abstraction.
    Exemple: Babel (ES6+ de ES5) - que vous pouvez utiliser pour écrire des ES6 code tout en continuant à soutenir les anciens navigateurs comme IE 11 et ci-dessous.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X