SlideShare ist ein Scribd-Unternehmen logo
1 von 32
Downloaden Sie, um offline zu lesen
Unidad I Introducción a la
programación de Sistemas
 M.C. Juan Carlos Olivares Rojas
Agenda
1.1 ¿Qué es y que estudia la programación de sistemas?
1.2 Herramientas desarrolladas con la teoría de programación
     de sistemas
1.3 Lenguajes
     1.3.1 Lenguajes naturales.
     1.3.2 Lenguajes artificiales.
     1.3.3 Proceso de la comunicación.
1.4 Traductor y su estructura.
     1.4.1 Ensambladores.
     1.4.2 Compiladores.
     1.4.3 Interpretes.
1.5 Generadores de código para compiladores (compilador de
     compilador).
1.1 ¿Qué es y qué estudia la
    programación de sistemas?
• Programa: conjunto de instrucciones que
  ejecuta una computadora para realizar una
  actividad.

• Sistema: conjunto de elementos autónomos
  que trabajan en armonía para alcanzar un
  objetivo en común.
Tipos de sistemas
• Sistemas físicos: equipo, maquinaria, objetos
  reales, Hardware

• Sistemas abstractos: ideas,        hipótesis,
  conceptos, planes, Software

• Sistemas abiertos y cerrados dependiendo
  del ambiente en que se ejecutan.
Características de un sistema
• Están bien delimitados, por lo tanto se conocen sus
  fronteras.

• Un sistema puede interactuar con su medio
  ambiente a través de una interfaz de entradas y
  salidas que recibe el nombre de parámetros del
  sistema.

• Un sistema puede ser componente de otro sistema
¿Cuál es la diferencia entre un
       técnico y un ingeniero?
• A parte del grado académico, el tipo de programas
  que realizan.

• Generalmente un técnico realiza software de
  aplicaciones (ABCD) o aplicaciones de gestión
  (nóminas, control de inventarios, etc.)

• Un ingeniero es más creativo, más ciencia e
  investigación; mientras que un licenciado aplica los
  conocimientos.
Clasificación del software
• Software de sistemas: software que ayuda
  (sirve de base) a otro software.

• Procesan estructuras de datos complejas
• Tienen una fuerte dependencia con el
  hardware
• Utilizan una fuerte gestión de procesos
  (concurrencia, planificación, etc.)
Clasificación del software
•   Software de aplicación (gestión)
•   Software de tiempo real
•   Software empotrado
•   Software de ingeniería y científico
•   Software basado en Web
•   Software de inteligencia artificial
Áreas afines a la programación de
             sistemas
• Teoría de la computación (lenguajes y
  autómatas).
• Lenguajes de programación
• Arquitecturas de computadoras
• Algorítmica
• Ingeniería del software
1.2 Herramientas desarrolladas con la
 teoría de programación de sistemas
• El caso más sencillo de programación de
  sistemas es la construcción de compiladores
  para ejecutar lenguajes de programación.

• Pero no sólo se aplica en lenguajes de
  programación, sino también se aplica en
  cualquier programa que se tenga que hacer
  un análisis o extracción de información
Software de sistemas
• Editores de texto inteligentes (IDEs con
  autocompletar, revisores ortográficos, etc)
• Impresoras estéticas (impresión de gran
  calidad sin un editor visual, Latex, etc.)
• Intérpretes (Shells de sistemas operativos o
  de alguna aplicación como un SMBD)
• Búsqueda de información que no es tan
  común en base a patrones, etc.
1.3 Lenguajes
• Conjunto de palabras y reglas que permiten
  comunicar información entre dos entidades.

• Lenguaje son las cadenas que pueden
  generarse a través de una gramática

• El lenguaje que entienden las máquinas
  (lenguaje formal) es muy diferente del
  lenguaje que entendemos los humanos
Repaso de lenguajes y autómatas
• Símbolo: representación abstracta de alguna
  entidad
• Alfabeto: conjunto finito de símbolos
• Cadena: yuxtaposición de símbolos de un
  alfabeto que representan a un objeto
• Lenguaje: conjunto de cadenas válidas que
  se pueden formar a través de un alfabeto
1.3.1 Lenguajes naturales
• El lenguaje natural es inherentemente
  ambiguo, por lo que se necesita crear un
  lenguaje que permita eliminar esas
  ambigüedades.

• Es mejor crear otro lenguaje, denominado de
  alto nivel que es el encargado de mediar
  entre la abstracción humana y la abstracción
  de lenguaje de máquina
