2. ¿QUE 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 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.
3. ¿QUE ESTUDIA?
Áreas específicas: Sistemas digitales para arquitecturas paralelas y
control de procesos y sistemas reconfigurables.
Inteligencia artificial aplicada a trabajo cooperativo
Sistemas para arquitecturas paralelas y distribuidas
Diseño de sistemas operativos para arquitecturas paralelas y sistemas
distribuidos, herramientas para programación paralela y distribuida.
Sistemas de tiempo real
Diseño y programación de sistemas grandes
4. Herramientas Desarrolladas Con
Teoría De Programación De Sistemas
Las herramientas de programación, son aquellas que
permiten realizar aplicaciones, programas, rutinas,
utilitarios y sistemas para que la parte física de la
computadora, funcione y pueda producir resultados.
Las herramientas de programación más comunes del
mercado, cuentan hoy dia con programas de
depuración o debugger, que son utilitarios que nos
permiten detectar los posibles errores en tiempo de
ejecución o corrida de rutinas y programas.
5. 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.
2. Impresoras estéticas: Una impresora estética analiza un
programa y lo imprime de forma que la estructura del programa
resulte claramente visible.
3. Verificadores estáticos: Un verificador estático lee un
programa, lo analiza e intenta descubrir errores potenciales sin
ejecutar el programa.
6. 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.
5. Compiladores: Tradicionalmente, se concibe un
compilador como un programa que traduce un
programa fuente, como FORTRAN, al lenguaje
ensamblador o de máquina de alguna computadora.
7. Lenguajes
Se llama lenguaje a cualquier tipo de código
semiótico estructurado, para el que existe un contexto
de uso y ciertos principios combinatorios formales.
Existen muchos contextos tanto naturales como
artificiales donde aparecen lenguajes.
8. Lenguajes Naturales
Este tipo de lenguaje es el que nos permite el designar
las cosas 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.
Un LN puede ser modelado fácilmente por un
lenguaje formal, similar a los utilizados en las
matemáticas y la lógica.
9. Otra propiedad de los lenguajes naturales es la
polisemantica, es decir la posibilidad de que una
palabra en una oración tenga diversos significados.
En un primer resumen, los lenguajes naturales se
caracterizan por las siguientes propiedades:
Desarrollados por enriquecimiento progresivo antes de
cualquier intento de formación de una teoría.
La importancia de su carácter expresivo debido
grandemente a la riqueza del componente semántico
10. Lenguajes Artificiales (Formales)
En la actualidad nos encontramos con distintos
lenguajes para para programar y también los campos
de aplicación son variados y completamente distintos.
De acuerdo a la complejidad del problema a resolver
sera necesario hacer una selección adecuada del
lenguaje de programación (incluso se puede generar
el lenguaje de programación propio) que permita
resolver de manera eficiente el problema
11. Hasta hace pocos años, 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
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.
13. 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.
15. Elementos del Proceso de la
comunicación
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.
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.
16. 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.
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.
17. 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.
Referente: Realidad que es percibida gracias al
mensaje. Comprende todo aquello que es descrito por
el mensaje.
18. 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 comunicativo, se puede dar
en cualquiera de sus elementos.
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.
20. 1.4 Traductor y Su Estructura
Traductor: En un sentido orientado hacia la
computación, un traductor, de manera general, es un
software que toma como entrada un programa escrito
en un código llamado fuente y genera como salida
otro programa en un código llamado objeto.
Su estructura podria ser expresada de la siguiente
manera:
código fuente traductor código objeto
21. Algunos ejemplos de traductores son los
compiladores (toma como entrada código en alto
nivel y genera como salida código en bajo nivel), los
interpretes (toma como entrada código en alto nivel y
genera como salida un código intermedio), los
preprocesadores (toma como entrada código en alto
nivel y genera como salida código en alto nivel) y el
ensamblador (toma como entrada código en
ensamblador y genera como salida código en bajo
nivel).
23. Definición. Un intérprete es un programa que ejecuta
un programa escrito en un determinado lenguaje
examinando y ejecutando cada sentencia del programa
una a una, por separado y sin realizar un proceso de
compilación previo.
El intérprete NO traduce la sentencia a código máquina
antes de ejecutarla. En su lugar, identifica el tipo de
sentencia y la ejecuta directamente. El código para
ejecutar la sentencia está contenido dentro del
intérprete que contendrá rutinas para: evaluar una
expresión, almacenar información en memoria,
recuperar datos de memoria, etc.
24. El intérprete contendrá el número de rutinas
necesarias para poder ejecutar cualquier sentencia del
lenguaje que está interpretando.
Ejemplo: C := A + B
1. El intérprete lee la sentencia y determina que es
una asignación.
2. Llamará a una de sus rutinas para evaluar la
expresión a la derecha de la asignación.
3. Esta rutina toma los símbolos A y B, determina
donde están almacenados, obtiene sus valores
actuales y los suma.
25. Compilación e Interpretación
Además de elegir entre compilar o interpretar un
programa, otra opción es combinar ambos procesos
de traducción. En este caso, se realiza una
compilación “parcial” a un código intermedio que es
seguida de un proceso de interpretación. Uno de los
lenguajes más utilizados hoy en día, sobre todo para
el desarrollo de aplicaciones para la Web, que sigue
esta propuesta es el lenguaje Java.
26. En el lenguaje Java el código primero se compila con
el compilador de Java javac. Este compilador genera
un código virtual llamado Byte Code. Este código es
luego interpretado por una Máquina Virtual de Java (o
JVM de Java Virtual Machine) que debe estar
instalada y ejecutándose en la máquina en la que se
desee ejecutar el código compilado con javac.
27. Algunas de las ventajas de compilar frente a
interpretar son:
Se compila una vez; se ejecuta muchas veces
La ejecución del programa objeto es mucho más
rápida que si se interpreta el programa fuente.
El compilador tiene una visión global del programa,
por lo que la información de mensajes de error es más
detallada.
Por otro lado, algunas de las ventajas de interpretar
frente a compilar son:
Un intérprete necesita menos memoria que un
compilador.
Permiten una mayor interactividad con el código en
tiempo de desarrollo.
28. 1.4.1 Lenguajes
Ensambladores
El término ensamblador (del inglés assembler) se
refiere a un tipo de programa informático que se
encarga de traducir un programa o archivo fuente
escrito en un lenguaje ensamblador, a programa o
archivo objeto que contiene código máquina,
ejecutable directamente por la máquina para la que se
ha generado. El propósito para el que se crearon este
tipo de aplicaciones es la de facilitar la escritura de
programas, ya que escribir directamente en código
binario, que es el único código entendible por la
computadora, es en la práctica imposible
29. Funcionamiento
El programa lee el programa escrito en lenguaje
ensamblador y sustituye cada uno de los códigos
técnicos que aparecen por su código de operación
correspondiente en sistema binario.
30. Tipos de ensambladores
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.
31. 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).
32. 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 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.
33. Lenguajes Compiladores
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.
Los programas interpretados suelen ser más lentos
que los compilados, pero los intérpretes son más
flexibles como entornos de programación y
depuración.
34. 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.
35. 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 la
generación de código máquina en varias plataformas
distintas.
El código que genera el Back End normalmente no se
puede ejecutar directamente, sino que necesita ser
enlazado por un programa enlazador (linker).
36. Tipos de compiladores
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.
37. 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.
38. Lenguajes Interpretes
Un intérprete es un traductor que toma un programa
fuente, lo traduce y a continuación lo ejecuta. BASIC
es un lenguaje interpretado.
Se trata de traductores-ejecutores ya que con cada
instrucción realizan un proceso triple de lectura-
traducción-ejecución. Son relativamente lentos, pero
muy buenos para la depuración de programas.
39. Lenguajes Generadores De
Codigo Para Compiladores
Estas herramientas trabajan basadas en un conjunto
de reglas; estas reglas definen la traducción de las
instrucciones del lenguaje intermedio al lenguaje de
máquina.
Para la generación de código, se busca en las reglas
establecidas la proposición que coincida con la
entrada actual; la entrada actual proviene de un árbol.
Un ejemplo de esto seria
40. Entonces el compilador recibe una entrada de
caracteres, por lo general escrita por el programador;
el compilador realiza los análisis: léxico, sintáctico y
semántico, para generar seguidamente el código
intermedio, el código intermedio se genera con
principios de búsqueda de patrones y aplicación de
reglas. Después se hace la optimización del código
intermedio; seguidamente se realiza la generación de
código