introducción a la programación de sistemas m.c. juan carlos olivares rojas
TRANSCRIPT
![Page 1: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/1.jpg)
Introducción a la Programación de Sistemas
M.C. Juan Carlos Olivares Rojas
![Page 2: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/2.jpg)
Agenda• ¿Qué es y que estudia la programación de
sistemas? • Herramientas desarrolladas con la teoría
de programación de sistemas
• Lenguajes
• Traductor y su estructura.
• Generadores de código para compiladores (compilador de compilador).
![Page 3: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/3.jpg)
¿Qué es y que estudia la programación de sistemas?
• Programa: conjunto de instrucciones que ejecuta una computadora para realizar una actividad.
• Sistema: conjunto de elementos autónomos que trabajan en armonía para alcanzar un objetivo en común.
![Page 4: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/4.jpg)
Tipos de Sistema• Sistemas físicos: equipo, maquinaria,
objetos reales, Hardware
• Sistemas abstractos: ideas, hipótesis, conceptos, planes, Software.
• Sistemas abiertos y cerrados dependiendo del ambiente en que se ejecutan.
![Page 5: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/5.jpg)
Sistema• Están bien delimitados, por lo tanto se
conocen sus fronteras.
• Un sistema puede interactuar con su medio ambiente a través de una interfaz de entradas y salidas que recibe el nombre de parámetros del sistema.
• Un sistema puede ser componente de otro sistema
![Page 6: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/6.jpg)
Diferencia entre un Ingeniero en Sistemas y un Técnico
• A parte del grado académico, el tipo de programas que realizan.
• Generalmente un técnico realiza software de aplicaciones (ABCD) o aplicaciones de gestión (nóminas, control de inventarios, etc.) • Un ingeniero es más creativo, más ciencia e investigación; mientras que un licenciado aplica los conocimientos.
![Page 7: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/7.jpg)
Clasificación del Software• Software de sistemas: software que
ayuda (sirve de base) a otro software.
• Procesan estructuras de datos complejas
• Tienen una fuerte dependencia con el hardware
• Utilizan una fuerte gestión de procesos (concurrencia, planificación, etc.)
![Page 8: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/8.jpg)
Clasificación del Software• Software de aplicación (gestión)
• Software de tiempo real
• Software empotrado
• Software de ingeniería y científico
• Software basado en Web • Software de inteligencia artificial
![Page 9: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/9.jpg)
Áreas Afines a la programación de sistemas
• Teoría de la computación (lenguajes y autómatas).
• Lenguajes de programación • Arquitecturas de computadoras • Algorítmica • Ingeniería del software
![Page 10: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/10.jpg)
Herramientas desarrolladas con la teoría de programación de
sistemas
• El caso más sencillo de programación de sistemas es la construcción de compiladores para ejecutar lenguajes de programación.
• Pero no sólo se aplica en lenguajes de programación, sino también se aplica en cualquier programa que se tenga que hacer un análisis o extracción de información
![Page 11: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/11.jpg)
Herramientas• Editores de texto inteligentes (IDEs con
autocompletar, revisores ortográficos, etc)
• Impresoras estéticas (impresión de gran calidad sin un editor visual, Latex, etc.)
• Intérpretes (Shellsde sistemas operativos o de alguna aplicación como un SMBD)
• Búsqueda de información que no es tan común en base a patrones, etc.
![Page 12: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/12.jpg)
Lenguajes• Lenguajes naturales.
• Lenguajes artificiales.
• Proceso de la comunicación.
![Page 13: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/13.jpg)
Lenguajes• Conjunto de palabras y reglas que
permiten comunicar información entre dos entidades.
• Lenguaje son las cadenas que pueden generarse a través de una gramática
• El lenguaje que entienden las máquinas (lenguaje formal) es muy diferente del lenguaje que entendemos los humanos
![Page 14: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/14.jpg)
Repaso de Lenguajes• Símbolo: representación abstracta de
alguna entidad
• Alfabeto: conjunto finito de símbolos
• Cadena: yuxtaposición de símbolos de un alfabeto que representan a un objeto
• Lenguaje: conjunto de cadenas válidas que se pueden formar a través de un alfabeto
![Page 15: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/15.jpg)
Lenguaje Natural• El lenguaje natural es inherentemente
ambiguo, por lo que se necesita crear un lenguaje que permita eliminar esas ambigüedades.
• Es mejor crear otro lenguaje, denominado de alto nivel que es el encargado de mediar entre la abstracción humana y la abstracción de lenguaje de máquina
![Page 16: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/16.jpg)
Lenguajes artificiales• Los lenguajes artificiales son aquellos que
los humanos hemos creado para comunicarnos
• Las computadoras sólo saben 0 y 1
• Un lenguaje artificial permite implementar un algoritmo en una computadora para resolver un problema.
![Page 17: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/17.jpg)
Lenguaje de Bajo Nivel• Una abstracción más entendible del
lenguaje máquina es el uso de lenguajes ensambladores en donde cada instrucción o mnemónico es traducido a una instrucción máquina.
• ADD AX, 5 • LOAD A, 5
![Page 18: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/18.jpg)
Lenguaje Máquina• El lenguaje máquina es dependiente de
cada tipo de arquitectura de computadoras por lo que el código no es fácilmente portable a otras arquitecturas.
• Los lenguajes de alto nivel son más portables en lo que respecta al código fuente pudiendo llevarse a otras arquitecturas de computadoras sin mayor problema.
![Page 19: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/19.jpg)
Clasificación de Chomsky• Lenguajes sin restricciones (gramática 0)
• Lenguajes dependientes del contexto (tipo 1)
• Lenguajes independientes del contexto (tipo 2)
• Lenguajes regulares (tipo 3 no presentan ambigüedades, lo ideal para representarlas en una computadora)
![Page 20: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/20.jpg)
Traductor y su Estructura• Ensambladores.
• Compiladores
• Interpretes.
![Page 21: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/21.jpg)
Traductor• Un traductor es un mediador entre dos
entidades: emisoras y receptoras
• Los mediadores enmascaran la complejidad y heterogeneidad de los lenguajes
• Un traductor convierte un lenguaje de entrada (código fuente) a uno de salida (código objeto)
![Page 22: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/22.jpg)
Traductores• La traducción puede ser sencilla (literal) o
compleja (revisar el contexto) dependiendo del tipo de lenguaje de entrada y salida.
• Traducción español a inglés si se hace de manera literal es una mala traducción, se necesita de al menos otra revisión (pasada) para hacer una buena traducción.
![Page 23: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/23.jpg)
Traductores
![Page 24: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/24.jpg)
Ensamblador• Ensamblador es el traductor que se
encarga de convertir instrucciones de bajo nivel a instrucciones de una máquina en general
• //Encabezados • 00 MOV AX, 58d 4F0188 • 03 CMP 0 3A00 • 05 JMP etiqueta 9918 • … Etiqueta: • 18 MUL AX, FF 4401FF
![Page 25: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/25.jpg)
Compiladores• Es el traductor que se encarga de
convertir un lenguaje de alto nivel a código máquina.
• La característica de este traductor radica en el hecho de que necesita revisar todo el código fuente para poder realizar la traducción. Ejemplo: la traducción de un libro, discurso, o artículo técnico o de investigación
![Page 26: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/26.jpg)
Compiladores• Ejemplos de compiladores: C, C++,
Pascal, etc.
• Entre más pasadas se de a un código fuente mayor es la optimización que se puede hacer. El problema radica en el tiempo y en los recursos para hacerlo
• Antes de compilar un programa fuente se sigue una etapa de preprocesamiento.
![Page 27: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/27.jpg)
Preprocesadores• Macros (expansión de funciones)
• Inclusión de archivos (bibliotecas)
• Procesadores racionales
• Extensiones al leguaje (inclusión de ensamblador en C)
![Page 28: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/28.jpg)
Etapas de un compilador
![Page 29: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/29.jpg)
Intérpretes• Se ejecutan línea por línea, instrucción
por instrucción.
• Lenguajes interpretados: PHP, PERL, BASIC
• En algunas ocasiones se necesita de una traducción rápida de algunas instrucciones, como en el Shell, instrucciones SQL, etc.
![Page 30: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/30.jpg)
Java compilado o interpretado• Java al igual que otros lenguajes como C#
son lenguajes híbridos. Por una parte se compila un programa fuente para generar código objeto para una máquina virtual (bytecode o MSIL) para posteriormente ejecutarse de manera interpretada en las diferentes máquinas virtuales de cada plataforma. A este compilador se les llama jitterde JIT (Justin Time)
![Page 31: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/31.jpg)
Generadores de código para compiladores (compilador de
compilador).
• Los dos primeros lenguajes de alto nivel desarrollado fueron FORTRAN y COBOL. • Desarrollar FORTRAN tardóalrededor de 14 años. Desarrollar nuestro compilador tardarámenos de 6 meses
• Son herramientas que auxilian algún aspecto del proceso de traducción
![Page 32: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/32.jpg)
Compilador de Compiladores• Cargadores y editores de enlace
• Generadores de analizadores léxico • Generadores de Analizadores sintácticos •
• Traductores dirigidos por sintaxis
• Generadores automáticos de código • Dispositivos para el análisis de flujo de
datos
![Page 33: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/33.jpg)
XML• eXtensibleMarkupLanguage(Lenguaje de
Marcado eXtensible)
• Es un metalenguaje –Lenguaje que describe a otros lenguajes
• XML sólo define el lenguaje, lo que se realice con él depende de la aplicación.
• Es de un lenguaje de marcado por que utiliza etiquetas.
![Page 34: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/34.jpg)
XML• Las etiquetas se representan con
paréntesis angulares <> y dentro un identificador.
• XML deriva de un lenguaje denominado SGML.
• El lenguaje de marcado mejor conocido es el HTML (HyperText MarkupLanguage), el cual es la base de los documentos Web.
![Page 35: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/35.jpg)
XML• El problema con HTML es que es un
lenguaje que presenta muchas irregularidades en su construcción, como etiquetas agregadas al lenguaje, etiquetas que no cierran
• Los documentos de XML tienen dos características principales: están bien formados y son válidos
![Page 36: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/36.jpg)
XML• Se dice que un documento es válido si
para cada etiqueta del lenguaje no tiene errores léxicos.
• Se dice que un documento es válido cuando se representan los elementos del lenguaje con un orden y significado adecuados, a esto se le denomina no tener errores sintácticos y semánticos.
![Page 37: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/37.jpg)
XML• Determinar si un documento está bien
formado consiste en verificar que cumpla la sintaxis básica de los lenguajes de marcados.
• Para HTML la etiqueta <img src=imagen.jpg> es válido en HTML pero no válido en XHTML.
• XHTML es la versión de HTML con la sintaxis estricta de XML.
![Page 38: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/38.jpg)
XML• La forma válida en XHTML es: <img
src=“imagen.jpg”> </img>o bien: <imgsrc=“imagen.jpg”/>
• <IMG src=“imagen1.jpg”/> no es válido
• <imagen/> Es correcta en XML pero no en XHTML.
![Page 39: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/39.jpg)
XML• Un documento bien formado cumple con
las siguientes características:
• Las etiquetas son sensibles a mayúsculas y minúsculas
• Etiquetas que abren deben de cerrar todas
• La última etiqueta que abrió debe de ser la primera en cerrar.
• Los atributos de las etiquetas deben estar encerrados entre comillas.
![Page 40: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/40.jpg)
XML<!—Estructura de un documento en XML <? xml version=“1.0”?> <raíz> <etiqueta1> <otra>Valor</otra>
</etiqueta1> <etiqueta 2 atributo1=“valor”/> <etiqueta3>valor</etiqueta2>
</raíz>
![Page 41: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/41.jpg)
XML<? Xml version =“1.0”?><videoclub> <pelicula id=“1”> <titulo>Bee Movie</titulo> <actor>No descrito</actor> <fecha>2007</fecha> </película> </videoclub>
![Page 42: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/42.jpg)
XML• Algunas herramientas útiles (editores en
XML) son:
• XRAY • XMETAL• XML Spy• XML Notepad • Visual .NET • NetBeans• Otros entornos de programación
![Page 43: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/43.jpg)
XML• Algunos lenguajes que utilizan XML son:
• WML Lenguaje para páginas Web en dispositivos móviles
• XHTML-MP La nueva versión para páginas Web en dispositivos móviles siguiendo la sintaxis de XHTML.
• MathML Lenguaje para crear ecuaciones
![Page 44: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/44.jpg)
XML• VoiceXML es un lenguaje para representar
voz.
• SVG para imágenes vectoriales
• XML es un lenguaje en texto plano por lo que la seguridad es mínima.
• La versión más actual de XML es la uno. Está por aparecer la segunda versión
![Page 45: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/45.jpg)
Referencias• Aho, Sethi, Ullman. Compiladores
Principios, técnicas y herramientas Ed. Addison Wesley.
• Beck,. Software de Sistemas, Introducción a la programación de Sistemas Ed. Addison-Wesley Iberoamericana.
• Kenneth C. Louden. Construcción de compiladores Principios y práctica. Ed. Thomson.
![Page 46: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b47d1a28abb57c91f093/html5/thumbnails/46.jpg)
¿Preguntas?