1.3.2 Lenguajes artificiales
• Los lenguajes artificiales son aquellos que
  los   humanos      hemos      creado   para
  comunicarnos

• Las computadoras sólo saben 0 y 1

• Un lenguaje artificial permite implementar un
  algoritmo en una computadora para resolver
  un problema.
Lenguajes de bajo nivel
• Una abstracción más entendible del lenguaje
  máquina es el uso de lenguajes
  ensambladores en donde cada instrucción o
  mnemónico es traducido a una instrucción
  máquina.

• ADD AX, 5
• LOAD A, 5
Lenguajes máquina
• El lenguaje máquina es dependiente de cada
  tipo de arquitectura de computadoras por lo
  que el código no es fácilmente portable a
  otras arquitecturas.

• Los lenguajes de alto nivel son más
  portables en lo que respecta al código fuente
  pudiendo llevarse a otras arquitecturas de
  computadoras sin mayor problema.
Clasificación de Chomsky
• Lenguajes sin restricciones (gramática 0)
• Lenguajes dependientes del contexto (tipo 1)
• Lenguajes independientes del contexto (tipo
  2)
• Lenguajes regulares (tipo 0 no presentan
  ambigüedades, lo ideal para representarlas
  en una computadora)
1.3.3 Proceso de la comunicación
• Para entablar una comunicación se necesita
  que tanto el emisor como el receptor
  conozcan el mismo lenguaje o en su defecto
  tengan un traductor.

• En este sentido, los humanos escribimos
  algoritmos en un lenguaje formal que una
  computadora pueda transformar a un
  lenguaje entendible por ella.
1.4 Traductor y su estructura
• Un traductor es un mediador entre dos
  entidades: emisoras y receptoras

• Los mediadores enmascaran la complejidad
  y heterogeneidad de los lenguajes

• Un traductor convierte un lenguaje de
  entrada (código fuente) a uno de salida
  (código objeto)
Traductor
• La traducción puede ser sencilla (literal) o
  compleja (revisar el contexto) dependiendo
  del tipo de lenguaje de entrada y salida.

• Traducción español a inglés si se hace de
  manera literal es una mala traducción, se
  necesita de al menos otra revisión (pasada)
  para hacer una buena traducción.
Traductor


Lenguaje del emisor                    Lenguaje del receptor

Código fuente                          Código objeto
                        Traductor




                       Errores en el
                       proceso de
                       traducción
1.4.1 Ensambladores
• Ensamblador es el traductor que se encarga de
  convertir instrucciones de bajo nivel a instrucciones
  de una máquina en general

• //Encabezados
  00 MOV AX, 58d       4F0188
  03 CMP 0             3A00
  05 JMP etiqueta      9918
  …
Etiqueta:
  18 MUL AX, FF        4401FF
1.4.2 Compiladores
• Es el traductor que se encarga de convertir un
  lenguaje de alto nivel a código máquina.

• La característica de este traductor radica en el
  hecho de que necesita revisar todo el código fuente
  para poder realizar la traducción.

• Ejemplo: la traducción de un libro, discurso, o
  artículo técnico o de investigación
Compiladores
• Ejemplos de compiladores: C, C++, Pascal, etc.

• Entre más pasadas se de a un código fuente mayor
  es la optimización que se puede hacer. El problema
  radica en el tiempo y en los recursos para hacerlo

• Antes de compilar un programa fuente se sigue una
  etapa de preprocesamiento.
Preprocesadores:
• Macros (expansión de funciones)

• Inclusión de archivos (bibliotecas)

• Procesadores racionales

• Extensiones al leguaje         (inclusión   de
  ensamblador en C)
Etapas de un compilador
 Análisis    Análisis     Análisis       Generación de
                                                            Optimización
 Léxico     Sintáctico   Semántico      Código intermedio




                           Manejador
                           de Errores




Código fuente                                          Código objeto
1.4.3 Intérpretes
• Se ejecutan línea por línea, instrucción por
  instrucción.

• Lenguajes interpretados: PHP, PERL, BASIC

• En algunas ocasiones se necesita de una
  traducción rápida de algunas instrucciones,
  como en el Shell, instrucciones SQL, etc.
