Sunteți pe pagina 1din 14

ITSSMT

PROGRAMACIN DE SISTEMAS

UNIDAD I y II.

INTRODUCCIN A LA PROGRAMACIN DE

SISTEMAS.

PROFESORA: YESENIA PREZ REYES

ALUMNA: FANNY L. SNCHEZ DE LA CRUZ

CICLO: AGOSTO-DICIEMBRE 2011

INTRODUCCIN.
En la materia de Programacin de Sistemas, estudiaremos las tcnicas,
procesos y mtodos para ser capaces de crear sistemas de programacin,
como compiladores por ejemplo.
En la primera unidad estudiamos los conceptos bsicos de la Programacin de
Sistemas.
En la segunda unidad estudiamos el proceso a seguir para desarrollar un
Sistema de programas.
TEMARIO
1 Introduccin a la programacin de sistemas
1.1 Qu es y qu estudia la programacin de sistemas?
1.2 Herramientas desarrolladas con la teora de programacin de sistemas.
1.3 Lenguajes.
1.3.1 Lenguajes naturales.
1.3.2 Lenguajes artificiales.
1.3.3 Proceso de la comunicacin.
1.4 Traductor y su estructura.
1.4.1 Ensambladores.
1.4.2 Compiladores.
1.4.3 Interpretes.
1.5 Generadores de cdigo para compiladores (compilador de compilador).
2 Introduccin al diseo de los lenguajes de programacin
2.1 Visin del problema.
2.2 Consideraciones Premilinares.
2.3 Objetivos y filosofas del diseo de los lenguajes de programacin.
2.4 Diseo detallado.
2.5 Caso de estudio.
3 Anlisis Lxico.
3.1 Introduccin a los Autmatas finitos y expresiones regulares.
3.2 Analizador de lxico.
3.3 Manejo de localidades temporales de memoria (buffers).
3.4 Creacin de tablas de smbolos.
3.5 Manejo de errores lxicos.
3.6 Generadores de cdigo lxico: Lex y Flex.
4 Anlisis sintctico.
4.1 Introduccin a las Gramticas libres de contexto y rboles de derivacin.
4.2 Diagramas de sintaxis.
4.3 Precedencia de operadores.
4.4 Analizador sintctico.
4.4.1 Analizador descendente (LL).
4.4.2 Analizador ascendente (LR, LALR).
4.5 Administracin de tablas de smbolos.
4.6 Manejo de errores sintcticos y su
recuperacin.
4.7 Generadores de cdigo para analizadores sintcticos: Yacc, Bison
5 Anlisis semntico 5.1 Analizador semntico
5.2 Verificacin de tipos en expresiones.
5.3 Conversin de tipos.
5.4 Acciones agregadas en un analizador sintctico descendente (top-down).
5.5 Pila semntica en un analizador sintctico ascendente (bottom-up).
5.6 Administracin de la tabla de smbolos.
5.7 Manejo de errores semnticos.
6 Generacin de cdigo intermedio.
6.1 Lenguajes intermedios.
6.2 Notaciones.
6.2.1 Infija.
6.2.2 Postfija.
6.2.3 Prefija.
6.3 Representacin de cdigo intermedio.
6.3.1 Notacin Polaca.
6.3.2 Cdigo P.
6.3.3 Triplos.
6.3.4 Cudruplos.
6.4 Esquemas de generacin.
6.4.1 Expresiones.
6.4.2 Declaracin de variables, constantes
6.4.3 Estatuto de asignacin.
6.4.4 Estatuto condicional.
6.4.5 Estatuto de ciclos
6.4.6 Arreglos.
6.4.7 Funciones.
7 Optimizacin.
7.1 Tipos de optimizacin.
7.1.1 Locales.
7.1.2 Bucles.
7.1.3 Globales.
7.1.4 De mirilla.
7.2 Costos.
7.2.1 Costo de ejecucin.
7.2.2 Criterios para mejorar el cdigo.
7.2.3 Herramientas para el anlisis del flujo de datos.
8 Generacin de cdigo objeto.
8.1 Lenguaje mquina.
8.1.1 Caractersticas.
8.1.2 Direccionamiento.
8.2 Lenguaje ensamblador.
8.2.1 Caractersticas.
8.2.2 Almacenamiento.
8.3 Registros.
8.3.1 Distribucin.
8.3.2 Asignacin.
8.4 Administracin de memoria.
UNIDAD 1.
Introduccin a la programacin de sistemas
1.1 Qu es y qu estudia la programacin de sistemas?
1.2 Herramientas desarrolladas con la teora de programacin de sistemas.
1.3 Lenguajes.
1.3.1 Lenguajes naturales.
1.3.2 Lenguajes artificiales.
1.3.3 Proceso de la comunicacin.
1.4 Traductor y su estructura.
1.4.1 Ensambladores.
1.4.2 Compiladores.
1.4.3 Interpretes.
1.5 Generadores de cdigo para compiladores (compilador de compilador).
1.1 Qu es y qu estudia la Programacin de Sistemas?
La programacin de sistemas es un conjunto de herramientas que colaboran
para lograr un fin; desarrollar software base (programas que interactan con el
Sistema Operativo) stos pueden ser: Compiladores, ensambladores,
cargadores, etc.
Estudia la teora de maquinas y su aplicacin en el diseo de sistemas digitales
y de arquitectura de computadoras, sus reas especficas: sistemas digitales
para arquitecturas paralelas y control de procesos.
1.2 Herramientas desarrolladas con la programacin de sistemas.

