Programación
Upcoming SlideShare
Loading in...5
×
 

Programación

on

  • 743 views

 

Statistics

Views

Total Views
743
Views on SlideShare
743
Embed Views
0

Actions

Likes
0
Downloads
10
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

     Programación Programación Presentation Transcript

    • INTRODUCCIÓN A LA PROGRAMACIÓN DE SISTEMAS
    • ¿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.
    • ¿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
    • Herramientas Desarrolladas ConTeorí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.
    • 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.
    • 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.
    • 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.
    • 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.
    • 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
    • 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
    • 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.
    • 1.3.3 Proceso De La Comunicación
    • 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.
    • Proceso de transmisión de información de un emisor (A) a un receptor (B) a través de un medio ©. En la transmisión y la recepción de esa información se utiliza un código específico que debe ser “codificado”, por el emisor y “decodificado” por el receptor”.
    • 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.
    • 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.
    • 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.
    • 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.
    • 1.4 Traductor y Su Estructura
    • 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
    • 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).
    • Intérpretes o Traductores
    • 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.
    • 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.
    • 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.
    • 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.
    • 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.
    • 1.4.1 LenguajesEnsambladores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
    • 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.
    • 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.
    • 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).
    • 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.
    • 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.
    • 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 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).
    • 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.
    • 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.
    • 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.
    • 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
    • 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