Unidad 1 Introducción a la programación de sistemas

download Unidad 1 Introducción a la programación de sistemas

of 21

Transcript of Unidad 1 Introducción a la programación de sistemas

Programacin de Sistemas

INSTITUTO TECNOLGICO SUPERIOR DE JESS CARRANZAIng. En Sistemas Computacionales Programacin de Sistemas Ing. Unidad I Investigacion Carlos Reyes Lopez 502-A 09/09/2011

Jesus Carranza Veracruz.

Unidad I

Pgina 1

Programacin de Sistemas

ndiceIntroduccin -------------------------------------------------------------------------------------- 3 Unidad 1 Introduccin a la programacin de sistemas -------------------------------- 4 1.1 Definicin Programacin de Sistemas ------------------------------------------------ 4 1.2 Herramientas Desarrolladas con Teora de Programacin de Sistemas -------------------------------------------------------------- 6 1.3 Lenguajes ------------------------------------------------------------------------------------ 8 1.3.1 Lenguajes Naturales -------------------------------------------------------------------- 8 1.3.2 Lenguajes Artificiales ------------------------------------------------------------------ -9 1.3.3 Proceso de la Comunicacin -------------------------------------------------------- -9 1.4 Traductor y su Estructura --------------------------------------------------------------- 11 1.4.1 Lenguajes Ensambladores -----------------------------------------------------------14 1.4.2 Lenguajes Compiladores ------------------------------------------------------------- 16 1.4.3 Lenguajes Intrpretes ------------------------------------------------------------------18 1.5 Lenguajes Generadores de cdigo para compiladores (Compilador de Compilador) ---------------------------------------- 19

Unidad I

Pgina 2

Programacin de Sistemas

IntroduccinA continuacin daremos a conocer los temas de la unidad I de la materia de programacin de sistemas, la cual es pura teora, daremos a conocer la definicin de programacin de sistemas se dice que es un conjunto de componentes que interaccionan entre s para lograr un objetivo comn. De igual manera hablaremos sobre las herramientas desarrolladas con teora de programacin de sistemas. Mencionaremos tambin los tipos de lenguajes utilizados en la programacin de sistemas y sus respectivos conceptos de cada uno.

Unidad I

Pgina 3

Programacin de Sistemas

Unidad 1 Introduccin a la programacin de sistemas1.1 Definicin Programacin de SistemasQUE ES? Un sistema es un conjunto de componentes que interaccionan entre s para lograr un objetivo comn. Las personas se comunican con el lenguaje, que es un sistema muy d e s a r r o l l a d o formado por palabras y smbolos que tienen s i g n i f i c a d o p a r a e l q u e habla y para quienes lo escuchan, lo mismo es para las computadoras las cuales tienen sistemas y se comunican por medio de computadoras. La programacin es el proceso de convertir las especificaciones a grandes rasgos delos sistemas en instrucciones de mquina que produzcan los resultados deseados.

QUE ESTUDIA? El trabajo de un programador de sistemas es seleccionar, modificar y mantener el complejo software del sistema operativo. Por lo tanto, los programadores de sistemas desempean una funcin de apoyo al mantener el ambiente del software del sistema operativo en el que trabajan los programadores de aplicaciones y los operadores del a sUnidad I Pgina 4

