ventajas sobre semejanzas interprete entre compilador compiler-construction language-agnostic interpreter transpiler

compiler-construction - sobre - semejanzas entre compilador e interprete



Compilador Vs Intérprete Vs Transpiler (5)

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

Fuente: Wikipedia

  • Compilador : traduce el código fuente del lenguaje de nivel superior al idioma de nivel inferior.
    Ejemplo : compiladores en C (código C a máquina), herramienta javac de JDK (código java a byte)
  • Transpiler - un tipo de compilador que se traduce entre códigos fuente en el mismo nivel de abstracción.
    Ejemplo : Babel (ES6 + a ES5) - que puede usar para escribir código ES6 mientras aún soporta navegadores más antiguos como IE 11 y versiones anteriores.

Durante la sesión de reacción que estaba asistiendo, el presentador usó un término transpiler para que ocurriera alguna conversión / conversión de código. Siempre he usado y escuchado los términos compilador e intérprete cuando se trata de convertir un código de idioma a una forma ejecutable en un sistema / máquina de computadora. 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?


A menudo se le llama ''transpiling'', cuando traduces código con preprocesadores JS como CoffeeScript, TypeScript (lo que quieras) a JavaScript simple. Pero realmente no es una cosa exclusiva de JS. Se aplica a todo tipo de lenguajes de programación. Principalmente se llama compilación.

Transpiling es un término específico para tomar el código fuente escrito en un idioma y transformarlo en otro idioma que tenga un nivel de abstracción similar .

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

Así que en tu caso :

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

Otro ejemplo:

  • CoffeeScript / TypeScript / ... whatEverScript .. => JavaScript y viceversa.

Como se menciona en este artículo de Wiki , es un tipo de compilador que traduce el 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 es compatible con los últimos avances de hardware / software, o según la conveniencia / favoritismo del programador.

Un convertidor de VB6 a VB.NET se puede considerar como un Transpiler. Podría pensar en la herramienta COBOL a C # / C ++ / Java como un transpiler.


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

Los llamamos " sistemas de transformación de fuente a fuente".

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

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


Compilador - 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

Intérprete : interpreta el código, no realmente en la misma clase / liga / contexto con los dos anteriores.

Ejemplo: php.exe

  • "Su código PHP / scripts dentro de index.php " -> "Resultados a html o simplemente como index.html puro"