INSTITUTO TECNOLÓGICO SUPERIOR DE SAN MARTÍN TEXMELUCAN NOMBRE: JUAN ANTONIO SERRANO GALICIA PROFESOR(A): YESENIA PEREZ REYES CARRERA: ISC MATERIA: PROGRAMACIÒN DE SISTEMAS GRADO Y GRUPO: 5º”A” FECHA DE ENTREGA: 25/08/11 INVESTIGACIÒN M ANUAL DE PRÁCTICAS PROGRAMACIÓN DE SISTEMAS SCC-0432 PLAN ISIC-2004-296 INGENIERÍA EN SISTEMAS COMPUTACIONALES Índice INTRODUCCIÓN ---------------------------------------------------------------------------------------------------------------1 1.- INTRODUCCIÓN A LA PROGRAMACIÓN DE SISTEMAS 1.1 ¿QUÉ ES Y QUÉ ESTUDIA LA PROGRAMACIÓN DE SISTEMAS?-----------------------------------------------2 1.2 HERRAMIENTAS DESARROLLADAS CON LA TEORÍA DE PROGRAMACIÓN DE SISTEMAS.---------3 1.3 LENGUAJES. 1.3.1 LENGUAJES NATURALES.----------------------------------------------------------------------------------------------4 1.3.2 LENGUAJES ARTIFICIALES.--------------------------------------------------------------------------------------------5 1.3.3 PROCESO DE LA COMUNICACIÓN.-----------------------------------------------------------------------------------6 1.4 TRADUCTOR Y SU ESTRUCTURA. 1.4.1 ENSAMBLADORES.------------------------------------------------------------------------------------------------------- 7 1.4.2 COMPILADORES.---------------------------------------------------------------------------------------------------------- 8 1.4.3 INTÉRPRETES.-------------------------------------------------------------------------------------------------------------- 9 1.5 GENERADORES DE CÓDIGO PARA COMPILADORES (COMPILADOR DE COMPILADOR).----10 CONCLUSION--------------------------------------------------------------------------------------------------------------------11 LISTA DE BIBLIOGRAFÍAS-------------------------------------------------------------------------------------------------12 Taller de base de datos [SCS0432] INTRODUCCIÓN Para poder empezar a hablar acerca de los tipos de lenguajes que podemos manejar en la Programación de Sistemas tenemos que definir muy bien que es lenguaje, así que me permito dar una breve explicación acerca de estos en su uso y funcionamiento. Fecha de Actualización 25/08/2011 Página 1 Taller de base de datos [SCS0432] 1.- INTRODUCCIÓN A LA PROGRAMACIÓN DE SISTEMAS 1.1 ¿QUÉ ES? Un sistema es un conjunto de componentes que interaccionan entre si para lograr un objetivo común. Las personas se comunican con el lenguaje, que es un sistema muy desarrollado formado por palabras y símbolos que tienen significado que tienen significado para el que habla y para quienes lo escuchan, lo mismo es para las computadoras las cuales tienen sistemas y se comunican por medio de computadoras. La programación es el proceso de convertir las especificaciones a grandes rasgos de los sistemas en instrucciones de maquina que produzcan los resultados deseados. ¿QUE ESTUDIA? QUE 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 desempeñan una función de apoyo al mantener el ambiente del software del sistema operativo en el que trabajan los programadores de aplicaciones y los operadores de las computadoras. También participan en las decisiones relativas a reducciones o ampliaciones de hardware y/o software. Programación de Sistemas Conceptos y Aplicaciones Se entiende por programación de sistemas el conjunto de programas necesario para que una computadora de una imagen coherente y monolítica ante sus usuarios. Es un área especializada dentro de las ciencias de la computación. Así, mediante la programación de sistemas, no solo se manejan las computadoras por medio del lenguaje maquina (0 y 1) sino por otros sistemas operativos, sin lo cual sería muy difícil la interacción con la maquina. Fecha de Actualización 25/08/2011 Página 2 Taller de base de datos [SCS0432] EL ESTUDIO DE LA PROGRAMACIÓN DE SISTEMAS En esta área se estudia la teoría de máquinas y su aplicación en el diseño de sistemas digitales y de arquitectura de computadoras. Áreas específicas: 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 están diseñando y construyendo herramientas para elaborar un sistema sin costura que opere en Web con la finalidad de proporcionar a un grupo de coautores el soporte necesario para producir conjunta y simultáneamente un mismo documento. 1.2 HERRAMIENTAS DESARROLLADAS CON TEORIA DE PROGRAMACION DE SISTEMAS Muchas herramientas de software que manipulan programas fuente realizan primero algún tipo de análisis. 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 sólo realiza las funciones de creación y modificación de textos de un editor de textos ordinario, sino que también analiza el texto del programa, imponiendo al programa fuente una estructura jerárquica apropiada. De esa manera, el editor de estructuras puede realizar tareas adicionales útiles para laa preparación de programas. Por ejemplo, puede comprobar si la entrada está formada correctamente, puede proporcionar palabras clave de manera automática (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 paréntesis izquierdo hasta su correspondiente en o Fecha de Actualización 25/08/2011 Página 3 Taller de base de datos [SCS0432] paréntesis derecho. Además, la salida de tal editor suele ser similar a la salida de la fase de análisis de un compilador . 2. Impresoras estéticas Una impresora estética analiza un programa y lo imprime de forma que la estructura del programa resulte claramente visible. Por ejemplo, los comentarios pueden aparecer con un tipo de letra especial, y las proposiciones pueden aparecer con una indentación proporcional a la profundidad de su anidamiento en la organización jerárquica de las proposiciones . Fecha de Actualización 25/08/2011 Página 4 3. Verificadores estáticos. Taller de base de datos [SCS0432] Un verificador estático lee un programa, lo analiza e intenta descubrir errores potenciales sin ejecutar el programa. La parte de análisis a menudo es similar a la que se encuentra en los compiladores de optimización. Así, un verificador estático puede detectar si hay partes de un programa que nunca se podrán ejecutar o si cierta variable se usa antes de ser definida. Además, puede detectar errores de lógica, como intentar utilizar una variable real como apuntador, empleando las técnicas de verificación de tipos. Fecha de Actualización 25/08/2011 Página 5 Taller de base de datos [SCS0432] 4. Intérpretes. En lugar de producir un programa objeto como resultado de una traducción, un intérprete realiza las operaciones que implica el programa fuente. Para una proposición de asignación. Muchas veces los intérpretes se usan para ejecutar lenguajes de órdenes, pues cada operador que se ejecuta en un lenguaje de órdenes suele ser una invocación de una 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 tamaño y la forma de las matrices, que no se pueden deducir en el momento de la compilación. En pocas palabras un intérprete es aquel que Ejecuta línea por línea, pero realiza un código intermedio. 5. Compiladores. Tradicionalmente, se concibe un compilador como un programa que traduce un programa fuente, , al lenguaje ensamblador o de máquina de algún computador. Sin embargo, hay lugares, al parecer, no relacionados donde la tecnología de los compiladores se usa con regularidad. La parte de análisis de cada uno de los siguientes ejemplos es parecida a la de un compilador convencional. a) Formadores de textos. Un formador de textos toma como entrada una cadena de caracteres, Fecha de Actualización 25/08/2011 Página 6 Taller de base de datos [SCS0432] la mayor parte de la cual es texto para componer, pero alguna incluye órdenes para indicar párrafos, figuras o estructuras matemáticas, como subíndices o superíndices. b) Compiladores de circuitos de silicio. Un compilador de circuitos de silicio tiene un lenguaje fuente similar o idéntico a un lenguaje de programación convencional. Sin embargo las variables del lenguaje no representan localidades de memoria, sino señales lógicas (0 o 1) o grupos de señales en un circuito de conmutación. La salida es el diseño de un circuito en un lenguaje apropiado. c) Intérpretes de consultas. Un intérprete de consultas traduce un predicado que contiene operadores relacionales y boléanos a órdenes para buscar en una base de datos registros que satisfagan ese predicado. 1.3 LENGUAJES 1.3.1 LENGUAJES NATURALES Se llama lenguaje natural al que utilizan los seres humanos en su comunicación ordinaria, porque ha sido formado paulatinamente mediante el uso del grupo social, a través de una dinámica histórica no deliberada. Así, son lenguajes naturales el castellano, el inglés, el latín, el hindi o cualquier otro comúnmente hablado en algún momento y en algún lugar. Fecha de Actualización 25/08/2011 Página 7 Taller de base de datos [SCS0432] El lenguaje natural posee una gran riqueza significativa, y no solo transmite descripciones sino también emociones, órdenes u otros mensajes. Un lenguaje se considera como un conjunto de oraciones, que usualmente es infinito y se forma con combinaciones de palabras del diccionario. Es necesario que esas combinaciones sean correctas(con respecto a sintaxis) y tengan sentido(con respecto a la semántica). Un lenguaje es la función que expresa pensamientos y comunicaciones entre la gente. Esta función es llevada a cabo por medio de señales y vocales(voz) y posiblemente por signos escritos(escritura). 1.3.2 LENGUAJES ARTIFICIALES Los lenguajes de programación no se hablan, lo cual significa también una gran diferencia. Su fin no es que se entiendan en la comunicación oral, ya que las computadoras actuales casi no toman en cuenta las ondas sonoras. Pero aún suponiendo que fuera posible hablar a una computadora (lo cual es completamente concebible). Los programadores se dan cuenta de esto cuando distinguen entre lenguajes artificiales o programación y lenguajes "naturales" como el español y el inglés. En sí, la palabra "artificial" nos dice algo sobre el plan del programador. Aunque el español o cualquier otro idioma son también producto de artificio, su creación a lo largo de siglos no fue plenamente consciente y racional como ha sido la creación de lenguajes de Fecha de Actualización 25/08/2011 Página 8 programación. Taller de base de datos [SCS0432] 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 programador ignore el lenguaje comprensible para la máquina poniendo a su disposición una serie de objetos preprogramados. De este modo la tarea se simplifica enormemente y se reduce a disponer, dentro de la ventana de programa y en la secuencia adecuada, los programas y funciones de los que nos provee. Los llamados lenguajes artificiales se denominan así por la oposición al lenguaje natural. Cabe advertir que el uso de esta terminología en nada prejuzga acerca de la relación entre el lenguaje y la realidad. Hablamos de lenguaje "natural" en cuanto éste aparece como dado para los hablantes de una comunidad lingüística: desde que nacemos aprendemos el lenguaje de nuestro grupo social sin que podamos, de hecho, intervenir individualmente de modo apreciable en su conformación. Pero no por esto dejaremos de reconocer que los símbolos son en principio arbitrarios y que no existen significados "naturales" de los términos. En este último sentido, también el lenguaje natural es, a su modo, artificial. Entre los Lenguajes Artificiales suelen distinguirse el lenguaje técnico y el formal. Fecha de Actualización 25/08/2011 Página 9 Taller de base de datos [SCS0432] 1) Lenguaje técnico. El lenguaje técnico podría denominarse, con mayor propiedad, “Lenguaje natural con términos técnicos”. Aparece cuando se otorga a determinados vocablos o expresiones un significado restringido, a través de definiciones precisas. Todos ellos hablan un mismo idioma, que conserva su vocabulario general y su construcción gramatical; pero cada uno agrega a esta base común términos estrictamente definidos que constituyen el lenguaje específico (o lajerga profesional) de cada ciencia, con un mayor grado de univocidad en los conceptos relevantes para determinado sector del conocimiento. 2)Lenguaje formal. A veces la necesidad de precisión es tal que el uso de un lenguaje técnico no es suficiente: las palabras utilizadas pueden traer a la mente asociaciones no queridas, y la vaguedad (o a veces la ambigüedad) no puede en ocasiones reducirse aceptablemente. En tales casos suele resultar necesario o conveniente el recurso a los lenguajes formales. Un lenguaje formal es aquel en el que se han eliminado los términos del lenguaje ordinario y se emplean únicamente símbolos arbitrarios, de cuyo significado se prescinde para dirigir la atención exclusivamente sobre las relaciones entre dichos símbolos, expresadas en fórmulas, tal como en el álgebra o en la lógica formal. En álgebra, por ejemplo, decimos: (a+b) = (b+a) Esta expresión formal puede verse como un mero cálculo, sin referencia alguna a la realidad concreta, y en este sentido la comprendemos como la enunciación de cierta Fecha de Actualización 25/08/2011 Página 10 Taller de base de datos [SCS0432] propiedad de la suma (a saber, su conmutatividad). Pero también podemos asignar valores a los símbolos arbitrarios; 1.3.3 PROCESO DE LA COMUNICACIÓN La comunicación es un fenómeno inherente a la relación grupal de los seres vivos por medio del cual éstos obtienen información acerca de su entorno y de otros entornos y son capaces de compartirla haciendo partícipes a otros de esa información. La comunicación es de suma importancia para la supervivencia de especies gregarias, pues la información que ésta extrae de su medio ambiente y su facultad de transmitir mensajes serán claves para sacar ventaja del modo de vida gregario. Los elementos o factores de la comunicación humana son: fuente, emisor o codificador, código (reglas del signo, símbolo), mensaje primario (bajo un código), receptor o decodificador, canal, ruido (barreras o interferencias) y la retroalimentación o realimentación (feed-back, mensaje de retorno o mensaje secundario). • Fuente: Es el lugar de donde emana la información, los datos, el contenido que se enviará, en conclusión: de donde nace el mensaje primario. Fecha de Actualización 25/08/2011 Página 11 Taller de base de datos [SCS0432] • Emisor o codificador: Es el punto (persona, organización…) que elige y selecciona los 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, organización…) al que se destina el mensaje, realiza un proceso inverso al del emisor ya que en él está el descifrar e interpretar lo que el emisor quiere dar a conocer. Existen dos tipos de receptor, el pasivo que es el que sólo recibe el mensaje, y el receptor activo o perceptor ya que es la persona que no sólo 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 comúnmente denominamos el feed-back o retroalimentación. • Código: Es el conjunto de reglas propias de cada sistema de signos y símbolos 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 código que utilizan los marinos para poder comunicarse; la gramática de algún idioma; los algoritmos en la informática…, todo lo que nos rodea son códigos. • Mensaje: Es el contenido de la información (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 información. • Canal: Es el medio a través del cual se transmite la información-comunicación, estableciendo una conexión entre el emisor y el receptor. Mejor conocido como el soporte material o espacial por el que circula el mensaje. Ejemplos: el aire, en el caso de la voz; el hilo telefónico, en el caso de una conversación telefónica. • Referente: Realidad que es percibida gracias al mensaje. Comprende todo aquello que es descrito por el mensaje. • Situación: Es el tiempo y el lugar en que se realiza el acto comunicativo. • Interferencia o barrera: Cualquier perturbación que sufre la señal en el proceso Fecha de Actualización 25/08/2011 Página 12 Taller de base de datos [SCS0432] comunicativo, se puede dar en cualquiera de sus elementos. Son las distorsiones del sonido en la conversación, o la distorsión de la imagen de la televisión, la alteración de la escritura en un viaje, la afonía del hablante, la sordera del oyente, la ortografía defectuosa, la distracción del receptor, el alumno que no atiende aunque esté en silencio. • Retroalimentación o realimentación (mensaje de retorno): Es la condición necesaria para la interactividad del proceso comunicativo, siempre y cuando se reciba una respuesta (actitud, conducta…) sea deseada o no. Logrando la interacción entre el emisor y el receptor. Puede ser positiva (cuando fomenta la comunicación) o negativa (cuando se busca cambiar el tema o terminar la comunicación). Si no hay realimentación, entonces solo hay información más no comunicación. 1.4 TRADUCTOR Y SU ESTRUCTURA Un traductor es un programa que tiene como entrada un texto escrito en un lenguaje (lenguaje fuente) y como salida produce un texto en un lenguaje (lenguaje objeto) que preserva el significado de origen. Ejemplo de traductores son los ensambladores y los compiladores. A continuación presentamos algunos esquemas del comportamiento de traductores y su estructura. Fecha de Actualización 25/08/2011 Página 13 Taller de base de datos [SCS0432] Fecha de Actualización 25/08/2011 Página 14 Taller de base de datos [SCS0432] 1.4.1 ENSAMBLADORES El programa ensamblador es el programa que realiza la traducción de un programa escrito en ensamblador a lenguaje maquina. Esta traducción es directa e inmediata, ya que las instrucciones en ensamblador son mas que neumáticos de las instrucciones maquinas que ejecuta directamente la CPU Funciones De Un Ensamblador La tarea fundamental de un ensamblador es traducir un programa en lenguaje de ensamblador al código correspondiente en lenguaje de máquina. En esencia, el ensamblador debe realizar las siguientes tareas: 1. Convertir los códigos ("opcode" o mnemónicos: ej. LDA, STX) a su código equivalente en lenguaje de máquina Fecha de Actualización 25/08/2011 Página 15 Taller de base de datos [SCS0432] 2. Convertir los operandos simbólicos (las etiquetas o variables) en las direcciones correspondientes de los operandos 3. Construir las instrucciones en lenguaje de máquina en el formato apropiado 4. Convertir las constantes definidas en el programa en su verdadera representación 5. Escribir el "listing" en lenguaje de ensamblador con el código en lenguaje de máquina correspondiente 6. Procesar las directrices al ensamblador (las directrices son instrucciones o comandos dirigidos al ensamblador, que éste procesa y ejecuta al hallarlos en el programa en lenguaje de ensamblador; estas directrices no se traducen a lenguaje de máquina, si no que el ensamblador ejecuta alguna acción, como reservar memoria para variables, entre otras). Tipos de ensambladores. Podemos distinguir entre tres tipos de ensambladores: 1.-Ensambladores básicos. Son de muy bajo nivel, y su tarea consiste básicamente en ofrecer nombres simbólicos a las distintas instrucciones, parámetros y cosas tales como los modos de direccionamiento. Además, reconoce una serie de directivas (o meta instrucciones) que indican ciertos parámetros de funcionamiento del ensamblador. 2.-Ensambladores modulares, o macro ensambladores. Descendientes de los ensambladores básicos, fueron muy populares en las décadas de los 50 y los 60, antes de la generalización de los lenguajes de alto nivel. Hacen todo lo que puede hacer un ensamblador, y además proporcionan una serie de directivas para definir e invocar macroinstrucciones (o simplemente, macros). 3.-Ensambladores de alto nivel. Ensambladores modulares 32-bits o de alto nivel. Son ensambladores que aparecieron como respuesta a una nueva arquitectura de procesadores de 32 bits, muchos de ellos teniendo compatibilidad hacia atrás pudiendo trabajar con programas Fecha de Actualización 25/08/2011 Página 16 Taller de base de datos [SCS0432] con estructuras de 16 bits. Además de realizar la misma tarea que los anteriores, permitiendo también el uso de macros, permiten utilizar estructuras de programación más complejas propias de los lenguajes de alto nivel. A pesar del hecho de que codificar en un lenguaje de alto nivel es más productivo, algunas ventajas de codificar en lenguaje ensamblador son: a) Proporciona más control sobre el manejo particular de los requerimientos de hardware. b) Genera módulos ejecutables más pequeños y más compactos c) Con mayor probabilidad tiene una ejecución más rápida. d) El ensamblador brinda la oportunidad de conocer más a fondo la operación de su PC, esto le permite implementar software y hardware de un manera más consciente. e) Conserva usted el control total de lo que deberá hacer su PC, siempre y cuando está sea físicamente capaz de hacerlo. f) Los programas en ensamblador son más rápidos, más compactos y tienen mayor capacidad que los creados en otros lenguajes. g) Pueden optimizarse al máximo sus programas (tanto en tamaño como en velocidad de ejecución). 1.4.2 COMPILADORES Un compilador es querer traducir un programa de un lenguaje de alto nivel, a otro lenguaje de nivel inferior (típicamente lenguaje máquina). De esta manera un programador puede diseñar un programa en un lenguaje mucho más cercano a como piensa un ser humano, para luego compilarlo a un programa más manejable por una computadora. Los compiladores son programas o herramientas encargadas de compilar. Un compilador toma un texto (código fuente) escrito en un lenguaje de alto nivel y lo Fecha de Actualización 25/08/2011 Página 17 Taller de base de datos [SCS0432] traduce a un lenguaje comprensible por las computadoras (código objeto). Básicamente, existen dos grandes formas de ejecutar programas: programas compilados (previamente pasados por un compilador) y programas interpretados (necesitan pasar por un intérprete para ejecutarse en tiempo real). Un compilador acepta programas escritos en un lenguaje de alto nivel y los traduce a otro lenguaje, generando un programa equivalente independiente, que puede ejecutarse tantas veces como se quiera. Este proceso de traducción se conoce como compilación. Partes de un compilador Normalmente los compiladores están divididos en dos partes: Front End: es la parte que analiza el código fuente, comprueba su validez, genera el árbol de derivación y rellena los valores de la tabla de símbolos. Esta parte suele ser independiente de la plataforma o sistema para el cual se vaya a compilar. Back End: es la parte que genera el código máquina, específico de una plataforma, a partir de los resultados de la fase de análisis, realizada por el Front End. Esta división permite que el mismo Back End se utilice para generar el código máquina de varios lenguajes de programación distintos y que el mismo Front End que sirve para analizar el código fuente de un lenguaje de programación concreto sirva para generar código máquina en varias plataformas distintas. Fecha de Actualización 25/08/2011 Página 18 Taller de base de datos [SCS0432] El código que genera el Back End normalmente no se puede ejecutar directamente, sino que necesita ser enlazado por un programa enlazador (linker). Tipos de compiladores Esta taxonomía de los tipos de compiladores no es excluyente, por lo que puede haber compiladores que se adscriban a varias categorías: Compiladores cruzados: generan código para un sistema distinto del que están funcionando. Compiladores optimizadores: realizan cambios en el código para mejorar su eficiencia, pero manteniendo la funcionalidad del programa original. Compiladores de una sola pasada: generan el código máquina a partir de una única lectura del código fuente. Compiladores de varias pasadas: necesitan leer el código fuente varias veces antes de poder producir el código máquina. Compiladores JIT (Just In Time): forman parte de un intérprete y compilan partes del código según se necesitan. Fecha de Actualización 25/08/2011 Página 19 Taller de base de datos [SCS0432] En pocas palabras este es el comportamiento de un compilador 1.4.3 INTÉRPRETE Un intérprete es un programa capaz de analizar y ejecutar otros programas, escritos en un lenguaje de alto nivel. Los intérpretes suelen contraponerse a los compiladores, ya que mientras que los segundos se encargan de traducir un programa desde su descripción en un lenguaje de programación al código máquina del sistema destino, los primeros sólo realizan la traducción a medida que sea necesario y normalmente, no guardan el resultado de dicha traducción. Fecha de Actualización 25/08/2011 Página 20 Taller de base de datos [SCS0432] El intérprete tiene estas características - Traduce y ejecuta una línea del programa a la vez - Si hay error, detiene ejecución del programa - Programas más lentos pero más portables y flexibles Es quema del comportamiento de un intérprete: 1.5 GENERADOR DE CODIGO PARA COMPILADORES En un principio, estas máquinas ejecutaban instrucciones consistentes en códigos numéricos que señalan a los circuitos de la máquina los estados correspondientes a cada operación. Esta expresión mediante códigos numéricos se llamó Lenguaje Máquina, interpretado por un secuenciador cableado o por una microprograma. Pero los códigos numéricos de las máquinas son engorrosos. Pronto los primeros usuarios de estos ordenadores descubrieron la ventaja de escribir sus programas mediante claves más fáciles de recordar que esos códigos numéricos; al final, todas esas claves Fecha de Actualización 25/08/2011 Página 21 Taller de base de datos [SCS0432] juntas se traducían manualmente a Lenguaje Máquina. Estas claves constituyen los llamados lenguajes ensambladores, que se generalizaron en cuanto se dio el paso decisivo de hacer que las propias máquinas realizaran el proceso mecánico de la traducción. A este trabajo se le llama ensamblar el programa. Como opera: EL COMPILADOR DE COMPILADORES. Con el fin de aumentar la velocidad de producción de los compiladores y reducir el personal que intervenga en ellos, se han desarrollado lenguajes de alto nivel llamados compilador de compiladores. Los primeros lenguajes de este tipo aparecieron en 1958 y suelen estructurarse en sublenguajes específicos para cada parte del proceso de compilación. En general, el programa objeto producido por un compilador –a su vez generado por un compilador de compiladores- es mejor y está más optimizado que el producido por un compilador escrito a mano. Es evidente: las características especiales que un computador determinado imprime en la traducción de los programas objetos son más fáciles de expresar en un lenguaje de alto nivel y los algoritmos usados generalizan más que los manuales. Fecha de Actualización 25/08/2011 Página 22 Taller de base de datos [SCS0432] PRUEBAS Y MANTENIMIENTO. Un compilador debe generar código correcto. Idealmente, se desearía tener un computador que comprobara mecánicamente que un compilador implanta fielmente su especificación. Varios artículos estudian la corrección de algunos algoritmos de compilación pero desgraciadamente, los compiladores casi nunca se especifican de forma que una implantación arbitraria se pueda comprobar mecánicamente en vez de una especificación formal. Como los compiladores son funciones bastante complejas, también hay que comprobar que la especificación misma sea correcta. CONCLUSIÓN El software de sistema juega un papel muy importante en el área de la computación. La programación de sistemas esta muy enfocado al manejo de los microprocesadores. Ya que como objetivo es desarrollar varias plataformas de software base ya que nosotros debemos de aprender a manipularlos. BIBLIOGRAFIAS http://maestros.its.mx/karinac/CAPITULO%201ps.pdf http://antares.itmorelia.edu.mx/~jcolivar/courses/ps207a/ps2_u1.pdf Fecha de Actualización 25/08/2011 Página 23