Las herramientas de programacin, son aquellas que permiten realizar


aplicativos, programas, rutinas, utilitarios y sistemas para que la parte fsica de
la computadora, funcione y pueda producir resultados.

Actualmente existen mltiples herramientas de programacin en el mercado,


tanto para analistas expertos como para analistas inexpertos.

Las herramientas de programacin ms comunes del mercado, cuentan hoy


da con programas de depuracin o debugger, que son utilitarios que nos
permiten detectar los posibles errores en tiempo de ejecucin o corrida de
rutinas y programas.

Muchas herramientas de software que manipulan programas fuente realizan


primero algn tipo de anlisis. Algunos ejemplos de tales herramientas son:
Editores de estructuras
Impresoras estticas
Verificadores estticos
Intrpretes
Compiladores

1.3 Lenguajes.
El lenguaje es el conjunto de medios que permiten al hombre expresar sus
pensamientos, sentimientos y vivencias. Tambin se define como el conjunto
de sistemas de comunicacin constituido por diversas manifestaciones: dibujos,
gestos, sonidos, movimientos procesos culturales (mitos, leyenda, arte,
monumentos), etc. Algunos autores lo reducen a la funcin biolgica de la
relacin, y por eso hablan de lenguaje de los animales. El lenguaje tiene tres
separaciones: forma, contenido y relaciones.
Un lenguaje es un conjunto de palabras y reglas que permiten comunicar
informacin entre dos entidades. Lenguaje son las cadenas que pueden
generarse a travs de una gramtica.
Considerando el grado de artificialidad y convencionalidad que interviene en la
construccin de smbolos o signos del lenguaje, puede ser artificial o natural.
1.3.1 Lenguaje natural.

El Lenguaje Natural es el medio que utilizamos de manera cotidiana para


establecer nuestra comunicacin con las dems personas

Este tipo de lenguaje es el que nos permite el designar las cosas actuales y
razonar a cerca de ellas, fue desarrollado y organizado a partir de la
experiencia humana y puede ser utilizado para analizar situaciones altamente
complejas y razonar muy sutilmente. La riqueza de sus componentes
semnticos da a los lenguajes naturales su gran poder expresivo y
su valor como una herramienta para razonamiento sutil. Por otro lado la sintaxis
de un Lenguaje Natural puede ser modelada fcilmente por un lenguaje formal,
similar a los utilizados en las matemticas y la lgica. Otra propiedad de los
lenguajes naturales es la polisemntica, es decir, la posibilidad de que una
palabra en una oracin tenga diversos significados.

Los lenguajes naturales se caracterizan por las siguientes propiedades:

1. Desarrollados por enriquecimiento progresivo antes de cualquier intento


