Вы находитесь на странице: 1из 9

Programacin de Sistemas Unidad I

Realiz: MSC. Ma. Eugenia Carren Romero

1.1 Qu es y qu estudia la programacin de sistemas. El software de computadora es un conjunto de instrucciones de programa detalladas que controlan y coordinan los componentes de hardware de una computadora y las operaciones de un sistema informtico. Programa de software. Es un conjunto de instrucciones utilizadas para la resolucin de un problema particular mediante la codificacin de su algoritmo en un Lenguaje de programacin. Existen dos tipos de software que son: Software de sistema Software de aplicacin

Software de Aplicacin. Software que tiene como funcin principal asistir y ayudar a un usuario de computadora para ejecutar tareas especficas. Software de sistema. Es el conjunto generalizado de programas que gestionan los recursos de la computadora, tal como: procesador, memoria, dispositivos perifricos y enlaces de comunicacin. Es decir considera el grupo de programas indispensables para que la mquina funcione. Estos programas son bsicamente el sistema operativo, editores de texto, compiladores, interpretes, ensambladores y lenguajes de utilidad. 1.2 Herramientas desarrolladas con la teora de programacin de sistemas.

Sistema Operativo. Software ms importante del software de sistema, y se encarga de controlar y gestionar los recursos de una computadora. De manera general controla la interaccin del usuario y el hardware de la computadora. Editores de Texto. Un editor de texto es un programa que permite crear y modificar archivos digitales compuestos nicamente por texto sin formato, conocidos comnmente como archivos de texto o texto plano. El programa lee el archivo e interpreta los bytes ledos segn el cdigo de carcteres que usa el editor. Hoy en da es comnmente de 7- 8-bits en ASCII o UTF-8. Por ejemplo, un editor ASCII de 8 bits que lee el nmero binario 0110 0001 (decimal 97 hexadecimal 61) en el archivo lo representar en la pantalla por la figura a, que el usuario reconoce como la letra "a" y ofrecer al usuario las funciones necesarias para cambiar el nmero binario en el archivo. Los editores de texto son incluidos en el sistema operativo o en algn paquete de software instalado y se usan cuando se deben crear o modificar archivos de texto como archivos de configuracin, scripts o el cdigo fuente de algn programa.

Programacin de Sistemas Unidad I

Realiz: MSC. Ma. Eugenia Carren Romero

El archivo creado por un editor de texto incluye por convencin en DOS y Microsoft Windows la extensin .txt, aunque pueda ser cambiada a cualquier otra con posterioridad. Tanto Unix como Linux dan al usuario total libertad en la denominacin de sus archivos.

Ejemplos Emacs, otro editor muy comn en Unix. Vi, editor muy comn en Unix. Kate, un moderno editor para Unix Bloc de notas, editor integrado en Windows, tambin conocido como Notepad (en ingls) Notepad++, editor de cdigo fuente para Microsoft Windows. jEdit, editor popular multiplataforma.

Traductores. Son programas que traducen los cdigos escritos en un lenguaje de alto nivel a cdigo mquina (0s y 1s). Se dividen en Compiladores e interpretes. Interprete. Es un traductor que toma un lenguaje fuente, lo traduce y, a continuacin, lo ejecuta. (traduccin y ejecucin lnea por lnea).Su traduccin consiste en traducir la primera sentencia del programa, se detiene la accin y se ejecuta la sentencia, etc. hasta terminar el programa. Compilador. Es un programa que traduce los programas fuente escritos en un lenguaje de alto nivel a lenguaje mquina. La traduccin del programa completo se realiza en una sola operacin denominada compilacin, es decir, se traducen todas las instrucciones del programa en un solo bloque. Ensambladores. Convierten los programas escritos en lenguajes nemotcnicos a lenguaje mquina que son compatibles y legibles por la mquina. 2

Programacin de Sistemas Unidad I

Realiz: MSC. Ma. Eugenia Carren Romero

1.3 lenguajes de Programacin

Los lenguajes de programacin son herramientas que nos permiten crear programas de software. Entre ellos tenemos Delphi, Visual Basic, Pascal, Java, C#, etc. Los lenguajes de programacin facilitan la tarea de programacin, ya que disponen de formas adecuadas que permiten a las personas leer y escribir programas. Existen estrategias que permiten ejecutar en una computadora un programa realizado en un lenguaje de programacin. Los procesadores del lenguaje son los programas que permiten el tratamiento de la informacin en forma de texto. Hay lenguajes de programacin que utilizan para su traduccin a lenguaje maquina compiladores, interpretes o ensambladores. El ordenador slo entiende un lenguaje conocido como cdigo binario o cdigo mquina, consistente en ceros y unos. Los lenguajes ms prximos a la arquitectura hardware se denominan lenguajes de bajo nivel y los que se encuentran ms cercanos a los programadores y usuarios se denominan lenguajes de alto nivel.

