Articulo de referencia

Traductor (informática)

Un traductor o procesador de lenguaje de programación es un programa informático que convierte las instrucciones de programación escritas en un formato legible para humanos en c...

Un traductor o procesador de lenguaje de programación es un programa informático que convierte las instrucciones de programación escritas en un formato legible para humanos en códigos de lenguaje 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 ] Esto incluye 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 máquina , y entre niveles de lenguaje similares en diferentes plataformas informáticas , así como de cualquiera de estos a cualquier otro. [ 1 ]

El término también se utiliza para referirse a los traductores entre las implementaciones de software y las implementaciones de hardware/ microchips ASIC del mismo programa, y ​​desde las descripciones de software de un microchip hasta las puertas lógicas necesarias para construirlo.

Procesadores de lenguajes de programación

El proceso de desarrollo de software difiere notablemente según el tipo de traductor utilizado por el desarrollador, lo cual, por supuesto, varía de un traductor a otro. Las etapas del proceso de desarrollo 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 lenguajes de programación más importantes utilizados para traducir código son los compiladores , los intérpretes y los ensambladores . [ 3 ]

Compiladores

El software compilador interactúa con el código fuente convirtiéndolo, generalmente de un lenguaje de programación de alto nivel a código objeto que posteriormente puede ser ejecutado por la unidad central de procesamiento (CPU) del ordenador. [ 4 ] El código objeto creado por el compilador consiste en código legible por máquina que el ordenador puede procesar. Esta etapa del proceso de computación se conoce como compilación. El uso de un compilador permite la separación entre el proceso de traducción y el de ejecución. Tras la compilación, el nuevo código objeto se guarda por separado del código fuente, lo que hace que este último ya no sea necesario para la ejecución. Con los programas compiladores, la traducción es un proceso que se realiza una sola vez y que da como resultado un código eficiente que puede ejecutarse rápidamente cualquier número de veces. [ 4 ]

Existen claros beneficios al traducir código de alto nivel con un compilador. [ 5 ]

  • La compilación permite una ejecución más rápida del programa. Dado que el código se traduce antes de su ejecución, sus resultados son optimizados y más rápidos.
  • Los compiladores son más idóneos para proteger el código contra el plagio y evitar que terceros no autorizados utilicen el código fuente.
  • El código objeto solo necesita crearse una vez al compilar el código fuente.

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

Esta imagen representa el proceso de traducción a través de un compilador.
  • El código objeto generado durante la compilación es específico de la arquitectura del conjunto de instrucciones (ISA) de la máquina. Esto da como resultado un código objeto que depende de un tipo específico de máquina para poder ejecutarse.
  • La fase de depuración del proceso de desarrollo no puede comenzar hasta que el programa esté completamente compilado. Los errores solo se pueden visualizar después de la compilación.
  • Cualquier código fuente que se modifique debe recompilarse por completo para poder ejecutarse de nuevo.

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

Intérpretes

Los programas intérpretes funcionan interpretando código de alto nivel y convirtiéndolo 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 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 contribuye a la creación de 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. [ 3 ]

La traducción de código de alto nivel mediante un intérprete ofrece claras ventajas.

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

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

  • Los programas requieren que haya un intérprete instalado en la máquina para poder ejecutarse e interpretarse.
  • 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: [ 3 ]

Ensambladores

Un programa ensamblador funciona convirtiendo código ensamblador de bajo nivel en código máquina convencional legible por la CPU. El propósito del lenguaje ensamblador, al igual que otros lenguajes de programación, es hacer que el proceso de programación sea más fácil de usar que la programación en lenguaje 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 para los humanos, por lo que los mnemónicos, símbolos y etiquetas hacen que el código sea descifrable. El ensamblador funciona procesando el código línea por línea y luego pasa a la siguiente instrucción. Para eliminar los problemas que surgen debido a las ubicaciones de direccionamiento, el proceso de traducción conocido como ensamblaje se realiza típicamente en un proceso de dos pasadas. La primera pasada del ensamblaje se realiza para identificar las direcciones binarias que corresponden a los nombres simbólicos. Esto es esencial para guiar la segunda pasada, que es la traducción línea por línea al lenguaje máquina. [ 7 ]

Entre los ensambladores más utilizados se incluyen:

Véase también

Referencias

  1. 1 2 Thornton, Scott (17 de febrero de 2017). "¿Qué son los compiladores, traductores, intérpretes y ensambladores?" . MicrocontrollerTips . Archivado del original el 19 de julio de 2019 . Recuperado 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) del original el 29/01/2020 . Consultado el 29/01/2020 . 
  3. 1 2 3 4 "Procesadores de lenguaje: ensamblador, compilador e intérprete" . GeeksforGeeks . 9 de agosto de 2018. Consultado el 15 de marzo de 2024 .
  4. 1 2 "CSE 5317/4305: Diseño y construcción de compiladores" . lambda.uta.edu . Consultado el 15 de marzo de 2024 .
  5. 1 2 3 4 5 "Tipos de traductores" . Ada Computer Science . 15 de marzo de 2024. Consultado el 15 de marzo de 2024 .
  6. "Lenguajes compilados versus lenguajes interpretados" . www.ibm.com . Consultado el 15 de marzo de 2024 .
  7. 1 2 Patt, Yale; Patel, Sanjay (15 de agosto de 2019). Introducción a los sistemas informáticos: De bits y compuertas a C/C++ y más allá (3.ª ed.). Nueva York, NY: McGraw-Hill. págs. 231–243 . ISBN   978-1260150537.
  8. 1 2 3 4 Stokoe, William (2024-05-06). "Estructura del lenguaje de signos" . Annual Review of Anthropology . 9 : 365–390 . doi : 10.1146/annurev.an.09.100180.002053 . Recuperado el 2024-03-15 .

Lecturas adicionales

  • Calingaert, Peter (1979) [5 de noviembre de 1978]. 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 (1.ª impresión, 1.ª  ed.). Potomac, Maryland, EE. UU.: Computer Science Press, Inc. ISBN 0-914894-23-4ISSN 0888-2088 . LCCN 78-21905 . Archivado del 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 del original el 29 de diciembre de 2019. Consultado el 2 de febrero de 2020 .
  • Edwards, Stephen A. (otoño de 2013). "Procesadores de lenguaje" (PDF) . Universidad de Columbia . Archivado (PDF) del original el 24 de junio de 2019. Recuperado el 2 de febrero de 2020 .
  • Tucker, Allen; Belford, Geneva G. "Ciencias de la computación" . Encyclopædia Britannica . Archivado del original el 23 de julio de 2019. Consultado el 2 de febrero de 2020 .