de formacin de una teora.
2. La importancia de su carcter expresivo debido grandemente a la riqueza
del componente semntico (polisemntica).
3. Dificultad o imposibilidad de una formalizacin completa.
1.3.2 Lenguajes artificiales

El lenguaje artificial, en oposicin al natural, tiene como finalidad evitar


justamente- los inconvenientes de ambigedad y vaguedad de los lenguajes
naturales u ordinarios y, por ello, presenta un grado de artificialidad y
convencionalidad mucho mayor por lo que se refiere a la construccin de
smbolos y al significado que se les asigna. Smbolos y significados no
pertenecen a ninguna comunidad natural de hablantes, sino a grupos de
hablantes relacionados por objetivos cientficos o tcnicos. El
lenguaje artificialmente construido se divide en tcnico y formal.

Los lenguajes artificiales son aquellos que los humanos hemos creado para
comunicarnos

Como ejemplo de Lenguajes artificiales estn los lenguajes de programacin, el


lenguaje matemtico y todo lenguaje en proceso de universalizacin.
1.3.3 Proceso de Comunicacin.
La comunicacin es un proceso mediante el cual un sistema transmite
informacin a otro sistema que es capaz de recibirla. Segn el modelo de
comunicacin para ser posible deben existir:
Emisor, persona que emite el mensaje o informacin.
Receptor, persona o personas que reciben el mensaje.
Mensaje, informacin que transmite lo que se quiere decir.
Canal, medio o va utilizado para transmitir el mensaje.
Cdigo, conjunto de signos y reglas necesarios para la elaboracin del
mensaje tanto el emisor como el receptor han de conocer estas reglas
de codificacin y descodificacin

1.4 Traductor y su estructura.

Traductor: En un sentido orientado hacia la computacin, un traductor, de


manera general, es un software que toma como entrada un programa escrito
en un cdigo llamado fuente y genera como salida otro programa en un cdigo
llamado objeto.

Algunos ejemplos de traductores son los compiladores (toma como entrada


cdigo en alto nivel y genera como salida cdigo en bajo nivel), los interpretes
(toma como entrada cdigo en alto nivel y genera como salida un cdigo
intermedio), los preprocesadores (toma como entrada cdigo en alto nivel y
genera como salida cdigo en alto nivel) y el ensamblador (toma como entrada
cdigo en ensamblador y genera como salida cdigo en bajo nivel).

Su estructura podra ser expresada de la siguiente manera:

En los traductores entran los ensambladores, interpretes, compiladores y


compiladores de compiladores.
1.4.1 Ensambladores.

Un ensamblador es un tipo de programa informtico que se encarga de traducir


un fichero fuente escrito en un lenguaje ensamblador, a un fichero objeto que
contiene cdigo mquina, ejecutable directamente por la mquina para la que
se ha generado. El propsito para el que se crearon este tipo de aplicaciones
es la de facilitar la escritura de programas, ya que escribir directamente en
cdigo binario, que es el nico cdigo entendible por la computadora, es en la
prctica imposible. La evolucin de los lenguajes de programacin a partir del
lenguaje ensamblador origin tambin la evolucin de este programa
ensamblador hacia lo que se conoce como programa compilador.

Funcionamiento

El programa lee el fichero escrito en lenguaje ensamblador y sustituye cada


uno de los cdigos mnemotcnicos que aparecen por su cdigo de operacin
correspondiente en sistema binario.

Podemos distinguir entre tres tipos de ensambladores:

Ensambladores bsicos. Son de muy bajo nivel, y su tarea consiste