Lenguajes de bajo nivel Son lenguajes totalmente dependientes de la mquina, es decir que el programa que se realiza con este tipo de lenguajes no se pueden migrar o utilizar en otras maquinas. Al estar prcticamente diseados a medida del hardware, aprovechan al mximo las caractersticas del mismo.

El lenguaje ensamblador es un derivado del lenguaje maquina y est formado por abreviaturas de letras y nmeros llamadas mnemotcnicos. Con la aparicin de este lenguaje se crearon los programas traductores para poder pasar los programas escritos en lenguaje ensamblador a lenguaje mquina. Como ventaja con respecto al cdigo mquina es que los cdigos fuentes eran ms cortos y los programas creados ocupaban menos memoria. Las desventajas de este lenguaje siguen siendo prcticamente las mismas que las del lenguaje ensamblador, 3

Programacin de Sistemas Unidad I

Realiz: MSC. Ma. Eugenia Carren Romero

aadiendo la dificultad de tener que aprender un nuevo lenguaje difcil de probar y mantener. Lenguajes de alto nivel Son aquellos que se encuentran ms cercanos al lenguaje natural que al lenguaje mquina. Estn dirigidos a solucionar problemas mediante el uso de EDD's.

Nota: EDD's son las abreviaturas de Estructuras Dinmicas de Datos, algo muy utilizado en todos los lenguajes de programacin. Son estructuras que pueden cambiar de tamao durante la ejecucin del programa. Nos permiten crear estructuras de datos que se adapten a las necesidades reales de un programa.

Se tratan de lenguajes independientes de la arquitectura de la computadora; por lo que, en principio, un programa escrito en un lenguaje de alto nivel, lo puedes migrar de una mquina a otra sin ningn tipo de problema. Estos lenguajes permiten al programador olvidarse por completo del funcionamiento interno de la maquina/s para la que estn diseando el programa. Tan solo necesitan un traductor que entiendan el cdigo fuente como las caractersticas de la maquina. Suelen usar tipos de datos para la programacin y hay lenguajes de propsito general (cualquier tipo de aplicacin) y de propsito especifico (como FORTRAN para trabajos cientficos).

Lenguajes de Medio nivel Se trata de un trmino no aceptado por todos, pero q seguramente habrs odo. Estos lenguajes se encuentran en un punto medio entre los dos anteriores. Dentro de estos lenguajes podra situarse C ya que permite acceder a los registros del sistema, trabajar con direcciones de memoria, todas ellas caractersticas de lenguajes de bajo nivel y a la vez realizar operaciones de alto nivel.

Programacin de Sistemas Unidad I

Realiz: MSC. Ma. Eugenia Carren Romero

1.4 Traductor y su estructura. La traduccin es un proceso en el que se transforma un programa fuente (LP) a programa objeto (normalmente cdigo mquina) mquina). La estructura de un compilador se da a continuacin:

Conceptualmente un compilador opera en fases. Cada una de las cuales transforma el programa fuente de una representacin en otra. En la prctica se pueden agrupar fases y agr las representaciones intermedias entres las fases agrupadas no necesitan ser construidas explcitamente.

Programacin de Sistemas Unidad I

Realiz: MSC. Ma. Eugenia Carren Romero

Las tres primeras fases, que forman la mayor parte de la porcin de anlisis de un compilador. Otras dos actividades, la administracin de la tabla se smbolos y el manejo de errores, se muestran en interaccin con las seis fases de anlisis lxico, anlisis sintctico, anlisis semntico, generacin de cdigo intermedio, optimacin de cdigo y generacin de cdigo. De modo informal, tambin se llamarn "fases" al administrador de la tabla de smbolos y al manejador de errores. 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 programa 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).

Programacin de Sistemas Unidad I

Realiz: MSC. Ma. Eugenia Carren Romero

1.5 Generadores de cdigo para compiladores (compilador de compilador) METACOMPILADOR. Es sinnimo de compilador de compiladores y se refiere a un 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. Actualmente no existen metacompiladores completos, pero si parciales, en los que se acepta como entrada una grmatica de un lenguaje y se genera un autmata que reconoce cualquier sentencia del lenguaje. A este autmata podemos aadirle cdigo para completar el resto del compilador. Ejemplos de Metacompiladores son: Lex, Yacc, Flex, Bison, JavaCC, Jlex, Cup, MEDISE, etc. Los Metacompiladores se suelen dividir entre los que pueden trabajar con gramticas libres de contexto y los que trabajan con gramticas regulares. Los primeros se dedican a reconocer la sintaxis del lenguaje y los segundos trocean los ficheros fuente y lo dividen en palabras. El desarrollo de los metacompiladores se encuentra con la dificultad de unir la generacin de cdigo con la parte de anlisis. Lo que si se han desarrollado son generados de analizadores lxicos y sintcticos. Ejemplo de ellos son: YACC. Analizadores sintcticos desarrollados para generador de UNIX. LEX. Generador de analizadores lxicos.