¿Java es compilado o interpretado?
• Java al igual que otros lenguajes como C#
  son lenguajes híbridos. Por una parte se
  compila un programa fuente para generar
  código objeto para una máquina virtual
  (bytecode o MSIL) para posteriormente
  ejecutarse de manera interpretada en las
  diferentes máquinas virtuales de cada
  plataforma. A este compilador se les llama
  jitter de JIT (Just in Time)
1.5 Generadores de código para
     compiladores (compilador de
             compilador)
• Los dos primeros lenguajes de alto          nivel
  desarrollado fueron FORTRAN y COBOL.

• Desarrollar FORTRAN tardó alrededor de 14 años.
  Desarrollar nuestro compilador tardará menos de 6
  meses

• Son herramientas que auxilian algún aspecto del
  proceso de traducción
Herramientas auxiliares para
        programación de sistemas
•   Cargadores y editores de enlace
•   Generadores de analizadores léxico
•   Generadores de Analizadores sintácticos
•   Traductores dirigidos por sintaxis
•   Generadores automáticos de código
•   Dispositivos para el análisis de flujo de datos
¿Preguntas?

Weitere ähnliche Inhalte

Was ist angesagt? (20)

Programación
ProgramaciónProgramación
Programación
 
Procesadores de lenguaje resumen 1
Procesadores de lenguaje resumen 1Procesadores de lenguaje resumen 1
Procesadores de lenguaje resumen 1
 
Ciclo Repetitivo
Ciclo RepetitivoCiclo Repetitivo
Ciclo Repetitivo
 
1. que es programacion
1. que es programacion1. que es programacion
1. que es programacion
 
Ensambladores y Compiladores
Ensambladores y CompiladoresEnsambladores y Compiladores
Ensambladores y Compiladores
 
Algoritmos y programas
Algoritmos y programasAlgoritmos y programas
Algoritmos y programas
 
Lenguajes de programación
Lenguajes de programaciónLenguajes de programación
Lenguajes de programación
 
Tema 01 introducción a compiladores
Tema 01   introducción a compiladoresTema 01   introducción a compiladores
Tema 01 introducción a compiladores
 
PROGRAMA INFORMATICO
PROGRAMA INFORMATICO PROGRAMA INFORMATICO
PROGRAMA INFORMATICO
 
Programacion informatica 2
Programacion informatica 2Programacion informatica 2
Programacion informatica 2
 
Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacion
 
Arqui
ArquiArqui
Arqui
 
Clase 1. lógica de la programación
Clase 1. lógica de la programaciónClase 1. lógica de la programación
Clase 1. lógica de la programación
 
Introducccion programacion
Introducccion programacionIntroducccion programacion
Introducccion programacion
 
Historia de la programacion
Historia de la programacionHistoria de la programacion
Historia de la programacion
 
Lenguaje de programación
Lenguaje de programaciónLenguaje de programación
Lenguaje de programación
 
Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacion
 
Clases/Tipos de lenguajes de programación
Clases/Tipos de lenguajes de programaciónClases/Tipos de lenguajes de programación
Clases/Tipos de lenguajes de programación
 
Michael guti
Michael gutiMichael guti
Michael guti
 
Clasificación de los lenguajes de programación
Clasificación de los lenguajes de programaciónClasificación de los lenguajes de programación
Clasificación de los lenguajes de programación
 

Ähnlich wie ingenieria de software

Conceptos Básicos de Programación
Conceptos Básicos de ProgramaciónConceptos Básicos de Programación
Conceptos Básicos de ProgramaciónMaraIsabel87
 
Lenguajes de programación: Paradigmas de Programación
Lenguajes de programación: Paradigmas de ProgramaciónLenguajes de programación: Paradigmas de Programación
Lenguajes de programación: Paradigmas de ProgramaciónLuis Fernando Aguas Bucheli
 
Conceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programaciónConceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programaciónMarco Chunab
 
Materia unidad compiladores
Materia unidad compiladoresMateria unidad compiladores
Materia unidad compiladoresbachispasaca
 
Introduccion ala programacion de sistemas
Introduccion ala programacion de sistemasIntroduccion ala programacion de sistemas
Introduccion ala programacion de sistemasMazariego19
 
Conceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programaciónConceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programaciónjusto morales
 
Tema 2 Lenguajes de Programación - Final.pptx
Tema 2 Lenguajes de Programación - Final.pptxTema 2 Lenguajes de Programación - Final.pptx
Tema 2 Lenguajes de Programación - Final.pptxdocmarcoantoniosotov
 
