Facultad de Medicina e Ingeniería en Sistemas Computacionales de Matamoros
Enero del 2023
¿Qué es y qué estudia la programación de sistemas? • Programa:
• Sistema: Tipos de Sistemas
• 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. Características de un Sistemas 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 ¿Diferencia entre un técnico y un ingeniero? 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.) 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 Áreas afines en 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 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 Software de sistemas • 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 (Shells de 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. ¿Cómo funciona un programa de computadora? Lenguajes naturales vs. Lenguajes de programación Compilación vs. Interpretación Compilación vs. Interpretación COMPILACIÓN INTERPRETACIÓN
•La ejecución del código traducido •Puede ejecutar el código en cuanto
suele ser más rápida. lo complete; no hay fases adicionales •Solo el usuario debe tener el de traducción. compilador; el usuario final puede •El código se almacena utilizando el usar el código sin él. lenguaje de programación, no el de la VENTAJAS •El código traducido se almacena en máquina; esto significa que puede lenguaje máquina, ya que es muy ejecutarse en computadoras que difícil de entender, es probable que utilizan diferentes lenguajes máquina; tus propios inventos y trucos de no compila el código por separado programación sigan siendo secreto. para cada arquitectura diferente.
•La compilación en sí misma puede •No esperes que la interpretación
llevar mucho tiempo; es posible que incremente tu código a alta no puedas ejecutar tu código velocidad: tu código compartirá la inmediatamente después de cualquier potencia de la computadora con el DESVENTAJAS modificación. intérprete, por lo que no puede ser •Tienes que tener tantos realmente rápido. compiladores como plataformas de •Tanto tú como el usuario final deben hardware en los que deseas que se tener el intérprete para ejecutar su ejecute su código. código. Sistema de procesamiento típico de un lenguaje Fases de un compilador • Preprocesamiento Transformaciones al Archivo Fuente, previas a la Compilación. • Análisis Léxico Reconocimiento de los Elementos del Lenguaje. • Análisis Sintáctico Reconocimiento de la Estructura del Lenguaje. • Análisis Semántico Reconocimiento de la coherencia de la Entrada. • Generación de Código Intermedio Transformación de la Entrada en una representación de código intermedio para una máquina abstracta. • Optimización de Código Mejoras a la representación intermedia que resulten en un código más rápido de ejecutar. . • Generación de Código Transformación del código intermedio en código objeto. • Depuración Reconocimiento de Errores. • Administración de la Tabla de Símbolos Reconocimiento de los nombres de los identificadores utilizados en la Entrada y sus diferentes atributos.