Programacin de Sistemascomputadoras. Tambin participan en las decisiones relativas a reducciones o ampliaciones de hardware y/o software. P r o g r a m a c i n d e S i s t e m a s C o n c e p t o s y Aplicaciones Se entiende por programacin de sistemas el conjunto de programas necesario para que una computadora de una imagen coherente y monoltica ante sus u s u a r i o s . E s u n r e a e s p e c i a l i z a d a d e n t r o de las ciencias de la computacin. As, mediante la programacin de sistemas, no solo se manejan las c o m p u t a d o r a s p o r medio del lenguaje maquina (0 y 1) sino por otros sistemas operativos, sin lo cual sera muy difcil la interaccin con la mquina. El estudio de la programacin de sistemas. En esta rea se estudia la teora de mquinas y su aplicacin en el diseo de sistemas digitales y de arquitectura de computadoras. reas especficas: Sistemas digitales para arquitecturas paralelas y control de procesos y sistemas reconfigurables. Inteligencia artificial aplicada a trabajo cooperativo En las aplicaciones cooperativas realizadas en el entorno Web, es viable hacer uso de las herramientas de inteligencia artificial. Se estn diseando y construyendo herramientas para elaborar un sistema s i n c o s t u r a q u e o p e r e e n Web con la finalidad de proporcionar a un grupo de coautores el soporte necesario para producir conjunta y simultneamente un mismo documento. La plataforma, denominada PINAS, es un sistema de edicin cooperativa(Alliance Web) y un sistema de notaciones sobre documentos complejos (COARSY) los cuales podrn permitir a coautores o revisores distribuidos en diferentes sitios del mundo, compartir y anotar observaciones sobre documentos complejos tales como captulos de libro, artculos, reportes, expedientes mdicos, etc. Sistemas para arquitecturas paralelas y distribuidas Diseo de sistemas operativos para arquitecturas paralelas y sistemas distribuidos, particularmente en lo que se refiere a manejo de memoria y calendarizacin de procesos. Redes y protocolos, p r o g r a m a c i n d i s t r i b u i d a , d i s e o y e v a l u a c i n d e middleware enfocados a aplicaciones de minera de datos y multimedia. Diseo de a l g o r i t m o s p a r a l e l o s y d i s t r i b u i d o s . H e r r a m i e n t a s p a r a p r o g r a m a c i n p a r a l e l a y distribuida. Sistemas de tiempo real Relacionados con diversos aspectos de la planificacin de los sistemas de tiempo real e n t r e l o s c u a l e s s e e n c u e n t r a n l o s s i g u i e n t e s : p l a n i f i c a c i n t o l e r a n t e a f a l l a s e n sistemas de

Unidad I

Pgina 5

Programacin de Sistemastiempo real, sobrecarga, planificacin de tiempo real en situaciones de

1.2 Herramientas Desarrolladas Con Teora De Programacin De SistemasLas herramientas de programacin, son aquellas que permiten realizar aplicativos, programas, rutinas, utilitarios y sistemas para que la parte fsica del computador u ordenador, funcione y pueda producir resultados. Hoy da 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 de bugger, que son utilitarios que nos permiten detectarlos 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: 1. Editores de estructuras: Un editor de estructuras toma como entrada una secuencia de rdenes para construir un programa fuente. El editor de estructuras no slo realiza las funciones de creacin y modificacin de textos de un editor de textos ordinario, sino que tambin analiza el texto del programa, imponiendo al programa fuente una estructura jerrquica apropiada. De esa manera, el editor de estructuras puede realizar tareas adicionales tiles para la preparacin de programas. Por ejemplo, puede comprobar si la entrada est formada correctamente, puede proporcionar palabras clave de manera automtica (por ejemplo, cuando el usuario escribe while, el editor proporciona el correspondiente do y le recuerda al usuario que entre las dos palabras debe ir un condicional) y puede saltar desde un begin o un parntesis izquierdo hasta su correspondiente en parntesis derecho.

Unidad I

Pgina 6

Programacin de SistemasAdems, la salida de tal editor suele ser similar a la salida de la fase de anlisis de un compilador.

2. Impresoras estticas: Una impresora esttica analiza un p r o g r a m a y l o imprime de forma que la estructura del programa resulte claramente visible. Por ejemplo, los comentarios pueden aparecer con un tipo de letra especial, y l a s p r o p o s i c i o n e s p u e d e n a p a r e c e r c o n u n a i n d o t a c i n p r o p o r c i o n a l a l a profundidad de su anidamiento en la organizacin jerrquica de las proposiciones. 3. Verificadores estticos: Un verificador esttico lee un programa, lo analiza e intenta descubrir errores potenciales sin ejecutar el programa. La parte de a n l i s i s a m e n u d o e s s i m i l a r a l a q u e s e e n c u e n t r a e n l o s c o m p i l a d o r e s d e optimizacin. As, un verificador esttico puede detectar si hay partes de un programa que nunca se podrn ejecutar o si cierta variable se usa antes de ser definida. Adems, puede detectar errores de lgica, como intentar utilizar una variable real como apuntador, empleando las tcnicas de verificacin de tipos. 4. Intrpretes: En lugar de producir un programa objeto como resultado de una traduccin, un intrprete realiza las operaciones que implica el programa fuente. Para una proposicin de asignacin, por ejemplo, un intrprete podra construir un rbol como el de la figura 1 y despus efectuar las operaciones delos nodos conforme recorre el rbol. En la raz descubrira que tiene que realizar una asignacin, y llamara a una rutina para evaluar la expresin de la derecha y despus almacenara el valor resultante en la localidad de memoria asociada con la identificadora posicin. En el hijo derecho de la raz, la rutina descubrira que tiene que calcular la suma de dos expresiones. Se llamara a s misma de manera recursiva para calcular el valor de la expresin velocidad*60. Despus sumara ese valor de la variable inicial. Muchas veces los intrpretes se usan para ejecutar lenguajes de rdenes, pues cada operador q u e s e e j e c u t a e n u n l e n g u a j e d e r d e n e s s u e l e s e r u n a i n v o c a c i n d e u n a rutina compleja, como un editor o un compilador. Del mismo modo algunos lenguajes de muy alto nivel, normalmente son interpretados, porque hay muchas cosas sobre los datos, como el tamao y la forma de las matrices, que no se pueden deducir en el momento de la compilacin. 5. Compiladores: Tradicionalmente, se concibe un compilador como un programa que traduce un programa fuente, como FORTRAN, al l e n g u a j e ensamblador o de mquina de algn computador. Sin embargo, hay lugares, al parecer, no relacionados donde la tecnologa de los compiladores se usa con r e g u l a r i d a d . L a p a r t e d e a n l i s i s d e c a d a u n o d e l o s s i g u i e n t e s e j e m p l o s e s parecida a la de un compilador convencional. a) Formadores de textos. Un formador de textos toma comoUnidad I Pgina 7