Traductores de lenguajes de programación
Traductores de lenguajes de programaciónTraductores de lenguajes de programación
Traductores de lenguajes de programaciónDaniela Brignolo
 
Fp isc u1 conceptos basicos
Fp isc   u1 conceptos basicosFp isc   u1 conceptos basicos
Fp isc u1 conceptos basicosAntonio San
 
Lenguajes de Programación. Conceptos.ppt
Lenguajes de Programación. Conceptos.pptLenguajes de Programación. Conceptos.ppt
Lenguajes de Programación. Conceptos.pptLorena Rodriguez
 
Grupo 1 proceso de lenguajes i
Grupo 1 proceso de lenguajes iGrupo 1 proceso de lenguajes i
Grupo 1 proceso de lenguajes iRossana Sosa
 
Compilador e interpretador
Compilador e interpretadorCompilador e interpretador
Compilador e interpretadorFrancisco Leal
 
Fundamentos de Programacion - Unidad 1 conceptos basicos
Fundamentos de Programacion - Unidad 1 conceptos basicosFundamentos de Programacion - Unidad 1 conceptos basicos
Fundamentos de Programacion - Unidad 1 conceptos basicosJosé Antonio Sandoval Acosta
 

Ähnlich wie ingenieria de software (20)

TEMA Nº 1
TEMA Nº 1TEMA Nº 1
TEMA Nº 1
 
Conceptos Básicos de Programación
Conceptos Básicos de ProgramaciónConceptos Básicos de Programación
Conceptos Básicos de Programación
 
Lenguajes de programación: Paradigmas de Programación
Lenguajes de programación: Paradigmas de ProgramaciónLenguajes de programación: Paradigmas de Programación
Lenguajes de programación: Paradigmas de Programación
 
Conceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programaciónConceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programación
 
Materia unidad compiladores
Materia unidad compiladoresMateria unidad compiladores
Materia unidad compiladores
 
Ac unidad 5
Ac unidad 5Ac unidad 5
Ac unidad 5
 
Introduccion ala programacion de sistemas
Introduccion ala programacion de sistemasIntroduccion ala programacion de sistemas
Introduccion ala programacion de sistemas
 
Software 2014 1
Software 2014 1Software 2014 1
Software 2014 1
 
Conceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programaciónConceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programación
 
Tema 2 Lenguajes de Programación - Final.pptx
Tema 2 Lenguajes de Programación - Final.pptxTema 2 Lenguajes de Programación - Final.pptx
Tema 2 Lenguajes de Programación - Final.pptx
 
Traductores de lenguajes de programación
Traductores de lenguajes de programaciónTraductores de lenguajes de programación
Traductores de lenguajes de programación
 
Fp isc u1 conceptos basicos
Fp isc   u1 conceptos basicosFp isc   u1 conceptos basicos
Fp isc u1 conceptos basicos
 
Lenguajes de Programación. Conceptos.ppt
Lenguajes de Programación. Conceptos.pptLenguajes de Programación. Conceptos.ppt
Lenguajes de Programación. Conceptos.ppt
 
Grupo 1 proceso de lenguajes i
Grupo 1 proceso de lenguajes iGrupo 1 proceso de lenguajes i
Grupo 1 proceso de lenguajes i
 
Introduccion ensamblador
Introduccion ensambladorIntroduccion ensamblador
Introduccion ensamblador
 
Compilador e interpretador
Compilador e interpretadorCompilador e interpretador
Compilador e interpretador
 
Unidad-1.pptx.pdf
Unidad-1.pptx.pdfUnidad-1.pptx.pdf
Unidad-1.pptx.pdf
 
Unidad-1.pptx.pdf
Unidad-1.pptx.pdfUnidad-1.pptx.pdf
Unidad-1.pptx.pdf
 
Algoritmos1
Algoritmos1Algoritmos1
Algoritmos1
 
Fundamentos de Programacion - Unidad 1 conceptos basicos
Fundamentos de Programacion - Unidad 1 conceptos basicosFundamentos de Programacion - Unidad 1 conceptos basicos
Fundamentos de Programacion - Unidad 1 conceptos basicos
 

