Diferencia entre transpiler y compilador

Un compilador es un software que convierte lenguaje de alto nivel a lenguaje ensamblador de bajo nivel y todos estamos bastante familiarizados con su nombre y trabajo. Un transpiler es otro software, a veces llamado compilador fuente a fuente, que convierte un lenguaje de alto nivel en otro lenguaje de alto nivel. Inmediatamente no está claro por qué necesitaríamos un transpilador y cuándo podemos recodificar el programa a otro idioma. 

La razón por la que necesitamos un transpilador es que codificar un programa grande en otro idioma lleva mucho tiempo. involucrar a todo un equipo de desarrolladores para recodificar todo el software en otro idioma, sin mejoras adicionales, es económicamente ineficiente. Por lo tanto, es mejor escribir un transpilador de idioma a idioma que haga el trabajo. Los transpiladores de Javascript esencialmente hacen lo mismo. Los navegadores web no pueden compilar TypeScript, CoffeeScript o Kotlin de forma nativa y necesitamos un transpilador para convertirlos a Javascript.

Si para leer cada trabajo de investigación extranjero, tuviéramos que entender el idioma extranjero, entonces tomaría mucho esfuerzo. La vida sin un traductor es dura, y también lo es sin un transpilador. 

Compilador: Compilador es cualquier programa que toma como entrada un código fuente escrito en un idioma y lo convierte en un código de salida en algún otro idioma, generalmente con un nivel de abstracción más bajo. En la práctica, los compiladores convierten códigos escritos en lenguajes de programación de alto nivel, con una mayor abstracción para la máquina pero más legibles para los humanos, en lenguaje ensamblador, que son bajos en términos de abstracción a nivel de máquina y fácilmente convertibles a códigos de máquina binarios pero ofrecen poca comprensión humana. 

Transpiler: los transpilers también convierten un código fuente de entrada escrito en algún idioma en un código de salida en un idioma diferente, que tiene un nivel de abstracción similar en comparación con el código fuente. Los transpilers son convertidores de fuente a fuente. Convierten códigos de un lenguaje de alto nivel, digamos Java, a otro lenguaje de alto nivel con un nivel similar de abstracción, digamos C++. Esta salida aún es abstracta para el hardware y necesita un compilador para convertirla en lenguaje ensamblador para ejecutarse en la máquina.

Diferencia entre transpiler y compilador:

Compilador Transpilador
Convierte un código fuente escrito en un lenguaje de alto nivel en un código de salida en un lenguaje de bajo nivel. Convierte un código fuente escrito en un lenguaje de alto nivel en un código de salida en un lenguaje de alto nivel diferente.
El código fuente tiene un mayor nivel de abstracción que el código de salida.  El código fuente, así como el código de salida generado, tienen el mismo nivel de abstracción. 
El código de salida está en lenguaje ensamblador y es fácilmente ejecutable después de vincularlo y decodificarlo en lenguaje de máquina.  El código de salida todavía está en lenguaje de programación de alto nivel y requiere un compilador para convertirlo en lenguaje ensamblador de baja abstracción. 
En un compilador, el código fuente se escanea, se analiza, se transforma en un árbol de sintaxis abstracto analizado semánticamente, luego se convierte en un código intermedio y finalmente en el lenguaje ensamblador.  En un transpiler, el código fuente se analiza y se transforma en un árbol de sintaxis abstracta, que luego se convierte en un modelo intermedio. Esto luego se transforma en un árbol de sintaxis abstracta del idioma de destino y se genera el código.
Convertir código Java en instrucciones de lenguaje ensamblador es un ejemplo de compilación.  Convertir código Java en código C++ es un ejemplo de transpilación. 

Publicación traducida automáticamente

Artículo escrito por srimandutta y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *