SlideShare una empresa de Scribd logo
COMPILADORE
S
PRESENTADO POR:
YELI NAIDELIN ROJAS ALVARADO
¿QUE ES UN COMPILADOR?
• ES UN PROGRAMA QUE PERMITE TRADUCIR EL CÓDIGO FUENTE DE UN
PROGRAMA EN LENGUAJE DE ALTO NIVEL, A OTRO LENGUAJE DE NIVEL INFERIOR
(TÍPICAMENTE LENGUAJE DE MÁQUINA). DE ESTA MANERA UN PROGRAMADOR
PUEDE DISEÑAR UN PROGRAMA EN UN LENGUAJE MUCHO MÁS CERCANO A
COMO PIENSA UN SER HUMANO, PARA LUEGO COMPILARLO A UN PROGRAMA
MÁS MANEJABLE POR UNA COMPUTADORA.
¿COMO FUNCIONA?
• EL PROCESO DE TRADUCCIÓN SE COMPONE INTERNAMENTE DE VARIAS ETAPAS
O FASES, QUE REALIZAN DISTINTAS OPERACIONES LÓGICAS. ES ÚTIL PENSAR EN
ESTAS FASES COMO EN PIEZAS SEPARADAS DENTRO DEL TRADUCTOR, Y PUEDEN
EN REALIDAD ESCRIBIRSE COMO OPERACIONES CODIFICADAS SEPARADAMENTE
AUNQUE EN LA PRÁCTICA A MENUDO SE INTEGREN JUNTAS.
FASES
• FASE DE ANÁLISIS
- ANÁLISIS LÉXICO
CONSTITUYE LA PRIMERA FASE, AQUÍ SE LEE EL PROGRAMA FUENTE DE IZQUIERDA
A DERECHA Y SE AGRUPA EN COMPONENTES LÉXICOS QUE SON SECUENCIAS DE
CARACTERES QUE TIENEN UN SIGNIFICADO. ADEMÁS, TODOS LOS ESPACIOS EN
BLANCO, LÍNEAS EN BLANCO, COMENTARIOS Y DEMÁS INFORMACIÓN
INNECESARIA SE ELIMINA DEL PROGRAMA FUENTE.
- ANÁLISIS SINTÁCTICO
• EN ESTA FASE LOS CARACTERES O COMPONENTES LÉXICOS SE AGRUPAN JERÁRQUICAMENTE EN
FRASES GRAMATICALES QUE EL COMPILADOR UTILIZA PARA SINTETIZAR LA SALIDA. SE COMPRUEBA
SI LO OBTENIDO DE LA FASE ANTERIOR ES SINTÁCTICAMENTE CORRECTO (OBEDECE A LA
GRAMÁTICA DEL LENGUAJE). POR LO GENERAL, LAS FRASES GRAMATICALES DEL PROGRAMA FUENTE
SE REPRESENTAN MEDIANTE UN ÁRBOL DE ANÁLISIS SINTÁCTICO.
• ANÁLISIS SEMÁNTICO
• LA FASE DE ANÁLISIS SEMÁNTICO REVISA EL PROGRAMA FUENTE PARA TRATAR DE ENCONTRAR
ERRORES SEMÁNTICOS Y REÚNE LA INFORMACIÓN SOBRE LOS TIPOS PARA LA FASE POSTERIOR DE
GENERACIÓN DE CÓDIGO. EN ELLA SE UTILIZA LA ESTRUCTURA JERÁRQUICA DETERMINADA POR LA
FASE DE ANÁLISIS SINTÁCTICO PARA IDENTIFICAR LOS OPERADORES Y OPERANDOS DE EXPRESIONES
Y PROPOSICIONES.
• FASE DE SÍNTESIS
CONSISTE EN GENERAR EL CÓDIGO OBJETO EQUIVALENTE AL PROGRAMA FUENTE. SÓLO SE GENERA
CÓDIGO OBJETO CUANDO EL PROGRAMA FUENTE ESTÁ LIBRE DE ERRORES DE ANÁLISIS, LO CUAL NO
QUIERE DECIR QUE EL PROGRAMA SE EJECUTE CORRECTAMENTE, YA QUE UN PROGRAMA PUEDE TENER
ERRORES DE CONCEPTO O EXPRESIONES MAL CALCULADAS. POR LO GENERAL EL CÓDIGO OBJETO ES
CÓDIGO DE MÁQUINA RELOCALIZABLE O CÓDIGO ENSAMBLADOR. LAS POSICIONES DE MEMORIA SE
SELECCIONAN PARA CADA UNA DE LAS VARIABLES USADAS POR EL PROGRAMA. DESPUÉS, CADA UNA
DE LAS INSTRUCCIONES INTERMEDIAS SE TRADUCE A UNA SECUENCIA DE INSTRUCCIONES DE
MÁQUINA QUE EJECUTA LA MISMA TAREA. UN ASPECTO DECISIVO ES LA ASIGNACIÓN DE VARIABLES A
REGISTROS.
OPTIMIZACIÓN DE CÓDIGO
• LA FASE DE OPTIMIZACIÓN DE CÓDIGO CONSISTE EN MEJORAR EL CÓDIGO INTERMEDIO, DE MODO
QUE RESULTE UN CÓDIGO MÁQUINA MÁS RÁPIDO DE EJECUTAR. ESTA FASE DE LA ETAPA DE SÍNTESIS
ES POSIBLE SOBRE TODO SI EL TRADUCTOR ES UN COMPILADOR (DIFÍCILMENTE UN INTÉRPRETE
PUEDE OPTIMIZAR EL CÓDIGO OBJETO). HAY MUCHA VARIACIÓN EN LA CANTIDAD DE OPTIMIZACIÓN
DE CÓDIGO QUE EJECUTAN LOS DISTINTOS COMPILADORES. EN LOS QUE HACEN MUCHA
OPTIMIZACIÓN, LLAMADOS «COMPILADORES OPTIMIZADORES», UNA PARTE SIGNIFICATIVA DEL
TIEMPO DEL COMPILADOR SE OCUPA EN ESTA FASE. SIN EMBARGO, HAY OPTIMIZACIONES SENCILLAS
QUE MEJORAN SENSIBLEMENTE EL TIEMPO DE EJECUCIÓN DEL PROGRAMA OBJETO SIN RETARDAR
DEMASIADO LA COMPILACIÓN.
TIPOS DE COMPILADORES
• COMPILADORES CRUZADOS: GENERAN CÓDIGO PARA UN SISTEMA DISTINTO DEL QUE ESTÁN FUNCIONANDO.
• COMPILADORES OPTIMIZADORES: REALIZAN CAMBIOS EN EL CÓDIGO PARA MEJORAR SU EFICIENCIA, PERO MANTENIENDO LA
FUNCIONALIDAD DEL PROGRAMA ORIGINAL.
• COMPILADORES DE UNA SOLA PASADA: GENERAN EL CÓDIGO MÁQUINA A PARTIR DE UNA ÚNICA LECTURA DEL CÓDIGO FUENTE.
• COMPILADORES DE VARIAS PASADAS: NECESITAN LEER EL CÓDIGO FUENTE VARIAS VECES ANTES DE PODER PRODUCIR EL CÓDIGO
MÁQUINA.
• COMPILADORES JIT (JUST IN TIME): FORMAN PARTE DE UN INTÉRPRETE Y COMPILAN PARTES DEL CÓDIGO SEGÚN SE NECESITAN.
• COMPILADORES INCREMENTALES: GENERAN UN CÓDIGO OBJETO, INSTRUCCIÓN POR INSTRUCCIÓN CUANDO EL USUARIO TECLEA
CADA ORDEN INDIVIDUAL.
• COMPILADOR CON MONTADOR: COMPILA DISTINTOS MÓDULOS DE FORMA INDEPENDIENTE Y DESPUÉS ES CAPAZ DE APLAZARLOS.
• AUTO COMPILADOR: COMPILADOR QUE ESTÁ ESCRITO EN EL MISMO LENGUAJE QUE VA A COMPILAR.
• META COMPILADOR: ES PROGRAMA QUE RECIBE COMO ENTRADA LAS ESPECIFICACIONES DEL LENGUAJE PARA EL QUE SE DESEA
OBTENER UN COMPILADOR Y GENERA COMO SALIDA EL COMPILADOR PARA ESE LENGUAJE.
• DESCOMPILADOR: ES UN PROGRAMA QUE ACEPTA COMO ENTRADA CÓDIGO MAQUINA Y LA TRADUCE A UN LENGUAJE DE ALTO NIVEL
REALIZANDO EL PROCESO INVERSO A LA COMPILACIÓN.
• PAUTA DE CREACIÓN DE UN COMPILADOR: EN LAS PRIMERAS ÉPOCAS DE LA INFORMÁTICA, EL SOFTWARE DE LOS COMPILADORES ERA
CONSIDERADO COMO UNO DE LOS MÁS COMPLEJOS EXISTENTES.
• LOS PRIMEROS COMPILADORES SE REALIZARON PROGRAMÁNDOLOS DIRECTAMENTE EN LENGUAJE MÁQUINA O EN ENSAMBLADOR.
UNA VEZ QUE SE DISPONE DE UN COMPILADOR, SE PUEDEN ESCRIBIR NUEVAS VERSIONES DEL COMPILADOR (U OTROS COMPILADORES
DISTINTOS) EN EL LENGUAJE QUE COMPILA ESE COMPILADOR.
VENTAJAS DE UN COMPILADOR
1. VENTAJA: AUTÓNOMO Y EFICIENTE
UNA GRAN VENTAJA DE LOS PROGRAMAS QUE SE COMPILAN ES QUE SON UNIDADES AUTÓNOMAS LISTAS PARA SER
EJECUTADAS. DEBIDO A QUE YA SE ENCUENTRAN COMPILADAS EN ARCHIVOS BINARIOS DE LENGUAJE MÁQUINA, NO ES
NECESARIA UNA SEGUNDA APLICACIÓN O PAQUETE QUE EL USUARIO DEBA MANTENER ACTUALIZADO.
2. VENTAJA: OPTIMIZACIÓN DE HARDWARE
SI BIEN ESTAR RESTRINGIDO A UN PAQUETE DE HARDWARE ESPECÍFICO TIENE SUS DESVENTAJAS, COMPILAR UN PROGRAMA
TAMBIÉN PUEDE INCREMENTAR EL DESEMPEÑO DE ESTE ÚLTIMO. LOS USUARIOS PUEDEN ENVIAR OPCIONES ESPECÍFICAS A LOS
COMPILADORES, RELACIONADAS CON LOS DETALLES DEL HARDWARE EN EL QUE SE EJECUTARÁ EL PROGRAMA. ESTO PERMITE
QUE EL COMPILADOR GENERE CÓDIGO EN LENGUAJE MÁQUINA QUE HACE UN USO MÁS EFICIENTE DEL HARDWARE
ESPECIFICADO, A DIFERENCIA DEL CÓDIGO MÁS GENÉRICO.
DESVENTAJAS DE UN COMPILADOR
1. DESVENTAJA: ESPECÍFICO A UN HARDWARE
DADO QUE UN COMPILADOR TRADUCE EL CÓDIGO FUENTE A UN LENGUAJE MÁQUINA ESPECÍFICO, LOS PROGRAMAS DEBEN SER
COMPILADOS ESPECÍFICAMENTE PARA OS X, WINDOWS O LINUX, ASÍ COMO PARA ARQUITECTURAS DE 32 O 64 BITS. PARA UN
PROGRAMADOR O UNA COMPAÑÍA DE SOFTWARE QUE INTENTAN HACER QUE UN PRODUCTO LLEGUE A LA MAYOR AUDIENCIA POSIBLE,
ESTO REPRESENTA LA NECESIDAD DE TENER MÚLTIPLES VERSIONES DEL CÓDIGO FUENTE PARA LA MISMA APLICACIÓN, LO CUAL DA
COMO RESULTADO UNA MAYOR CANTIDAD DE TIEMPO EMPLEADA EN EL MANTENIMIENTO DEL CÓDIGO FUENTE Y PROBLEMAS
ADICIONALES CUANDO SON LIBERADAS LAS ACTUALIZACIONES.
2. DESVENTAJA: TIEMPOS DE COMPILACIÓN
UNA DE LAS DESVENTAJAS DE TENER UN COMPILADOR ES QUE VERDADERAMENTE DEBE COMPILAR CÓDIGO FUENTE. MIENTRAS QUE LOS
PEQUEÑOS PROGRAMAS QUE MUCHOS DESARROLLADORES NOVATOS CODIFICAN REQUIEREN CANTIDADES TRIVIALES DE TIEMPO PARA
SER COMPILADOS, LAS GRANDES SUITES DE APLICACIONES PUEDEN TARDAR CANTIDADES SIGNIFICATIVAS DE TIEMPO EN COMPILAR.
CUANDO LOS PROGRAMADORES NO TIENEN NADA QUE HACER MAS QUE ESPERAR A QUE EL COMPILADOR TERMINE, ESTE TIEMPO PUEDE
HACER EL PROCESO MÁS TARDADO, ESPECIALMENTE DURANTE LA ETAPA DE DESARROLLO, CUANDO EL CÓDIGO DEBE SER COMPILADO
PARA PROBAR SU FUNCIONALIDAD Y RESOLVER ERRORES.
Compiladores Yeli Rojas

