Mientras buscaba la diferencia, encontré estas definiciones:
Compilar es el término general para tomar el código fuente escrito en un idioma y transformarlo en otro.
Transpilar es un término específico para tomar el código fuente escrito en un idioma y transformarlo en otro idioma que tiene un nivel similar de abstracción.
Entiendo qué es la abstracción.
Pero, ¿qué significa "nivel similar de abstracción" en la definición anterior? ¿Y cómo encontramos el nivel de abstracción en un lenguaje?
compiler-construction
abstraction
transpiler
Nishi Mahto
fuente
fuente
Respuestas:
La definición que ha citado anteriormente es demasiado general para que un principiante la entienda por completo, así que déjeme simplificarla a algo que vemos en la práctica.
Compilador: es un término general para describir un programa que toma el código fuente escrito en un idioma y produce un archivo de salida (o muchos) en otro idioma. En la práctica, usamos principalmente este término para describir un compilador como gcc que toma código C como entrada y produce un ejecutable binario (código máquina) como salida.
Los transpiladores también se conocen como compiladores de fuente a fuente. Entonces, en esencia, son un subconjunto de compiladores que toman un archivo de código fuente y lo convierten en otro archivo de código fuente en algún otro idioma o una versión diferente del mismo idioma. El resultado es generalmente comprensible para un humano. Esta salida aún tiene que pasar por un compilador o intérprete para poder ejecutarse en la máquina.
Algunos ejemplos de transpiladores:
Ahora, ¿qué quieren decir con "nivel similar de abstracción"? Como dije que compila / transpila a un archivo fuente, se puede argumentar que el lenguaje ensamblador también es un archivo fuente y por lo tanto gcc también es un transpilador. Entonces, este argumento es lo que este nivel similar de abstracción anula.
La noción de categorizar los lenguajes en niveles bajo, medio y superior se basa en el nivel de abstracción que proporcionan del funcionamiento real de la máquina / arquitectura.
Los lenguajes de nivel inferior como el ensamblaje están muy cerca de la arquitectura del procesador, es decir, tienen diferentes instrucciones para diferentes procesadores. Mientras que C / C ++ / Java / JavaScript, abstrae todo esto proporcionando más abstracción.
Entonces, un transpilador compila en un idioma que está más cerca del idioma con el que comenzó en los términos de esta abstracción (o está más cerca del nivel de ese idioma en la escala de idiomas de nivel medio-bajo-alto).
¡Espero que esto ayude!
fuente
Aquí hay una forma descriptiva de responder.
Si piensa en capas de abstracción como este ejemplo:
Un compilador pasa a un nivel inferior (número inferior). Un transpilador cambia de un idioma (o versión de un idioma) a otro en el mismo número.
fuente
javac
un compilador o no.Estoy mayormente de acuerdo con tapananand respuesta, pero ...
definición
Las palabras están "hechas", por lo que tienen un propósito. Y esto también cambia con el tiempo.
Ahora tendemos a usar el transpilador para especificar un compilador que traduzca el código en algún otro código "más similar" al de origen, que lo que podría hacer un compilador. Y se usa para diferenciar ambos principalmente cuando ambos se mencionan en el mismo contexto (nuevamente, lo que implica principalmente que un lenguaje transpile tendrá que compilarse al menos una vez más)
ejemplos
Entonces todo es muy subjetivo. En el momento de escribir este artículo:
fazit
Por lo tanto, transpile en este momento ya se usa muy raramente, y solo para diferenciar dos compiladores.
Probablemente desaparecerá como concepto, ya que la compilación es mucho más complicada que eso (mismo / superior / inferior idioma, versión, etc.), y la palabra ya no parece ser útil ("transpilers" ahora son ubicuos)
fuente
Ejemplo: TypeScript (un superconjunto de JavaScript de Microsoft con comprobación de seguridad de tipos) se transpila a código JavaScript que se puede ejecutar en diferentes tipos de navegadores.
https://en.wikipedia.org/wiki/Microsoft_TypeScript "Microsoft TypeScript es un lenguaje de programación de código abierto desarrollado y mantenido por Microsoft. Es un superconjunto sintáctico estricto de JavaScript y agrega escritura estática opcional al lenguaje.
TypeScript está diseñado para el desarrollo de grandes aplicaciones y transcompila a JavaScript. [5] Como TypeScript es un superconjunto de JavaScript, los programas JavaScript existentes también son programas TypeScript válidos. TypeScript se puede utilizar para desarrollar aplicaciones JavaScript para la ejecución tanto del lado del cliente como del lado del servidor (Node.js) ".
fuente