Compilador fuente a fuente


Un traductor de fuente a fuente, compilador de fuente a fuente ( compilador S2S ), transcompilador o transpilador [1] [2] [3] es un tipo de traductor que toma el código fuente de un programa escrito en un lenguaje de programación. como su entrada y produce un 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 desde un lenguaje de programación de nivel superior.a un lenguaje 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 Java a bytecode . [4] Un compilador de paralelismo automático con frecuencia tomará 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 ). [2] [5]

Otro propósito de la compilación de fuente a fuente es traducir el 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á la refactorización automática del 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 tanto la estructura del código original que el código traducido no se parece al código fuente. [6] También existen utilidades de depuración que asignan 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 de vuelta a la fuente original cuando el código JavaScript fue, por ejemplo, minimizado o producido por un lenguaje transcompilado a JavaScript. [ cita requerida]

Los llamados traductores de lenguaje ensamblador son una clase de traductores de fuente a fuente que convierten código de un lenguaje ensamblador a otro, incluidos (pero no limitados a) a través de diferentes familias de procesadores y plataformas de sistemas .

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