Programacin de Sistemasentrada una cadena de caracteres, la mayor parte de la cual es texto para componer, pero alguna incluye rdenes para indicar prrafos, figuras o estructuras matemticas, como subndices o superndices. b) Compiladores de circuitos de silicio. Un compilador de circuitos de silicio tiene un lenguaje fuente similar o idntico a un lenguaje de programacin convencional. Sin embargo las variables del lenguaje no representan localidades d e m e m o r i a , s i n o seales lgicas (0 o 1) o grupos de seales en un circuito de conmutacin. La salida es el diseo de un circuito en un lenguaje apropiado. c ) Intrpretes de consultas. Un intrprete de consultas traduce un p r e d i c a d o q u e contiene operadores relacionales y bolanos a rdenes para buscar en una base de datos registros que satisfagan ese predicado.

1.3LenguajesSe llama lenguaje a cualquier tipo de cdigo semitico estructurado, para el que existe u n c o n t e x t o d e u s o y c i e r t o s p r i n c i p i o s c o m b i n a t o r i o s f o r m a l e s . E x i s t e n m u c h o s contextos tanto naturales como artificiales donde aparecen lenguajes. El lenguaje humano se basa en la capacidad de los seres h u m a n o s p a r a comunicarse mediante de signos. Principalmente lo hacemos utilizando el signo lingstico. Aun as, hay diversos tipos de lenguaje. El lenguaje humano puede estudiarse en cuanto a su desarrollo desde d o s p u n t o s d e v i s t a c o m p l e m e n t a r i o s : l a o n t o g e n i a , q u e r e m i t e a l proceso de adquisicin del lenguaje por el ser humano, y la filogenia El lenguaje animal se basa en el uso de seales sonoras, visuales yo f a t i g a s a modo de signos para referirse a un referente o un significado diferente de dichas seales. Dentro del lenguaje animal estn los gritos de alarma, el lenguaje de las abejas, e t c . L o s lenguajes formales son construcciones artificiales humanas, que se usan en matemtica y otras disciplinas formales, incluyendo lenguajes de programacin. Estas construcciones tienen estructuras internas que comparten con el lenguaje humano natural, por lo que pueden ser en parte analizados con los mismos conceptos que ste.

1.3.1Lenguajes NaturalesEste tipo de lenguaje es el que nos permite el designar l a s c o s a s 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 L.N puede ser modelada fcilmente por un lenguaje formal, similar a los utilizados en las matemticas y la lgica. Otra propiedad de losUnidad I Pgina 8

Programacin de Sistemaslenguajes naturales es l a p o l i s e m n t i c a , e s d e c i r l a p o s i b i l i d a d d e q u e u n a p a l a b r a e n u n a o r a c i n t e n g a diversos significados. E n u n primer resumen, los lenguajes naturales se caracterizan por las s i g u i e n t e s propiedades: Desarrollados por enriquecimiento progresivo antes de cualquier intento de formacin de una teora. L a i m p o r t a n c i a d e s u carcter expresivo debido grandemente a la riqueza del componente semntico (poli semntica).Dificultad o imposibilidad de una formalizacin completa.