ingenieria de software

  • 1. Unidad I Introducción a la programación de Sistemas M.C. Juan Carlos Olivares Rojas
  • 2. Agenda 1.1 ¿Qué es y que estudia la programación de sistemas? 1.2 Herramientas desarrolladas con la teoría de programación de sistemas 1.3 Lenguajes 1.3.1 Lenguajes naturales. 1.3.2 Lenguajes artificiales. 1.3.3 Proceso de la comunicación. 1.4 Traductor y su estructura. 1.4.1 Ensambladores. 1.4.2 Compiladores. 1.4.3 Interpretes. 1.5 Generadores de código para compiladores (compilador de compilador).
  • 3. 1.1 ¿Qué es y qué estudia la programación de sistemas? • Programa: conjunto de instrucciones que ejecuta una computadora para realizar una actividad. • Sistema: conjunto de elementos autónomos que trabajan en armonía para alcanzar un objetivo en común.
  • 4. Tipos de sistemas • Sistemas físicos: equipo, maquinaria, objetos reales, Hardware • Sistemas abstractos: ideas, hipótesis, conceptos, planes, Software • Sistemas abiertos y cerrados dependiendo del ambiente en que se ejecutan.
  • 5. Características de un sistema • Están bien delimitados, por lo tanto se conocen sus fronteras. • Un sistema puede interactuar con su medio ambiente a través de una interfaz de entradas y salidas que recibe el nombre de parámetros del sistema. • Un sistema puede ser componente de otro sistema
  • 6. ¿Cuál es la diferencia entre un técnico y un ingeniero? • A parte del grado académico, el tipo de programas que realizan. • Generalmente un técnico realiza software de aplicaciones (ABCD) o aplicaciones de gestión (nóminas, control de inventarios, etc.) • Un ingeniero es más creativo, más ciencia e investigación; mientras que un licenciado aplica los conocimientos.
  • 7. Clasificación del software • Software de sistemas: software que ayuda (sirve de base) a otro software. • Procesan estructuras de datos complejas • Tienen una fuerte dependencia con el hardware • Utilizan una fuerte gestión de procesos (concurrencia, planificación, etc.)
  • 8. Clasificación del software • Software de aplicación (gestión) • Software de tiempo real • Software empotrado • Software de ingeniería y científico • Software basado en Web • Software de inteligencia artificial
  • 9. Áreas afines a la programación de sistemas • Teoría de la computación (lenguajes y autómatas). • Lenguajes de programación • Arquitecturas de computadoras • Algorítmica • Ingeniería del software
  • 10. 1.2 Herramientas desarrolladas con la teoría de programación de sistemas • El caso más sencillo de programación de sistemas es la construcción de compiladores para ejecutar lenguajes de programación. • Pero no sólo se aplica en lenguajes de programación, sino también se aplica en cualquier programa que se tenga que hacer un análisis o extracción de información
  • 11. Software de sistemas • Editores de texto inteligentes (IDEs con autocompletar, revisores ortográficos, etc) • Impresoras estéticas (impresión de gran calidad sin un editor visual, Latex, etc.) • Intérpretes (Shells de sistemas operativos o de alguna aplicación como un SMBD) • Búsqueda de información que no es tan común en base a patrones, etc.
  • 12. 1.3 Lenguajes • Conjunto de palabras y reglas que permiten comunicar información entre dos entidades. • Lenguaje son las cadenas que pueden generarse a través de una gramática • El lenguaje que entienden las máquinas (lenguaje formal) es muy diferente del lenguaje que entendemos los humanos
  • 13. Repaso de lenguajes y autómatas • Símbolo: representación abstracta de alguna entidad • Alfabeto: conjunto finito de símbolos • Cadena: yuxtaposición de símbolos de un alfabeto que representan a un objeto • Lenguaje: conjunto de cadenas válidas que se pueden formar a través de un alfabeto
  • 14. 1.3.1 Lenguajes naturales • El lenguaje natural es inherentemente ambiguo, por lo que se necesita crear un lenguaje que permita eliminar esas ambigüedades. • Es mejor crear otro lenguaje, denominado de alto nivel que es el encargado de mediar entre la abstracción humana y la abstracción de lenguaje de máquina
  • 15. 1.3.2 Lenguajes artificiales • Los lenguajes artificiales son aquellos que los humanos hemos creado para comunicarnos • Las computadoras sólo saben 0 y 1 • Un lenguaje artificial permite implementar un algoritmo en una computadora para resolver un problema.
  • 16. Lenguajes de bajo nivel • Una abstracción más entendible del lenguaje máquina es el uso de lenguajes ensambladores en donde cada instrucción o mnemónico es traducido a una instrucción máquina. • ADD AX, 5 • LOAD A, 5
  • 17. Lenguajes máquina • El lenguaje máquina es dependiente de cada tipo de arquitectura de computadoras por lo que el código no es fácilmente portable a otras arquitecturas. • Los lenguajes de alto nivel son más portables en lo que respecta al código fuente pudiendo llevarse a otras arquitecturas de computadoras sin mayor problema.
  • 18. Clasificación de Chomsky • Lenguajes sin restricciones (gramática 0) • Lenguajes dependientes del contexto (tipo 1) • Lenguajes independientes del contexto (tipo 2) • Lenguajes regulares (tipo 0 no presentan ambigüedades, lo ideal para representarlas en una computadora)
  • 19. 1.3.3 Proceso de la comunicación • Para entablar una comunicación se necesita que tanto el emisor como el receptor conozcan el mismo lenguaje o en su defecto tengan un traductor. • En este sentido, los humanos escribimos algoritmos en un lenguaje formal que una computadora pueda transformar a un lenguaje entendible por ella.
  • 20. 1.4 Traductor y su estructura • Un traductor es un mediador entre dos entidades: emisoras y receptoras • Los mediadores enmascaran la complejidad y heterogeneidad de los lenguajes • Un traductor convierte un lenguaje de entrada (código fuente) a uno de salida (código objeto)
  • 21. Traductor • La traducción puede ser sencilla (literal) o compleja (revisar el contexto) dependiendo del tipo de lenguaje de entrada y salida. • Traducción español a inglés si se hace de manera literal es una mala traducción, se necesita de al menos otra revisión (pasada) para hacer una buena traducción.
  • 22. Traductor Lenguaje del emisor Lenguaje del receptor Código fuente Código objeto Traductor Errores en el proceso de traducción
  • 23. 1.4.1 Ensambladores • Ensamblador es el traductor que se encarga de convertir instrucciones de bajo nivel a instrucciones de una máquina en general • //Encabezados 00 MOV AX, 58d 4F0188 03 CMP 0 3A00 05 JMP etiqueta 9918 … Etiqueta: 18 MUL AX, FF 4401FF
  • 24. 1.4.2 Compiladores • Es el traductor que se encarga de convertir un lenguaje de alto nivel a código máquina. • La característica de este traductor radica en el hecho de que necesita revisar todo el código fuente para poder realizar la traducción. • Ejemplo: la traducción de un libro, discurso, o artículo técnico o de investigación
  • 25. Compiladores • Ejemplos de compiladores: C, C++, Pascal, etc. • Entre más pasadas se de a un código fuente mayor es la optimización que se puede hacer. El problema radica en el tiempo y en los recursos para hacerlo • Antes de compilar un programa fuente se sigue una etapa de preprocesamiento.
  • 26. Preprocesadores: • Macros (expansión de funciones) • Inclusión de archivos (bibliotecas) • Procesadores racionales • Extensiones al leguaje (inclusión de ensamblador en C)
  • 27. Etapas de un compilador Análisis Análisis Análisis Generación de Optimización Léxico Sintáctico Semántico Código intermedio Manejador de Errores Código fuente Código objeto
  • 28. 1.4.3 Intérpretes • Se ejecutan línea por línea, instrucción por instrucción. • Lenguajes interpretados: PHP, PERL, BASIC • En algunas ocasiones se necesita de una traducción rápida de algunas instrucciones, como en el Shell, instrucciones SQL, etc.
  • 29. ¿Java es compilado o interpretado? • Java al igual que otros lenguajes como C# son lenguajes híbridos. Por una parte se compila un programa fuente para generar código objeto para una máquina virtual (bytecode o MSIL) para posteriormente ejecutarse de manera interpretada en las diferentes máquinas virtuales de cada plataforma. A este compilador se les llama jitter de JIT (Just in Time)
  • 30. 1.5 Generadores de código para compiladores (compilador de compilador) • Los dos primeros lenguajes de alto nivel desarrollado fueron FORTRAN y COBOL. • Desarrollar FORTRAN tardó alrededor de 14 años. Desarrollar nuestro compilador tardará menos de 6 meses • Son herramientas que auxilian algún aspecto del proceso de traducción
  • 31. Herramientas auxiliares para programación de sistemas • Cargadores y editores de enlace • Generadores de analizadores léxico • Generadores de Analizadores sintácticos • Traductores dirigidos por sintaxis • Generadores automáticos de código • Dispositivos para el análisis de flujo de datos