UNIVERSIDAD TÉCNICA “LUIS VARGAS TORRES”
DE ESMERALDAS
CARRERA/CURSO:
5TO TECNOLOGIAS DE LA INFORMACIÓN “A”
ASIGNATURA:
PROGRAMACIÓN IV
TEMA:
UNIDAD 1 COMPILADORES
ESTUDIANTES:
CAMPOS CASTILLO DIANA, CARVAJAL KLINGER ALDO,
CHICHANDE MARQUEZ EVELYN, VANEGAS COROZO ALISSON
DOCENTE:
DARIO RODRIGUEZ VIZUETE
AÑO LECTIVO:
2024
¿Cuál es la diferencia entre un compilador y un intérprete?
La principal diferencia entre un compilador y un intérprete radica en cómo
procesan el código fuente de un programa y lo convierten en instrucciones ejecutables
por la máquina.
Un compilador traduce todo el código fuente de un programa de una vez a un
lenguaje de máquina u otro lenguaje de programación. Este proceso resulta en un
archivo ejecutable que se puede ejecutar varias veces sin necesidad de recompilar el
código fuente original. Ejemplos de lenguajes compilados son C, C++, y Java (a
bytecode).
Por otro lado, un intérprete procesa el código fuente línea por línea (o en bloques
más grandes en algunos casos). Convierte cada línea en instrucciones ejecutables y las
ejecuta de inmediato. Esto significa que no se genera un archivo ejecutable separado y
que el código suele ser más lento que el código compilado. Ejemplos de lenguajes
interpretados son Python, JavaScript y Ruby.
Un compilador traduce todo el código antes de ejecutarlo, mientras que un
intérprete lo hace línea por línea mientras se ejecuta.
¿Cuáles son las ventajas de un compilador sobre un intérprete, y las de un
intérprete sobre un compilador?
Ventajas de un compilador sobre un intérprete:
Eficiencia de ejecución: Un compilador traduce todo el código fuente a
código de máquina u otro lenguaje de bajo nivel antes de su ejecución. Esto
puede resultar en un programa compilado que se ejecuta más rápidamente que
un programa interpretado, ya que no hay una fase de interpretación durante la
ejecución.
Optimización: Los compiladores a menudo realizan optimizaciones
durante el proceso de compilación, como la eliminación de código muerto, la
propagación de constantes y la reordenación de instrucciones, lo que puede
mejorar el rendimiento del programa resultante.
Ventajas de un intérprete sobre un compilador:
Retroalimentación inmediata: Los intérpretes ejecutan el código
directamente línea por línea, lo que permite una retroalimentación inmediata
sobre errores de sintaxis o errores en el código. Esto facilita el proceso de
depuración y desarrollo iterativo.
Facilidad de desarrollo: Los intérpretes suelen simplificar el proceso de
desarrollo al eliminar la necesidad de una fase de compilación separada. Esto
permite a los programadores escribir y probar rápidamente pequeños fragmentos
de código sin tener que preocuparse por la compilación.
¿Que ventajas hay para un sistema de procesamiento de lenguaje en el cuál
un compilador produce lenguaje ensamblador en vez de lenguaje de máquina?
Una ventaja importante de utilizar un compilador que produce lenguaje
ensamblador en lugar de lenguaje de máquina es la portabilidad del código fuente entre
diferentes arquitecturas de CPU. Esto se debe a que el lenguaje ensamblador, si bien es
específico de cada arquitectura, es más portátil que el código de máquina directo. Este
lenguaje ensamblador es producido por el compilador que proporciona portabilidad y
flexibilidad, y un mayor control sobre el rendimiento del programa.
Describa algunas de las tareas que necesita realizar un ensamblador
La tarea fundamental de un ensamblador es traducir un programa en lenguaje de
ensamblador al código correspondiente en lenguaje de máquina.
Convertir los códigos («opcode» o mnemónicos: ej. LDA, STX) a su código
equivalente en lenguaje de máquina
Convertir los operandos simbólicos (las etiquetas o variables) en las direcciones
correspondientes de los operandos
Construir las instrucciones en lenguaje de máquina en el formato apropiado
Convertir las constantes definidas en el programa en su verdadera representación
Escribir el «listing» en lenguaje de ensamblador con el código en lenguaje de
máquina correspondiente
Procesar las directrices al ensamblador (las directrices son instrucciones o
comandos dirigidos al ensamblador, que éste procesa y ejecuta al hallarlos en el
programa en lenguaje de ensamblador; estas directrices no se traducen a lenguaje de
máquina, si no que el ensamblador ejecuta alguna acción, como reservar memoria para
variables, entre otras)