1.3.2 Lenguajes ArtificialesEl lenguaje nos permite hacer la abstraccin y conceptualizacin d e ideas y por medio de este comunicarnos. En las distintas ramas de la ciencia nos encontramos con lenguajes artificiales o mejor conocidos como lenguajes formales que limitan su alcance a su materia de estudio. Concretamente y despus de esta breve introduccin, en la actualidad nos encontramos con distintos lenguajes para para programar y tambin los campos de aplicacin son variados y completamente distintos. De acuerdo a la complejidad del p r o b l e m a a r e s o l v e r s e r n e c e s a r i o h a c e r u n a s e l e c c i n a d e c u a d a d e l l e n g u a j e d e programacin (incluso se puede generar el lenguaje de programacin propio) que permita resolver de manera eficiente el problema. H a s t a h a c e p o c o s a o s , el software de desarrollo se basaba fundamentalmente en Lenguajes Artificiales (Basic, C, Cobol, Pascal) para explicar a la computadora las acciones a realizar. Por el contrario, los Orientados a Objetos permiten que el prog r a m a d o r i g n o r e e l l e n g u a j e c o m p r e n s i b l e p a r a l a m q u i n a p o n i e n d o a s u disposicin una serie de objetos pre programado. De este modo la tarea se simplifica enormemente y se reduce a disponer, dentro de la ventana d e p r o g r a m a y e n l a secuencia adecuada, los programas y funciones de los que nos provee.

1.3.3 Proceso De La ComunicacinLa comunicacin es un fenmeno inherente a la relacin grupal de los seres vivos por medio del cual stos obtienen informacin acerca de su entorno y de otros entornos y s o nUnidad I Pgina 9

Programacin de Sistemascapaces de compartirla haciendo partcipes a otros de esa i n f o r m a c i n . L a comunicacin es de suma importancia para la supervivencia de especies gregarias, pues la informacin que sta extrae de su medio ambiente y su facultad de transmitir mensajes sern claves para sacar ventaja del modo de vida gregario. Etimolgicamente, la palabra comunicacin deriva del latn commnicre, que puede traducirse como poner en comn, compartir algo. Se considera una categora polismica en tanto su utilizacin no es exclusiva de una ciencia social en particular, teniendo connotaciones propias de la ciencia social de que se trate. Proceso de transmisin de informacin de un emisor (A) a un receptor (B) a travs de un medio . En la transmisin y la recepcin de esa informacin se utiliza un cdigo especfico que debe ser codificado, por el emisor y decodificado por el receptor. Elementos del Proceso de la comunicacin Los elementos de la comunicacin humana son: fuente, emisor o codificador, cdigo(reglas del signo, smbolo), mensaje primario (bajo un cdigo), receptor o d e c o d i f i c a d o r , canal, ruido (barreras o interferencias) y la retroalimentacin o realimentacin (feed-back, mensaje de retorno o mensaje secundario). Fuente: Es el lugar de donde emana la informacin, los datos, el contenido que se enviar, en conclusin: de donde nace el mensaje primario. Emisor o codificador: Es el punto (persona, organizacin) que elige y seleccionarlos signos adecuados para transmitir su mensaje; es decir, los codifica para poder llevarlo de manera entendible al receptor. En el emisor se inicia el proceso comunicativo. Receptor o decodificador: Es el punto (persona, organizacin) al que se destina el m e n s a j e , r e a l i z a u n p r o c e s o i n v e r s o a l d e l e m i s o r y a q u e e n l e s t e l d e s c i f r a r e interpretar lo que el emisor quiere dar a conocer. Existen dos tipos de receptor, el pasivo que es el que slo recibe el mensaje, y el receptor activo o perceptor ya que es la persona que no slo recibe el mensaje sino que lo percibe y lo almacena. El mensaje es recibido tal como el emisor quiso decir, en este tipo de receptor se realiza lo que comnmente denominamos el feed-back o retroalimentacin. Cdigo: Es el conjunto de reglas propias de cada sistema de signos y smbolos que el emisor utilizar para trasmitir su mensaje, para combinarlos de manera arbitraria porque tiene que estar de una manera adecuada para que el receptor pueda captarlo. Un ejemplo claro es el cdigo que utilizan los marinos para poder comunicarse; la gramtica de algn idioma; los algoritmos en la informtica, todo lo que nos rodea son cdigos.

Unidad I

Pgina 10

