Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas.

46
Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas

Transcript of Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas.

Page 1: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas.

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.

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.

¿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.

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.

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.

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.

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.

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.

Á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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

Traductor y su Estructura• Ensambladores.

• Compiladores

• Interpretes.

Page 21: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas.

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.

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.

Traductores

Page 24: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas.

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.

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.

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.

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.

Etapas de un compilador

Page 29: Introducción a la Programación de Sistemas M.C. Juan Carlos Olivares Rojas.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

¿Preguntas?