Más contenido relacionado

PPTX
Lengujes de 2 generacion
PPTX
Tipos de lenguajes de programación
PPTX
Lenguaje de programacion
PPTX
4. Conceptos básicos III
PPTX
Compiladores
PPT
Lenguaje de programacion
PPTX
Presentación1 cuadro
PPTX
Presentación1
Lengujes de 2 generacion
Tipos de lenguajes de programación
Lenguaje de programacion
4. Conceptos básicos III
Compiladores
Lenguaje de programacion
Presentación1 cuadro
Presentación1

La actualidad más candente (20)

PPTX
Software
PPTX
Lenguaje de programación
PPTX
Generalidades del lenguaje ensamblador
PDF
Tema 1.3.- Programación
PPTX
Traductores e interpretes tania torres 9 b invicali
DOCX
P1_Act03 Cuadro Comparativo
PPTX
lenguajes de programacion
PPTX
Lenguaje de programacion
PDF
Presentacion_Lenguajes_Programacion
PPTX
Universidad fermín toro
PPTX
LENGUAJES DE PROGRAMACION
PPT
1.4 ensambladores y compiladores
PPTX
Presentación computación 1_compiladores_e_interpretes
PPTX
Lenguaje Ensamblador
PPTX
Thalia
PPTX
Compilador 22 (1)
PDF
Assembler apesteguia (1)
PDF
Ensayo
DOCX
Compiladores e intérpretes
PPTX
Compiladores
Software
Lenguaje de programación
Generalidades del lenguaje ensamblador
Tema 1.3.- Programación
Traductores e interpretes tania torres 9 b invicali
P1_Act03 Cuadro Comparativo
lenguajes de programacion
Lenguaje de programacion
Presentacion_Lenguajes_Programacion
Universidad fermín toro
LENGUAJES DE PROGRAMACION
1.4 ensambladores y compiladores
Presentación computación 1_compiladores_e_interpretes
Lenguaje Ensamblador
Thalia
Compilador 22 (1)
Assembler apesteguia (1)
Ensayo
Compiladores e intérpretes
Compiladores
Publicidad