Programacin de Sistemas Mensaje: Es el contenido de la informacin (contenido enviado): el conjunto de ideas, sentimientos, acontecimientos expresados por el emisor y que desea trasmitir al receptor para que sean captados de la manera que desea el emisor. El mensaje es la informacin. Canal: Es el medio a travs del cual se transmite la informacincomunicacin, e s t a b l e c i e n d o u n a c o n e x i n e n t r e e l e m i s o r y e l r e c e p t o r . M e j o r c o n o c i d o c o m o e l soporte material o espacial por el que circula el mensaje. Ejemplos: el aire, en el caso de la voz; el hilo telefnico, en el caso de una conversacin telefnica. Referente: Realidad que es percibida gracias al mensaje. Comprende todo aquello que es descrito por el mensaje. Situacin: Es el tiempo y el lugar en que se realiza el acto comunicativo. Interferencia o barrera: Cualquier perturbacin que sufre la seal en el proceso comunicativo, se puede dar en cualquiera de sus elementos. Son las distorsiones del sonido en la conversacin, o la distorsin de la imagen de la televisin, la alteracin dela escritura en un viaje, la afona del hablante, la sordera del oyente, la ortografa d e f e c t u o s a , l a distraccin del receptor, el alumno que no atiende aunque est e n silencio. Retroalimentacin o realimentacin (mensaje de retorno): Es la condicin necesaria p a r a l a i n t e r a c t i v i d a d d e l p r o c e s o c o m u n i c a t i v o , s i e m p r e y c u a n d o s e r e c i b a u n a respuesta (actitud, conducta) sea deseada o no. Logrando la interaccin entre el emisor y el receptor. Puede ser positiva (cuando fomenta la comunicacin) o negativa (cuando se busca cambiar el tema o terminar la comunicacin). Si no hay realimentacin, entonces solo hay informacin ms no comunicacin.

1.4 Traductor y su EstructuraTraductor: 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 llamadoUnidad I Pgina 11