bsicamente en ofrecer nombres simblicos a las distintas instrucciones,
parmetros y cosas tales como los modos de direccionamiento. Adems,
reconoce una serie de directivas (o meta instrucciones) que indican ciertos
parmetros de funcionamiento del ensamblador.
Ensambladores modulares, o macro ensambladores. Descendientes de los
ensambladores bsicos, fueron muy populares en las dcadas de los 50 y
los 60, antes de la generalizacin de los lenguajes de alto nivel. Hacen todo
lo que puede hacer un ensamblador, y adems proporcionan una serie de
directivas para definir e invocar macroinstrucciones (o
simplemente, macros).
Ensambladores modulares 32-bits o de alto nivel. Son ensambladores que
aparecieron como respuesta a una nueva arquitectura de procesadoresde
32 bits, muchos de ellos teniendo compatibilidad hacia atrs pudiendo
trabajar con programas con estructuras de 16 bits. Adems de realizar la
misma tarea que los anteriores, permitiendo tambin el uso de macros,
permiten utilizar estructuras de programacin ms complejas propias de los
lenguajes de alto nivel.
1.4.2 Intrpretes

Se trata de traductores-ejecutores ya que con cada instruccin realizan un


proceso triple de lectura-traduccin-ejecucin. Son relativamente lentos, pero
muy buenos para la depuracin de programas. La interpretacin es una de las
formas de ejecucin de los programas de computadoras, la otra es la
compilacin. El trmino "intrprete" puede hacer referencia al programa que
ejecuta el cdigo fuente que acaba de ser traducido a una forma intermedia, o
puede hacer referencia al programa que lleva a cabo tanto la traduccin como
la ejecucin.

1.4.3Compiladores

Es el tipo de traductor ms conocido. Se trata de un programa que traduce


cdigo fuente escrito en un lenguaje de alto nivel (Pascal) en cdigo mquina
(no siempre). Son ms rpidos que los intrpretes pero presentan mayor
dificultad a la hora de detectar errores.

Partes de un compilador

La construccin de un compilador involucra la divisin del proceso en una serie


de fases que variar con su complejidad. Generalmente estas fases se agrupan
en dos tareas: el anlisis del programa fuente y la sntesis del programa objeto.

Anlisis: Se trata de la comprobacin de la correccin del programa fuente, e


incluye las fases correspondientes al Anlisis Lxico (que consiste en la
descomposicin del programa fuente en componentes lxicos), Anlisis
Sintctico (agrupacin de los componentes lxicos en frases gramaticales ) y
Anlisis Semntico (comprobacin de la validez semntica de las sentencias
aceptadas en la fase de Anlisis Sintctico).

Sntesis: Su objetivo es la generacin de la salida expresada en el lenguaje


objeto y suele estar formado por una o varias combinaciones de fases de
Generacin de Cdigo (normalmente se trata de cdigo intermedio o de cdigo
objeto) y de Optimizacin de Cdigo (en las que se busca obtener un cdigo lo
ms eficiente posible).

Esta divisin permite que el mismo Back End se utilice para generar el cdigo
mquina de varios lenguajes de programacin distintos y que el mismoFront
End que sirve para analizar el cdigo fuente de un lenguaje de
programacin concreto sirva para generar cdigo mquina en varias
plataformas distintas. Suele incluir la generacin y optimizacin del cdigo
dependiente de la mquina.

Figura de la estructura de un compilador.

1.5 Compiladores de compiladores.

Se han creado algunas herramientas generales para el diseo automtico de


componentes especficos de compilador. Estas herramientas utilizan lenguajes
especializados para especificar e implantar el componente, y pueden
utilizar algoritmos bastantes complejos. Las herramientas ms efectivas son las
que ocultan los detalles del algoritmo de generacin y producen componentes
que se pueden integrar con facilidad al resto del compilador. La siguiente es
una lista de algunas herramientas tiles para la construccin de compiladores:

1.- Generadores de analizadores sintcticos. Estos generadores producen


analizadores sintcticos, normalmente a partir de una entrada fundamentada
en una gramtica independiente del contexto. En los primeros compiladores, el
anlisis sintctico consuma no slo gran parte del tiempo, de ejecucin del
compilador, sino gran parte del esfuerzo intelectual de escribirlo. Esta fase se
considera ahora una de las ms fciles de aplicar. Muchos de los generadores
de analizadores sintcticos utilizan poderosos algoritmos de anlisis sintctico,
y son demasiado complejos para realizarlos manualmente.

2.- Generadores de analizadores lxicos. Estas herramientas generan


