Traductor (informática)

Computer program that translates code from one programming language to another

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]

Procesadores de lenguajes de programación

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]

Compiladores

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]

  • La compilación permite ejecutar el programa más rápido. Como el código se traduce antes de ejecutarlo, los resultados son optimizados y rápidos.
  • Los compiladores son más ideales para proteger el código contra el plagio y evitar el uso del código fuente por parte de una parte no autorizada.
  • El código objeto sólo necesita crearse una vez al compilar el código fuente.

Existen claras desventajas al traducir código de alto nivel con un compilador. [7]

Esta imagen representa el proceso de traducción a través de un compilador.

Algunos lenguajes de programación notables que utilizan compiladores incluyen: [8]

Intérpretes

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.

  • Dado que el código objeto no se crea en el proceso de interpretación, se requiere menos memoria para el código. [5]
  • Los lenguajes intérpretes no crean código específico para cada máquina y pueden ejecutarse en cualquier tipo de máquina. [7]
  • El proceso de desarrollo y depuración suele ser más rápido debido a su menor complejidad y tiene mayor flexibilidad. [7]

Existen claras desventajas al traducir código de alto nivel con un intérprete. [7]

  • Los programas requieren que haya un intérprete instalado en la máquina para poder ejecutarlos e interpretarlos.
  • El tiempo de ejecución del programa es más lento que el de un compilador.

Algunos lenguajes de programación notables que utilizan intérpretes incluyen: [5]

Ensambladores

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:

Véase también

Referencias

  1. ^ ab Thornton, Scott (17 de febrero de 2017). "¿Qué son los compiladores, traductores, intérpretes y ensambladores?". MicrocontrollerTips . Archivado desde el original el 19 de julio de 2019. Consultado el 2 de febrero de 2020 .
  2. ^ "Traductores y utilidades para el desarrollo de programas". Manual de software (PDF) . Intel Corporation . 1984 [1983]. pág. 3-1. 230786-001. Archivado (PDF) desde el original el 29 de enero de 2020 . Consultado el 29 de enero de 2020 .
  3. ^ Beaulieu, Adrien (2022). "A15. Tecnologías front-end y back-end: la importancia de dominar varios lenguajes de programación".
  4. ^ Pagadala, Santosh Kumar (2004). "Implementación portátil de un entorno de diseño asistido por ordenador para estructuras compuestas".
  5. ^ abcd «Procesadores de lenguaje: ensamblador, compilador e intérprete». GeeksforGeeks . 2018-08-09 . Consultado el 2024-03-15 .
  6. ^ ab "CSE 5317/4305: Diseño y construcción de compiladores". lambda.uta.edu . Consultado el 15 de marzo de 2024 .
  7. ^ abcde "Tipos de traductores". Ada Computer Science . 2024-03-15 . Consultado el 2024-03-15 .
  8. ^ "Lenguajes compilados versus lenguajes interpretados". www.ibm.com . Consultado el 15 de marzo de 2024 .
  9. ^ ab Patt, Yale; Patel, Sanjay (15 de agosto de 2019). Introducción a los sistemas informáticos: desde bits y puertas hasta C/C++ y más allá (3.ª ed.). Nueva York, NY: McGraw-Hill. págs. 231–243. ISBN 978-1260150537.
  10. ^ abcd Stokoe, William (6 de mayo de 2024). «Estructura del lenguaje de señas». Revista Anual de Antropología . 9 : 365–390. doi :10.1146/annurev.an.09.100180.002053 . Consultado el 15 de marzo de 2024 .

Lectura adicional

  • Calingaert, Peter (1979) [1978-11-05]. Escrito en la Universidad de Carolina del Norte en Chapel Hill . Horowitz, Ellis (ed.). Ensambladores, compiladores y traducción de programas. Serie de ingeniería de software informático (1.ª impresión, 1.ª ed.). Potomac, Maryland, EE. UU.: Computer Science Press, Inc. ISBN 0-914894-23-4. ISSN  0888-2088. LCCN  78-21905. Archivado desde el original el 20 de marzo de 2020. Consultado el 20 de marzo de 2020 .(2+xiv+270+6 páginas)
  • Pring-Mill, David (4 de marzo de 2018). "¿Por qué la IA no ha dominado la traducción de idiomas?". Singularity Hub . Singularity University . Archivado desde el original el 29 de diciembre de 2019 . Consultado el 2 de febrero de 2020 .
  • Edwards, Stephen A. (otoño de 2013). "Procesadores del lenguaje" (PDF) . Universidad de Columbia . Archivado (PDF) desde el original el 24 de junio de 2019 . Consultado el 2 de febrero de 2020 .
  • Tucker, Allen; Belford, Geneva G. «Computer science». Encyclopædia Britannica . Archivado desde el original el 23 de julio de 2019. Consultado el 2 de febrero de 2020 .


Retrieved from "https://en.wikipedia.org/w/index.php?title=Translator_(computing)&oldid=1233390578"