Programacin de Sistemasobjeto. Algunos ejemplos de traductores son los compiladores (toma como entrada cdigo en a l t o n i v e l y g e n e r a c o m o s a l i d a c d i g o e n b a j o n i v e l ) , los interpretes (toma como e n t r a d a c d i g o e n a l t o n i v e l 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: cdigo fuente ->> traductor -> cdigo objeto Intrpretes o Traductores

Definicin. Un intrprete es un programa que ejecuta un p r o g r a m a e s c r i t o e n u n determinado lenguaje examinando y ejecutando cada sentencia del programa una a una, por separado y sin realizar un proceso de compilacin previo. Al contrario de lo que se podra pensar el intrprete NO traduce la sentencia a cdigo mquina antes de ejecutarla. En su lugar, identifica el tipo de sentencia y la ejecuta directamente. El cdigo para ejecutar la sentencia est contenido dentro del intrprete q u e contendr rutinas para: evaluar una expresin, almacenar informacin en memoria, recuperar datos de memoria, etc. El intrprete contendr el nmero de rutinas necesarias para poder e j e c u t a r c u a l q u i e r s e n t e n c i a d e l l e n g u a j e q u e e s t interpretando. Ejemplo: C := A + B 1. El intrprete lee la sentencia y determina que es una asignacin. 2. Llamar a una de sus rutinas para evaluar la expresin a l a d e r e c h a d e l a asignacin. 3. Esta rutina toma los smbolos A y B, determina donde estn almacenados, obtiene sus valores actuales y los suma. 4. El intrprete toma el valor calculado y lo almacena en la direccin de memoria a la que hace referencia el smbolo C. Al igual que un compilador para llevar a cabo su t a r e a e l i n t r p r e t e u s a r u n a n a l i z a d o r l x i c o g r f i c o y g u a r d a r l a i n f o r m a c i n necesaria para la traduccin en una tabla de smbolos. Interpretar una sentencia es relativamente complejo, al tener que ser escaneada y analizada, los smbolos tienen que ser buscados, hay que llevar a cabo lo indicado por la sentencia, etc. Esto significa que el nmero de instrucciones mquinas a ejecutar para interpretar una sentencia puede serUnidad I Pgina 12

Programacin de Sistemasmucho mayor que el cdigo generado por un c o m p i l a d o r . A d e m s , c a d a s e n t e n c i a t e n d r q u e s e r i n t e r p r e t a d a c a d a v e z q u e aparezca, por lo que una sentencia en un bucle sera interpretada varias veces. Adems de elegir entre compilar o interpretar un programa, otra opcin es combinar ambos procesos de traduccin. En este caso, se realiza una compilacin parcial a un c d i g o i n t e r m e d i o q u e e s s e g u i d a d e u n p r o c e s o d e i n t e r p r e t a c i n . U n o d e l o s lenguajes ms utilizados hoy en da, sobre todo para el desarrollo de aplicaciones para la Web, que sigue esta propuesta es el lenguaje Java. En el lenguaje Java el cdigo primero se compila con el compilador de Java javac. Este compilador genera un cdigo virtual llamado Byte Code. E s t e c d i g o e s l u e g o interpretado por una Mquina Virtual de Java (o JVM de Java Virtual Machine) que debe estar instalada y ejecutndose en la mquina en la que se desee ejecutar el cdigo compilado con javac. Comparacin entre compiladores e intrpretes Histricamente, debido a la escasez de memoria de los primeros ordenadores, se puso de moda el uso de intrpretes frente a los compiladores, pues el programa fuente sin traducir y el intrprete juntos requeran una cantidad de memoria menor que la del compilador. Por ello, los primeros ordenadores personales (Spectrum, CommodoreVIC-20, PC XT de IBM, etc.) iban siempre acompaados de un intrprete de BASIC. La mejor informacin sobre los errores por parte del compilador as como una mayor velocidad de ejecucin del cdigo resultante hizo que poco a poco se impusieran los compiladores. Hoy en da, y con el problema de la memoria prcticamente resuelto, se p u e d e h a b l a r d e u n g r a n p r e d o m i n i o d e l o s c o m p i l a d o r e s f r e n t e a l o s i n t r p r e t e s , aunque intrpretes como los incluidos en los navegadores de Internet para Java son logran excepcin. Algunas de las ventajas de compilar frente a interpretar son: Se compila una vez; se ejecuta muchas veces La ejecucin del programa objeto es mucho ms rpida que si s e i n t e r p r e t a e l programa fuente. El compilador tiene una visin global del programa, por lo que la informacin de mensajes de error es ms detallada. Por otro lado, algunas de las ventajas de interpretar frente a compilar son: Un intrprete necesita menos memoria que un compilador.Unidad I Pgina 13

Programacin de Sistemas Permiten una mayor interactividad con el cdigo en tiempo de desarrollo. En algunos lenguajes (Smalltalk, Prolog, LISP, Java) est permitido y es frecuente aadir cdigo segn se ejecuta otro cdigo, y esta caracterstica solamente es posible implementarla en un intrprete.

1.4.1 Lenguajes Ensambladores

El lenguaje ensamblador, o assembler (assembly language en ingls ) es un lenguaje de programacin de bajo nivel para los computadores, microprocesadores, micro controladores, y otros circuitos integrados programables. Implementa una representacin simblica de los cdigos de mquina binarios y otras constantes necesarias para programar una arquitectura dada de CPU y constituye la representacin ms directa del cdigo mquina especfico para cada arquitectura legible por un programador. Esta representacin es usualmente definida por el fabricante de hardware, y est basada en los mnemnicos que simbolizan los pasos de procesamiento (las instrucciones), los registros del procesador, las posiciones de memoria, y otras caractersticas del lenguaje. Un lenguaje ensamblador es por lo tanto especfico a cierta arquitectura de computador fsica (o virtual). Esto est en contraste con la mayora de los lenguajes de programacin de alto nivel, que, idealmente son portables. Un programa utilitario llamado ensamblador es usado para traducir sentencias del lenguaje ensamblador al cdigo de mquina del computador objetivo. El ensamblador realiza una traduccin ms o menos isomorfa (un mapeo de uno a uno) desde las sentencias mnemnicas a las instrucciones y datos de mquina. Esto est en contraste con los lenguajes de alto nivel, en los cuales una sola declaracin generalmente da lugar a muchas instrucciones de mquina. Muchos sofisticados ensambladores ofrecen mecanismos adicionales para facilitar el desarrollo del programa, controlar el proceso de ensamblaje, y la ayuda de depuracin. Particularmente, la mayora de los ensambladores modernos incluyen una facilidad de macro (descrita ms abajo), y son llamados macro ensambladores.

Unidad I

Pgina 14

Programacin de SistemasFue usado principalmente en los inicios del desarrollo de software, cuando an no se contaba con potentes lenguajes de alto nivel y los recursos eran limitados. Actualmente se utiliza con frecuencia en ambientes acadmicos y de investigacin, especialmente cuando se requiere la manipulacin directa de hardware, altos rendimientos, o un uso de recursos controlado y reducido. Muchos dispositivos programables (como el micro controlador) an cuentan con el ensamblador como la nica manera de ser manipulados.

Caractersticas

El cdigo escrito en lenguaje ensamblador posee una cierta dificultad de ser entendido ya que su estructura se acerca al lenguaje mquina, es decir, es un lenguaje de bajo nivel. El lenguaje ensamblador es difcilmente portable, es decir, un cdigo escrito para un microprocesador, puede necesitar ser modificado, para poder ser usado en otra mquina distinta. Al cambiar a una mquina con arquitectura diferente, generalmente es necesario reescribirlo completamente. Los programas hechos por un programador experto en lenguaje ensamblador son generalmente mucho ms rpidos y consumen menos recursos del sistema (memoria RAM y ROM) que el programa equivalente compilado desde un lenguaje de alto nivel. Al programar cuidadosamente en lenguaje ensamblador se pueden crear programas que se ejecutan ms rpidamente y ocupan menos espacio que con lenguajes de alto nivel. Con el lenguaje ensamblador se tiene un control muy preciso de las tareas realizadas por un microprocesador por lo que se pueden crear segmentos de cdigo difciles y/o muy ineficientes de programar en un lenguaje de alto nivel, ya que, entre otras cosas, en el lenguaje ensamblador se dispone de instrucciones del CPU que generalmente no estn disponibles en los lenguajes de alto nivel. Tambin se puede controlar el tiempo en que tarda una rutina en ejecutarse, e impedir que se interrumpa durante su ejecucin.

Unidad I

Pgina 15

Programacin de Sistemas

1.4.2 Lenguajes Compiladores

Un compilador es un programa informtico que traduce un programa escrito en un lenguaje de programacin a otro lenguaje de programacin, generando un programa equivalente que la mquina ser capaz de interpretar. Usualmente el segundo lenguaje es lenguaje de mquina, pero tambin puede ser simplemente texto. Este proceso de traduccin se conoce como compilacin.1 Un compilador es un programa que permite traducir el cdigo fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior (tpicamente lenguaje de mquina). De esta manera un programador puede disear un programa en un lenguaje mucho ms cercano a cmo piensa un ser humano, para luego compilarlo a un programa ms manejable por una computadora.

Partes de un compiladorLa 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 )Pgina 16

Unidad I

Programacin de Sistemasy 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).

Alternativamente, las fases descritas para las tareas de anlisis y sntesis se pueden agrupar en Front-end y Back-end:

Front-end: es la parte que analiza el cdigo fuente, comprueba su validez, genera el rbol de derivacin y rellena los valores de la tabla de smbolos. Esta parte suele ser independiente de la plataforma o sistema para el cual se vaya a compilar, y est compuesta por las fases comprendidas entre el Anlisis Lxico y la Generacin de Cdigo Intermedio. Back-end: es la parte que genera el cdigo mquina, especfico de una plataforma, a partir de los resultados de la fase de anlisis, realizada por el Front End.

Esta divisin permite que el mismo Back End se utilice para generar el cdigo mquina de varios lenguajes de programacin distintos y que el mismo Front 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. El cdigo que genera el Back End normalmente no se puede ejecutar directamente, sino que necesita ser enlazado por un programa enlazador (linker).

Tipos de compiladoresEsta taxonoma de los tipos de compiladores no es excluyente, por lo que puede haber compiladores que se adscriban a varias categoras:

Compiladores cruzados: generan cdigo para un sistema distinto del que estn funcionando. Compiladores optimizadores: realizan cambios en el cdigo para mejorar su eficiencia, pero manteniendo la funcionalidad del programa original. Compiladores de una sola pasada: generan el cdigo mquina a partir de una nica lectura del cdigo fuente. Compiladores de varias pasadas: necesitan leer el cdigo fuente varias veces antes de poder producir el cdigo mquina. Compiladores JIT (Just In Time): forman parte de un intrprete y compilan partes del cdigo segn se necesitan.

Unidad I

Pgina 17

Programacin de SistemasPauta de creacin de un compilador: En las primeras pocas de la informtica, el software de los compiladores era considerado como uno de los ms complejos existentes. Los primeros compiladores se realizaron programndolos directamente en lenguaje mquina 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. Actualmente existen herramientas que facilitan la tarea de escribir compiladores intrpretes informticos. Estas herramientas permiten generar el esqueleto del analizador sintctico a partir de una definicin formal del lenguaje de partida, especificada normalmente mediante una gramtica formal y barata, dejando nicamente al programador del compilador la tarea de programar las acciones semnticas asociadas.

