Compilador de fuente a fuente


Un traductor de código-fuente , compilador de fuente-a-fuente ( S2S compilador ), transcompiler o transpiler [1] es un tipo de traductor que lleva el código fuente de un programa escrito en un lenguaje de programación como entrada y produce una código fuente equivalente en el mismo lenguaje de programación o en uno diferente. Un traductor de fuente a fuente convierte 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 unlenguaje de programación de nivel inferior . Por ejemplo, un traductor de fuente a fuente puede realizar una traducción de un programa de Python a JavaScript , mientras que un compilador tradicional traduce de un lenguaje como C a ensamblador o de Java a código de bytes . [2] Un compilador de paralelización automática tomará frecuentemente un programa de lenguaje de alto nivel como entrada y luego transformará el código y lo anotará con anotaciones de código paralelo (por ejemplo, OpenMP ) o construcciones de lenguaje (por ejemplo , declaraciones de Fortranforall ). [3]

Otro propósito de la compilación de fuente a fuente es traducir código heredado para usar la próxima versión del lenguaje de programación subyacente o una API que rompa la compatibilidad con versiones anteriores. Realizará una refactorización automática de código, lo cual es útil cuando los programas a refactorizar están fuera del control del implementador original (por ejemplo, convertir programas de Python 2 a Python 3, o convertir programas de una API antigua a la nueva API) o cuando el El tamaño del programa hace que sea poco práctico o lento refactorizarlo a mano.

Los transcompiladores pueden mantener la estructura del código traducido lo más cerca posible del código fuente para facilitar el desarrollo y la depuración del código fuente original o pueden cambiar la estructura del código original tanto que el código traducido no se parece al código fuente. [4] También hay utilidades de depuración que mapean el código fuente transcompilado al código original; por ejemplo, el estándar JavaScript Source Map [ cita requerida ] permite mapear el código JavaScript ejecutado por un navegador web a la fuente original cuando el código JavaScript fue, por ejemplo, minificado o producido por un lenguaje transcompilado a JavaScript. [ cita requerida]

Intel comercializó su procesador 8086 de 16 bits para que fuera compatible en origen con el 8080 , un procesador de 8 bits. [6] Para respaldar esto, Intel tenía un traductor basado en ISIS-II del código fuente 8080 al 8086 llamado CONV86 [7] [8] [9] (también conocido como CONV-86 [10] y CONVERT 86 [11] [12] ) disponible para los clientes OEM desde 1978, posiblemente el primer programa de este tipo. [nb 1] Admitía varios niveles de traducción y funcionaba a 2 MHz en un sistema de desarrollo de microprocesador Intel MDS-800 con unidades de disquete de 8 pulgadas. Según los informes de los usuarios, no funcionó de manera muy confiable. [13] [14]

Seattle Computer Products '(SCP) ofreció TRANS86.COM, [12] [15] [16] escrito por Tim Paterson en 1980 mientras desarrollaba 86-DOS . [17] [18] [19] La utilidad podría traducir el código fuente ensamblador Intel 8080 y Zilog Z80 (con mnemónicos Zilog / Mostek ) en código fuente .ASM para Intel 8086 (en un formato solo compatible con el ensamblador cruzado ASM86 de SCP para CP / M-80 ), pero admitía solo un subconjunto de códigos de operación , registros y modos y, a menudo, seguía requiriendo correcciones manuales importantes y retrabajos posteriores. [20][17] Además, realizando solo una mera transliteración , [11] [15] [7] [8] eltraductor defuerza bruta de un solo paso no llevó a cabo ninguna optimización de registro y salto. [21] [22] Se necesitaron alrededor de 24 KB de RAM. [12] La versión 1 de SCP de TRANS86.COM se ejecutó en sistemas basados ​​en Z80. [12] [15] Una vez que 86-DOS se ejecutó, Paterson, en unenfoque inspirado en el alojamiento propio , utilizó TRANS86 para convertirse en un programa que se ejecutaba bajo 86-DOS. [19] [15] Versión numerada 2, en su lugar se llamó TRANS.COM. [15] [22] [21] [23][24] Más tarde, en 1982, el traductor aparentemente también estuvo disponible en Microsoft . [12] [25]