Es posible que algunas de las fuentes mencionadas en este artículo no sean confiables . ( Marzo de 2024 ) |
Ejecución del programa |
---|
Conceptos generales |
Tipos de código |
Estrategias de compilación |
Notable runtimes |
|
Notable compilers & toolchains |
|
Un traductor o procesador de lenguaje de programación es un programa informático que convierte las instrucciones de programación escritas en forma conveniente para los humanos en códigos de lenguaje de máquina que las computadoras entienden y procesan. Es un término genérico que puede referirse a un compilador , ensamblador o intérprete , cualquier cosa que convierta código de un lenguaje informático a otro. [1] [2] Estos incluyen traducciones entre lenguajes informáticos de alto nivel y legibles para humanos como C++ y Java , lenguajes de nivel intermedio como el bytecode de Java , lenguajes de bajo nivel como el lenguaje ensamblador y el código de máquina , y entre niveles similares de lenguaje en diferentes plataformas informáticas , así como de cualquiera de estos a cualquier otro de estos. [1] El software y el hardware representan diferentes niveles de abstracción en la informática. El software generalmente se escribe en lenguajes de programación de alto nivel, que son más fáciles de entender y manipular para los humanos, mientras que las implementaciones de hardware involucran descripciones de bajo nivel de componentes físicos y sus interconexiones. La informática traductora facilita la conversión entre estos niveles de abstracción. [3] En general, la informática traductora desempeña un papel crucial a la hora de cerrar la brecha entre las implementaciones de software y hardware, lo que permite a los desarrolladores aprovechar las fortalezas de cada plataforma y optimizar el rendimiento, la eficiencia energética y otras métricas según los requisitos específicos de la aplicación. [4]
El proceso de desarrollo de software es notablemente diferente según el tipo de traductor utilizado por un desarrollador, que por supuesto difiere de un traductor a otro. Las etapas del proceso de desarrollo que se ven influenciadas por un traductor incluyen la etapa de programación inicial, la etapa de depuración y, sobre todo, el proceso de ejecución. Los factores que se ven afectados durante estas etapas incluyen el rendimiento del código, la velocidad de retroalimentación para el proceso de depuración, las características del lenguaje y la independencia de la plataforma. Algunos de los procesadores de lenguaje de programación más notables que se utilizan para traducir el código son los compiladores , los intérpretes y los ensambladores . [5]
El software compilador interactúa con el código fuente convirtiéndolo, generalmente de un lenguaje de programación de nivel superior, en código objeto que luego puede ser ejecutado por la Unidad Central de Procesamiento (CPU) de la computadora. [6] El código objeto creado por el compilador consiste en código legible por máquina que la computadora puede procesar. Esta etapa del proceso computacional se conoce como compilación. El uso de un compilador conduce a la separación en el proceso de traducción y ejecución. Después de la compilación, el nuevo código objeto se guarda por separado del código fuente, lo que hace que el código fuente ya no sea necesario para el proceso de ejecución. Con los programas compiladores, el proceso de traducción ocurre una sola vez, lo que da como resultado un código eficiente que puede ejecutarse rápidamente cualquier cantidad de veces. [6]
Existen claros beneficios al traducir código de alto nivel con un compilador. [7]
Existen claras desventajas al traducir código de alto nivel con un compilador. [7]
Algunos lenguajes de programación notables que utilizan compiladores incluyen: [8]
Los programas intérpretes funcionan interpretando código de alto nivel en código utilizable por la máquina mientras ejecutan simultáneamente las instrucciones línea por línea. A diferencia de los compiladores, los intérpretes no necesitan compilar el código antes de ejecutar las instrucciones. El proceso de traducción y ejecución se realiza simultáneamente y se interrumpe en caso de que se produzca un error en el programa. El uso de un intérprete permite a los desarrolladores probar y modificar el código en tiempo real. Facilita el proceso de depuración y ayuda a crear un código más eficiente. Dado que el proceso de traducción y ejecución se realiza simultáneamente, el tiempo de ejecución de los programas intérpretes es considerable. [5]
Existen claros beneficios al traducir código de alto nivel con un intérprete.
Existen claras desventajas al traducir código de alto nivel con un intérprete. [7]
Algunos lenguajes de programación notables que utilizan intérpretes incluyen: [5]
Un programa ensamblador funciona convirtiendo un código ensamblador de bajo nivel en un código de máquina convencional que la CPU puede leer. El propósito del lenguaje ensamblador, al igual que otros lenguajes de codificación, es hacer que el proceso de programación sea más fácil de usar que la programación en lenguaje de máquina. Los lenguajes ensambladores utilizan dispositivos mnemotécnicos y direcciones simbólicas para diferenciar entre códigos de operación, operandos y direcciones de memoria específicas. Muchos de estos componentes no son fácilmente legibles por humanos y, por lo tanto, los mnemotécnicos, los símbolos y las etiquetas hacen que el código sea descifrable. El ensamblador funciona procesando el código una línea a la vez y luego pasa a la siguiente instrucción. Para eliminar los problemas que ocurren debido a las ubicaciones de direccionamiento, el proceso de traducción conocido como ensamblaje se realiza típicamente en un proceso de dos pasos. El primer paso del ensamblaje se realiza para identificar las direcciones binarias que corresponden a los nombres simbólicos. Esto es esencial para guiar el segundo paso, que es la traducción línea por línea al lenguaje de máquina. [9]
Los ensambladores más utilizados incluyen: