Compilador Vs Intérprete Vs Transpiler


Durante una sesión de ReactJS a la que asistía, el presentador usó un término transpiler para algunas conversiones/adaptaciones de código. Siempre he usado y escuchado los términos compilador e intérprete cuando se trata de convertir un código de lenguaje a una forma ejecutable en un sistema informático/máquina. Transpiler es completamente nuevo para mí. ¿Puede alguien ayudarme a entender cómo un Transpiler es diferente de un compilador o un intérprete y por qué es realmente necesario?

Author: RBT, 2016-08-31

5 answers

Como se menciona en este artículo Wiki , es un tipo de compilador que traduce código fuente de un lenguaje de programación a otro lenguaje de programación. El código fuente puede estar en algún lenguaje que ya no se usa, o no admite los últimos avances de hardware/software, o según la conveniencia/favoritismo del programador.

A VB6 a VB.NET convertidor puede ser considerado como un Transpiler. Podría pensar en la herramienta COBOL to C# / C++ / Java como un transpiler.

 18
Author: Ajay,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-31 10:15:01

A menudo se le llama 'transpiling', cuando traduce código con preprocesadores JS como CoffeeScript, TypeScript (lo que sea) a JavaScript simple. Pero realmente no es algo exclusivo de JS. Se aplica a todo tipo de lenguajes de programación. Sobre todo se llama compilación.

Transpiling es un término específico para tomar código fuente escrito en un idioma y transformándose en otro idioma que tiene un nivel similar de abstracción .

Según https://www.stevefenton.co.uk/2012/11/compiling-vs-transpiling/

Así que en su caso :

  • 'compile' JSX => JavaScript (y HTML), que creo que coincide con la definición anterior.
  • Por lo tanto, se puede llamar 'transpiling'. Aunque llamarlo 'compilación' también estaría bien.

Otro ejemplo:

  • CoffeeScript / TypeScript / ...Como sea.. = > JavaScript y viceversa.
 16
Author: fuma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-17 10:27:38

Compiler - compila código a un código de nivel inferior.

Ejemplo:

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

Transpiler - compila código al mismo nivel de código/abstracción.

Ejemplo:

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

Interpreter - interpreta código, no realmente en la misma clase / liga / contexto con los dos arriba.

Ejemplo: php.exe

  • "Su código PHP / scripts dentro de index.php "- > "Resultados a html o simplemente como puro index.html"
 15
Author: Jim M,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-17 00:18:32

He estado construyendo tales herramientas desde la década de 1980.

Los llamamos "Source to source program transformation systems".

Ese término sirvió bien, AFAICT, por cerca de 45 años. La idea se remonta mucho antes de eso; ver el compilador de Val Schorre Meta II-compiler work para una versión de 1963 de esta idea.

Ahora tenemos este nuevo término; empecé a verlo hace unos años. No añade nada, pero suena misterioso y fresco. Así es como los sacerdotes establecen su valía; inventan nuevo vocabulario para viejas ideas.

 6
Author: Ira Baxter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-07 16:25:15

Un compilador de fuente a fuente traduce entre lenguajes de programación que operan aproximadamente al mismo nivel de abstracción, mientras que un compilador tradicional traduce de un lenguaje de programación de nivel superior a un lenguaje de programación de nivel inferior.

Fuente : Wikipedia

  • Compiler - traduce el código fuente del lenguaje de nivel superior al lenguaje de nivel inferior.
    Ejemplo : Compiladores de C (C a código máquina), herramienta javac de JDK (java a código de byte)
  • Transpiler - un tipo de compilador que se traduce entre los códigos fuente en el mismo nivel de abstracción.
    Ejemplo: Babel (ES6+ a ES5) - que se puede utilizar para escribir código ES6 sin dejar de soportar los navegadores más antiguos como IE 11 y por debajo.
 4
Author: SmS,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-27 08:44:46