Similar a Compiladores Yeli Rojas (20)

PPTX
presentacion compiladores sustentacion de conceptos.pptx
DOCX
C:\fakepath\el software libre
DOCX
C:\fakepath\el software libre
DOCX
C:\fakepath\el software libre
DOCX
C:\fakepath\el software libre
DOCX
C:\fakepath\compilador
DOCX
C:\fakepath\el software libre
PDF
Traductores bajo-nivel
PPTX
COMPILADORES UNIREMINGTON
PPTX
Compiladores diapositivas
PPTX
Compiladores
DOCX
C:\fakepath\compiladores
DOCX
Conceptos de compilador
DOCX
Conceptos De Compilador
PPTX
Tema 01 introducción a compiladores
DOCX
Trabajo final
PDF
Investigacion sobre traductor, interprete y compilador
DOCX
C:\documents and settings\clientea\mis documentos\compiladores
presentacion compiladores sustentacion de conceptos.pptx
C:\fakepath\el software libre
C:\fakepath\el software libre
C:\fakepath\el software libre
C:\fakepath\el software libre
C:\fakepath\compilador
C:\fakepath\el software libre
Traductores bajo-nivel
COMPILADORES UNIREMINGTON
Compiladores diapositivas
Compiladores
C:\fakepath\compiladores
Conceptos de compilador
Conceptos De Compilador
Tema 01 introducción a compiladores
Trabajo final
Investigacion sobre traductor, interprete y compilador
C:\documents and settings\clientea\mis documentos\compiladores
Publicidad