El inconveniente principal que tienen es la poca eficiencia de los analizadores generados.

Diseo de Metacompiladores Las herramientas generadoras automticas de cdigo para un compilador trabajan basadas en un conjunto de reglas; estas reglas definen la traduccin de las instrucciones del lenguaje intermedio al lenguaje de mquina. Para la generacin de cdigo, se busca en las reglas establecidas, la proposicin que coincida con la entrada actual; donde la entrada actual proviene de un rbol. Un ejemplo de esto sera: El compilador recibe una entrada de caracteres, por lo general escrita por el programador; El compilador realiza los anlisis: lxico, sintctico y semntico, para generar seguidamente el cdigo intermedio. El cdigo intermedio se genera con principios de bsqueda de patrones y aplicacin de reglas. Se hace la optimizacin del cdigo intermedio; seguidamente se realiza la generacin de cdigo objeto en lenguaje de mquina.

Programacin de Sistemas Unidad I

Realiz: MSC. Ma. Eugenia Carren Romero

Generacin de Cdigo La generacin de cdigo es la ltima fase del compilador y se encarga de convertir un programa sintctica y semnticamente correcto en una serie de instrucciones para que puedan ser interpretadas por una mquina. Como se muestra en la Figura la entrada del generador de cdigo es un rbol sintctico con atributos, donde la salida es un lenguaje objeto, que consiga ser desarrollado por una mquina. rbol sintctico con atributos Generador de cdigo Lenguaje Objeto

La mquina destino puede ser un microprocesador, una mquina virtual, un lenguaje intermedio, etc. La generacin de cdigo es aplicada para crear programas de forma automtica evitando que los programadores tengan que escribir cdigo. Ejemplo:

El ltimo lenguaje de programacin de amplia aceptacin que se ha diseado, el lenguaje Java, establece que el compilador no genera cdigo para una mquina determinada sino para una virtual, la Java Virtual Machine (JVM), que posteriormente ser ejecutado por un intrprete, normalmente incluido en un navegador de Internet. El gran objetivo de esta exigencia es conseguir la mxima portabilidad de los programas escritos y compilados en Java, pues es nicamente la segunda fase del proceso la que depende de la mquina concreta en la que se ejecuta el intrprete.

Compiladores y generadores de cdigo La generacin de cdigo data desde la existencia de los primeros compiladores. Hasta la aparicin de los primeros generadores de cdigo comerciales u orientados a "usuarios finales", la generacin de cdigo era exclusividad de programas compiladores especializados. En tiempos ms recientes la generacin de cdigo, gracias al avance de la ingeniera del software, se ha llevado a un nivel diferente; donde se encuentran programas generadores de pantallas, reportes y consultas, estas son herramientas de gran utilidad; pero se debe, en la mayora de los casos a pagar una gran cantidad de dinero por ellos. La ingeniera del software evoluciona cada da; esta evolucin conlleva a la creacin de mtodos mucho ms cmodos, precisos, confiables y rpidos para la creacin de software. Para la creacin de generadores de cdigo se deben considerar los siguientes aspectos: La arquitectura de software para la cual se desarrollar el generador Las caractersticas especificas del lenguaje de programacin para el cual se har 8

Programacin de Sistemas Unidad I

Realiz: MSC. Ma. Eugenia Carren Romero

el generador. El lenguaje con el que se desarrollar el propio generador

Responder las interrogantes: 1. La generacin de cdigo se realizar a partir de modelos como UML? 2. La generacin de cdigo se har a partir de las tablas de una base de datos?, 3. Se realizar un generador de cdigo que su resultado sean fragmentos de cdigo que son de uso ms frecuente en el software? 4. Se crear un generador genrico que "genere" cdigo para diferentes lenguajes.

En sntesis para crear un generador de cdigo se deben hacer muchas de las tareas que realizan los compiladores; algunas de estas son: Bsqueda de patrones, Escritura de cdigo, Anlisis sintctico, el anlisis lxico Optimizacin de cdigo.

Estas tareas las realiza el desarrollador una vez para una arquitectura especfica.

Вам также может понравиться