1.4.3 Lenguajes IntrpretesUn intrprete es un traductor que toma un programa fuente, lo traduce y a continuacin lo ejecuta. BASIC es un lenguaje interpretado.

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. Se puede tambin utilizar una alternativa diferente de los compiladores para traducir l e n g u a j e s d e a l t o n i v e l . E n v e z d e t r a d u c i r e l p r o g r a m a f u e n t e y g r a b a r e n f o r m a permanente el cdigo objeto que se produce durante la corrida de compilacin para u t i l i z a r l o e n u n a c o r r i d a d e produccin futura, el programador slo carga el programa fuente en la computadora junto con los datos que se van a procesar. A continuacin, un programa intrprete, almacenado en el sistema operativo del disco, o incluido de manera permanente dentro de la mquina, convierte cada proposicin del programa fuente en lenguaje de mquina conforme vaya siendo necesario durante el proceso de los datos. No se graba el cdigo objeto para utilizarlo posteriormente.Unidad I Pgina 18

Programacin de SistemasLa siguiente vez que se utilice una instruccin, se le debe i n t e r p r e t a r o t r a v e z y traducir a lenguaje mquina. Por ejemplo, durante el procesamiento repetitivo de los pasos de un ciclo, cada instruccin del ciclo tendr que volver a ser interpretado cada vez que se ejecute el ciclo, lo cual hace que el programa sea ms lento en tiempo de ejecucin (porque se va revisando el cdigo en tiempo de ejecucin) pero ms rpido e n t i e m p o de diseo (porque no se tiene que estar compilando a cada momento el cdigo completo). El intrprete elimina la necesidad d e r e a l i z a r u n a c o r r i d a d e compilacin despus de cada modificacin del programa cuando se quiere agregar funciones o corregir errores; pero es obvio que un programa objeto compilado con a n t e l a c i n deber ejecutarse con mucha mayor rapidez que uno que se debe.

1.5 Lenguajes Generadores de cdigo para compiladores (Compilador de Compilador)Aqu se hablar de las herramientas generadoras automticas de c d i g o p a r a u n compilador. Estas herramientas trabajan basadas en un conjunto de reglas; estas reglas definen la traduccin de las instrucciones del lenguaje intermedio al lenguaje de mquina. Para a generacin de cdigo, se busca en las reglas establecidas la proposicin que coincida con la entrada actual; la entrada actual proviene de un rbol. Un ejemplo de esto sera: Entonces el compilador recibe una entrada de caracteres, por lo general escrita por el programador; el compilador realiza los anlisis: lxico, sintctico y semntico, para g e n e r a r s e g u i d a m e n t e e l c d i g o i n t e r m e d i o , e l cdigo intermedio se genera con p r i n c i p i o s d e b s q u e d a d e patrones y aplicacin de reglas. Despus se hace la optimizacin del cdigo intermedio; seguidamente se realiza la generacin de cdigo objeto en lenguaje de mquina. En sntesis para crear un generador de cdigo se deben hacer muchas de las tareas que realizan los compiladores; algunas de estas tareas son: la bsqueda de patrones, la escritura de cdigo, el anlisis sintctico, el anlisis lxico y la optimizacin de cdigo. Estas tareas las realiza el desarrollador una vez para una arquitectura especfica.

Unidad I

Pgina 19

Programacin de SistemasMETA COMPILADOR: 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. El desarrollo de los meta compiladores se encuentra con la dificultad de unir la g e n e r a c i n d e c d i g o c o n l a p a r t e d e a n l i s i s . L o q u e s s e h a n d e s a r r o l l a d o e s generadores de analizadores lxicos y sintcticos. Por ejemplo, los conocidos: generador de analizadores lxicos LEX. Generador de YACC: analizadores sintcticos desarrollados para UNIX. Los inconvenientes que tienen son que los analizadores que g e n e r a n n o s o n m u y eficientes.

Unidad I

Pgina 20

Programacin de Sistemas

ConclusinPudimos definir los diferentes temas de una manera entendible y esperando les haya quedado claro los diferentes tipos de conceptos de cada tema mencionado, de lo contrario, por si las dudas no hubo entendimiento los dejo con esto: Las personas se comunican con el lenguaje, que es un sistema muy desarrollado formado por palabras y smbolos que tienen s i g n i f i c a d o p a r a e l q u e habla y para quienes lo escuchan, lo mismo es para las computadoras las cuales tienen sistemas y se comunican por medio de computadoras. La programacin es el proceso de convertir las especificaciones a grandes rasgos delos sistemas en instrucciones de mquina que produzcan los resultados deseados.

Unidad I

Pgina 21