automticamente analizadores lxicos, por lo general a partir de una
especificacin basada en expresiones regulares. La organizacin bsica del
analizador lxico resultante es en realidad un autmata finito.

3.- Dispositivos de traduccin dirigida por la sintaxis. Estos producen grupos de


rutinas que recorren el rbol de anlisis sintctico. La idea bsica es que se
asocian una o ms "traducciones" con cada nodo del rbol de anlisis
sintctico, y cada traduccin se define partiendo de traducciones en sus nodos
vecinos en el rbol.

4.- Generadores automticos de cdigo. Tales herramientas toman un conjunto


de reglas que definen la traduccin de cada operacin del lenguaje intermedio
al lenguaje de mquina para la mquina objeto. Las reglas deben incluir
suficiente detalle para poder manejar los distintos mtodos de acceso posibles
a los datos; por ejemplo, las variables pueden estar en registros, en una
posicin fija (esttica) de memoria o pueden tener asignada una posicin en
una pila. La tcnica fundamental es la de "concordancia de plantillas". Las
proposiciones de cdigo intermedio se reemplazan por "plantillas" que
representan secuencias de instrucciones de mquina, de modo que las
suposiciones sobre el almacenamiento de las variables concuerden de plantilla
a plantilla. Como suele haber muchas opciones en relacin con la ubicacin de
las variables (por ejemplo, en uno o varios registros o en memoria), hay
muchas formas posibles de "cubrir" el cdigo intermedio con un conjunto dado
de plantillas, y es necesario seleccionar una buena cobertura sin una explosin
combinatoria en el tiempo de ejecucin del compilador.

5.- Dispositivos para anlisis de flujo de datos. Mucha de la informacin


necesaria para hacer una buena optimacin de cdigo implica hacer un
"anlisis de flujo de datos", que consiste en la recoleccin de informacin sobre
la forma en que se transmiten los valores de una parte de un programa a cada
una de las otras partes. Las distintas tareas de esta naturaleza se pueden
efectuar esencialmente con la misma rutina, en la que el usuario proporciona
los detalles relativos a la relacin que hay entre las proposiciones en cdigo
intermedio y a la informacin que se est recolectando.

Mapa conceptual de exposicin.

UNIDAD 2.

Introduccin al diseo de los lenguajes de programacin


2.1 Visin del problema.
2.2 Consideraciones Preliminares.
2.3 Objetivos y filosofas del diseo de los
lenguajes de programacin.
2.4 Diseo detallado.
2.5 Caso de estudio.
CUESTIONARIO DE EXPOSICIN 3.
Menciona el objetivo principal de un lenguaje.
Expresar ideas y/o conceptos.
Menciona las derivadas del objetivo de un lenguaje.
Portabilidad, usabilidad, comunicacin humana e independencia de la mquina.
En qu consiste el objetivo de la deteccin de errores?
Permite la comunicacin usuario/mquina.
Menciona cinco objetivos de Java.
Proporcionar POO, soporte de trabajo en red, detectar errores, ser
multiplataforma.
En qu consiste la independencia de multiplataforma?
En que el lenguaje puede trabajar en distintos equipos sin importar el
procesador o Sistema Operativo.
CUESTIONARIO DE EXPOSICISIN 4.
Qu es el diseo detallado?
Es un proceso iterativo a travs del cual se traducen los requisitos a una
representacin de software.
Para qu sirve un diseo detallado?
Para disear algoritmos y representaciones de datos en un nivel ms alto de
abstraccin y notacin.
Cul es la diferencia entre un BN y un AN?
Un bajo nivel es cercano al lenguaje maquina y el alto nivel tiene palabras
cercanas al lenguaje humano.
Menciona cada una de las etapas del modelo en cascada.
Requerimientos del sistema, requerimientos de software, diseo preliminar y
detallado, codificacin y depuracin, test de prueba y depuracin.
Qu es graficacin y diseo?
Es la representacin grfica de nuestro diseo, en la que por medio de
imgenes se muestran etapas a seguir.
EXPOSICISIN 2.

Equipo 2. Introduccin al diseo de los lenguajes de programacin.

S-ar putea să vă placă și