Último (20)

PPT
357161027-seguridad-industrial-diapositivas-ppt.ppt
PPTX
Curso Corto de PLANTA CONCENTRADORA FREEPORT
PPTX
clase MICROCONTROLADORES ago-dic 2019.pptx
PDF
Repaso sobre el Gusano_cogollero y como ataca .pdf
PDF
Sugerencias Didacticas 2023_Diseño de Estructuras Metalicas_digital.pdf
PPTX
leyes de los gases Ideales. combustible refinación
PDF
LIBRO UNIVERSITARIO INTELIGENCIA ALGORITMICA BN.pdf
PPTX
Introduccion quimica del fuego.ffffffffffpptx
PDF
ntc5951 Metodo de ensayo para determinar las propiedades de tension en plasti...
PPTX
LEVANTAMIENTOS TOPOGRAFICOS - DIAPOSITIVAS
PDF
HISTORIA DE LA GRÚAA LO LARGO DE LOS TIEMPOSpdf
PPTX
ARQUITECTURA INTEGRAL EN OBRA, PRINCIPIOS BASICOS Y TERMINOS
PPTX
Electronica II, material basico de electronica II
DOCX
Cumplimiento normativo y realidad laboral
PDF
FUNCION CUADRATICA FUNCIONES RAIZ CUADRADA
PDF
SESION 10 SEGURIDAD EN TRABAJOS CON ELECTRICIDAD.pdf
DOC
informacion acerca de la crianza tecnificada de cerdos
PPTX
Cómo Elaborar e Implementar el IPERC_ 2023.pptx
PPTX
PRESENTACION DIAPOSITIVA PARA UN PROYECTO .pptx
PPTX
Riesgo eléctrico 5 REGLAS DE ORO PARA TRABAJOS CON TENSION
357161027-seguridad-industrial-diapositivas-ppt.ppt
Curso Corto de PLANTA CONCENTRADORA FREEPORT
clase MICROCONTROLADORES ago-dic 2019.pptx
Repaso sobre el Gusano_cogollero y como ataca .pdf
Sugerencias Didacticas 2023_Diseño de Estructuras Metalicas_digital.pdf
leyes de los gases Ideales. combustible refinación
LIBRO UNIVERSITARIO INTELIGENCIA ALGORITMICA BN.pdf
Introduccion quimica del fuego.ffffffffffpptx
ntc5951 Metodo de ensayo para determinar las propiedades de tension en plasti...
LEVANTAMIENTOS TOPOGRAFICOS - DIAPOSITIVAS
HISTORIA DE LA GRÚAA LO LARGO DE LOS TIEMPOSpdf
ARQUITECTURA INTEGRAL EN OBRA, PRINCIPIOS BASICOS Y TERMINOS
Electronica II, material basico de electronica II
Cumplimiento normativo y realidad laboral
FUNCION CUADRATICA FUNCIONES RAIZ CUADRADA
SESION 10 SEGURIDAD EN TRABAJOS CON ELECTRICIDAD.pdf
informacion acerca de la crianza tecnificada de cerdos
Cómo Elaborar e Implementar el IPERC_ 2023.pptx
PRESENTACION DIAPOSITIVA PARA UN PROYECTO .pptx
Riesgo eléctrico 5 REGLAS DE ORO PARA TRABAJOS CON TENSION

Compiladores Yeli Rojas

  • 2. ¿QUE ES UN COMPILADOR? • ES UN PROGRAMA QUE PERMITE TRADUCIR EL CÓDIGO FUENTE DE UN PROGRAMA EN LENGUAJE DE ALTO NIVEL, A OTRO LENGUAJE DE NIVEL INFERIOR (TÍPICAMENTE LENGUAJE DE MÁQUINA). DE ESTA MANERA UN PROGRAMADOR PUEDE DISEÑAR UN PROGRAMA EN UN LENGUAJE MUCHO MÁS CERCANO A COMO PIENSA UN SER HUMANO, PARA LUEGO COMPILARLO A UN PROGRAMA MÁS MANEJABLE POR UNA COMPUTADORA.
  • 3. ¿COMO FUNCIONA? • EL PROCESO DE TRADUCCIÓN SE COMPONE INTERNAMENTE DE VARIAS ETAPAS O FASES, QUE REALIZAN DISTINTAS OPERACIONES LÓGICAS. ES ÚTIL PENSAR EN ESTAS FASES COMO EN PIEZAS SEPARADAS DENTRO DEL TRADUCTOR, Y PUEDEN EN REALIDAD ESCRIBIRSE COMO OPERACIONES CODIFICADAS SEPARADAMENTE AUNQUE EN LA PRÁCTICA A MENUDO SE INTEGREN JUNTAS.
  • 4. FASES • FASE DE ANÁLISIS - ANÁLISIS LÉXICO CONSTITUYE LA PRIMERA FASE, AQUÍ SE LEE EL PROGRAMA FUENTE DE IZQUIERDA A DERECHA Y SE AGRUPA EN COMPONENTES LÉXICOS QUE SON SECUENCIAS DE CARACTERES QUE TIENEN UN SIGNIFICADO. ADEMÁS, TODOS LOS ESPACIOS EN BLANCO, LÍNEAS EN BLANCO, COMENTARIOS Y DEMÁS INFORMACIÓN INNECESARIA SE ELIMINA DEL PROGRAMA FUENTE.
  • 5. - ANÁLISIS SINTÁCTICO • EN ESTA FASE LOS CARACTERES O COMPONENTES LÉXICOS SE AGRUPAN JERÁRQUICAMENTE EN FRASES GRAMATICALES QUE EL COMPILADOR UTILIZA PARA SINTETIZAR LA SALIDA. SE COMPRUEBA SI LO OBTENIDO DE LA FASE ANTERIOR ES SINTÁCTICAMENTE CORRECTO (OBEDECE A LA GRAMÁTICA DEL LENGUAJE). POR LO GENERAL, LAS FRASES GRAMATICALES DEL PROGRAMA FUENTE SE REPRESENTAN MEDIANTE UN ÁRBOL DE ANÁLISIS SINTÁCTICO. • ANÁLISIS SEMÁNTICO • LA FASE DE ANÁLISIS SEMÁNTICO REVISA EL PROGRAMA FUENTE PARA TRATAR DE ENCONTRAR ERRORES SEMÁNTICOS Y REÚNE LA INFORMACIÓN SOBRE LOS TIPOS PARA LA FASE POSTERIOR DE GENERACIÓN DE CÓDIGO. EN ELLA SE UTILIZA LA ESTRUCTURA JERÁRQUICA DETERMINADA POR LA FASE DE ANÁLISIS SINTÁCTICO PARA IDENTIFICAR LOS OPERADORES Y OPERANDOS DE EXPRESIONES Y PROPOSICIONES.
  • 6. • FASE DE SÍNTESIS CONSISTE EN GENERAR EL CÓDIGO OBJETO EQUIVALENTE AL PROGRAMA FUENTE. SÓLO SE GENERA CÓDIGO OBJETO CUANDO EL PROGRAMA FUENTE ESTÁ LIBRE DE ERRORES DE ANÁLISIS, LO CUAL NO QUIERE DECIR QUE EL PROGRAMA SE EJECUTE CORRECTAMENTE, YA QUE UN PROGRAMA PUEDE TENER ERRORES DE CONCEPTO O EXPRESIONES MAL CALCULADAS. POR LO GENERAL EL CÓDIGO OBJETO ES CÓDIGO DE MÁQUINA RELOCALIZABLE O CÓDIGO ENSAMBLADOR. LAS POSICIONES DE MEMORIA SE SELECCIONAN PARA CADA UNA DE LAS VARIABLES USADAS POR EL PROGRAMA. DESPUÉS, CADA UNA DE LAS INSTRUCCIONES INTERMEDIAS SE TRADUCE A UNA SECUENCIA DE INSTRUCCIONES DE MÁQUINA QUE EJECUTA LA MISMA TAREA. UN ASPECTO DECISIVO ES LA ASIGNACIÓN DE VARIABLES A REGISTROS.
  • 7. OPTIMIZACIÓN DE CÓDIGO • LA FASE DE OPTIMIZACIÓN DE CÓDIGO CONSISTE EN MEJORAR EL CÓDIGO INTERMEDIO, DE MODO QUE RESULTE UN CÓDIGO MÁQUINA MÁS RÁPIDO DE EJECUTAR. ESTA FASE DE LA ETAPA DE SÍNTESIS ES POSIBLE SOBRE TODO SI EL TRADUCTOR ES UN COMPILADOR (DIFÍCILMENTE UN INTÉRPRETE PUEDE OPTIMIZAR EL CÓDIGO OBJETO). HAY MUCHA VARIACIÓN EN LA CANTIDAD DE OPTIMIZACIÓN DE CÓDIGO QUE EJECUTAN LOS DISTINTOS COMPILADORES. EN LOS QUE HACEN MUCHA OPTIMIZACIÓN, LLAMADOS «COMPILADORES OPTIMIZADORES», UNA PARTE SIGNIFICATIVA DEL TIEMPO DEL COMPILADOR SE OCUPA EN ESTA FASE. SIN EMBARGO, HAY OPTIMIZACIONES SENCILLAS QUE MEJORAN SENSIBLEMENTE EL TIEMPO DE EJECUCIÓN DEL PROGRAMA OBJETO SIN RETARDAR DEMASIADO LA COMPILACIÓN.
  • 8. TIPOS DE COMPILADORES • COMPILADORES CRUZADOS: GENERAN CÓDIGO PARA UN SISTEMA DISTINTO DEL QUE ESTÁN FUNCIONANDO. • COMPILADORES OPTIMIZADORES: REALIZAN CAMBIOS EN EL CÓDIGO PARA MEJORAR SU EFICIENCIA, PERO MANTENIENDO LA FUNCIONALIDAD DEL PROGRAMA ORIGINAL. • COMPILADORES DE UNA SOLA PASADA: GENERAN EL CÓDIGO MÁQUINA A PARTIR DE UNA ÚNICA LECTURA DEL CÓDIGO FUENTE. • COMPILADORES DE VARIAS PASADAS: NECESITAN LEER EL CÓDIGO FUENTE VARIAS VECES ANTES DE PODER PRODUCIR EL CÓDIGO MÁQUINA. • COMPILADORES JIT (JUST IN TIME): FORMAN PARTE DE UN INTÉRPRETE Y COMPILAN PARTES DEL CÓDIGO SEGÚN SE NECESITAN. • COMPILADORES INCREMENTALES: GENERAN UN CÓDIGO OBJETO, INSTRUCCIÓN POR INSTRUCCIÓN CUANDO EL USUARIO TECLEA CADA ORDEN INDIVIDUAL.
  • 9. • COMPILADOR CON MONTADOR: COMPILA DISTINTOS MÓDULOS DE FORMA INDEPENDIENTE Y DESPUÉS ES CAPAZ DE APLAZARLOS. • AUTO COMPILADOR: COMPILADOR QUE ESTÁ ESCRITO EN EL MISMO LENGUAJE QUE VA A COMPILAR. • META COMPILADOR: ES PROGRAMA QUE RECIBE COMO ENTRADA LAS ESPECIFICACIONES DEL LENGUAJE PARA EL QUE SE DESEA OBTENER UN COMPILADOR Y GENERA COMO SALIDA EL COMPILADOR PARA ESE LENGUAJE. • DESCOMPILADOR: ES UN PROGRAMA QUE ACEPTA COMO ENTRADA CÓDIGO MAQUINA Y LA TRADUCE A UN LENGUAJE DE ALTO NIVEL REALIZANDO EL PROCESO INVERSO A LA COMPILACIÓN. • PAUTA DE CREACIÓN DE UN COMPILADOR: EN LAS PRIMERAS ÉPOCAS DE LA INFORMÁTICA, EL SOFTWARE DE LOS COMPILADORES ERA CONSIDERADO COMO UNO DE LOS MÁS COMPLEJOS EXISTENTES. • LOS PRIMEROS COMPILADORES SE REALIZARON PROGRAMÁNDOLOS DIRECTAMENTE EN LENGUAJE MÁQUINA O EN ENSAMBLADOR. UNA VEZ QUE SE DISPONE DE UN COMPILADOR, SE PUEDEN ESCRIBIR NUEVAS VERSIONES DEL COMPILADOR (U OTROS COMPILADORES DISTINTOS) EN EL LENGUAJE QUE COMPILA ESE COMPILADOR.
  • 10. VENTAJAS DE UN COMPILADOR 1. VENTAJA: AUTÓNOMO Y EFICIENTE UNA GRAN VENTAJA DE LOS PROGRAMAS QUE SE COMPILAN ES QUE SON UNIDADES AUTÓNOMAS LISTAS PARA SER EJECUTADAS. DEBIDO A QUE YA SE ENCUENTRAN COMPILADAS EN ARCHIVOS BINARIOS DE LENGUAJE MÁQUINA, NO ES NECESARIA UNA SEGUNDA APLICACIÓN O PAQUETE QUE EL USUARIO DEBA MANTENER ACTUALIZADO. 2. VENTAJA: OPTIMIZACIÓN DE HARDWARE SI BIEN ESTAR RESTRINGIDO A UN PAQUETE DE HARDWARE ESPECÍFICO TIENE SUS DESVENTAJAS, COMPILAR UN PROGRAMA TAMBIÉN PUEDE INCREMENTAR EL DESEMPEÑO DE ESTE ÚLTIMO. LOS USUARIOS PUEDEN ENVIAR OPCIONES ESPECÍFICAS A LOS COMPILADORES, RELACIONADAS CON LOS DETALLES DEL HARDWARE EN EL QUE SE EJECUTARÁ EL PROGRAMA. ESTO PERMITE QUE EL COMPILADOR GENERE CÓDIGO EN LENGUAJE MÁQUINA QUE HACE UN USO MÁS EFICIENTE DEL HARDWARE ESPECIFICADO, A DIFERENCIA DEL CÓDIGO MÁS GENÉRICO.
  • 11. DESVENTAJAS DE UN COMPILADOR 1. DESVENTAJA: ESPECÍFICO A UN HARDWARE DADO QUE UN COMPILADOR TRADUCE EL CÓDIGO FUENTE A UN LENGUAJE MÁQUINA ESPECÍFICO, LOS PROGRAMAS DEBEN SER COMPILADOS ESPECÍFICAMENTE PARA OS X, WINDOWS O LINUX, ASÍ COMO PARA ARQUITECTURAS DE 32 O 64 BITS. PARA UN PROGRAMADOR O UNA COMPAÑÍA DE SOFTWARE QUE INTENTAN HACER QUE UN PRODUCTO LLEGUE A LA MAYOR AUDIENCIA POSIBLE, ESTO REPRESENTA LA NECESIDAD DE TENER MÚLTIPLES VERSIONES DEL CÓDIGO FUENTE PARA LA MISMA APLICACIÓN, LO CUAL DA COMO RESULTADO UNA MAYOR CANTIDAD DE TIEMPO EMPLEADA EN EL MANTENIMIENTO DEL CÓDIGO FUENTE Y PROBLEMAS ADICIONALES CUANDO SON LIBERADAS LAS ACTUALIZACIONES. 2. DESVENTAJA: TIEMPOS DE COMPILACIÓN UNA DE LAS DESVENTAJAS DE TENER UN COMPILADOR ES QUE VERDADERAMENTE DEBE COMPILAR CÓDIGO FUENTE. MIENTRAS QUE LOS PEQUEÑOS PROGRAMAS QUE MUCHOS DESARROLLADORES NOVATOS CODIFICAN REQUIEREN CANTIDADES TRIVIALES DE TIEMPO PARA SER COMPILADOS, LAS GRANDES SUITES DE APLICACIONES PUEDEN TARDAR CANTIDADES SIGNIFICATIVAS DE TIEMPO EN COMPILAR. CUANDO LOS PROGRAMADORES NO TIENEN NADA QUE HACER MAS QUE ESPERAR A QUE EL COMPILADOR TERMINE, ESTE TIEMPO PUEDE HACER EL PROCESO MÁS TARDADO, ESPECIALMENTE DURANTE LA ETAPA DE DESARROLLO, CUANDO EL CÓDIGO DEBE SER COMPILADO PARA PROBAR SU FUNCIONALIDAD Y RESOLVER ERRORES.