Download Breve historia de los lenguajes - Ranther
Document related concepts
Transcript
Programación I Lic. Rafael Hernández Resumen de Exposiciones Feb. 16, 2015 Esquemas básicos del ordenador Ordenación temporal. Un ordenador es una maquina diseñada para el procesamiento automático de información. El esquema más sencillo de un ordenador actual es el siguiente: Entrada Computadora – Salida Se denominan dispositivos de entrada a todos aquellos que hacen posible la captura de los datos necesarios para realizar las tareas encomendadas al ordenador. Ejemplos comunes de dispositivos de entrada son los teclados, las tarjetas perforada, y los ratones, pero también lo son los escáner, micrófonos, terminales TRC (Tubos de Rayos Catódicos),... Se denominan dispositivos de salida a todos aquellos que hacen posible la comunicación de los resultados de las tareas realizadas por el ordenador. Ejemplos comunes de dispositivos de salida son los terminales TRC, impresoras. y plotters, pero también lo son altavoces, actuadores mecánicos,... Componentes básicos Globalmente a los dispositivos de entrada y salida se les denomina periféricos. Los dispositivos de almacenamiento de información como discos, diskettes, Cintas,..., también son periféricos que son dispositivos de entrada o salida según se grabe o se lea la información. A los componentes físicos del ordenador se le denomina Hardware y a la información que dirige la realización de las tareas se le denomina Software. El ordenador, aparte de los periféricos, consta de dos componentes principales: Unidad de memoria y unidad central de procesos. Ordenador Unidad Unidad de Memoria central de procesos La unidad de memoria está formada por cientos, miles o millones de celdas de memoria en las que se puede almacenar información y que están identificadas por su dirección (en el sentido postal). La unidad central de procesamiento (CPU) dirige y controla el procesamiento de información que realiza el ordenador y consta de dos partes: la unidad de control y la unidad aritmético - lógica. La unidad de control busca, obtiene, y ejecuta las instrucciones de los programas almacenadas en la memoria. Cuando las instrucciones indican la realización de operaciones aritméticas (+, _,... ) o lógicas ( > , = ..) estas se derivan para ser realizadas en la unidad aritmético-lógica. Resumen Grupo #2 Un lenguaje de alto nivel consiste en palabras que son fáciles de reconocer y recordar para el ser humano, en lugar de secuencia de ceros y unos. Consiste en palabras como WRITE, PROGRAM, BEGIN Y END. Cuando un programa se compila, cada palabra de alto nivel se traduce en una cadena de ceros y unos, que representan introducciones y datos. Los lenguajes de alto nivel varían muchos en que tan altos son. En el nivel más bajo esta el lenguaje ensamblador, donde cada palabra corresponde a una instrucción del procesador de la PC. El lenguaje ensamblador es útil cuando se necesita manipular la computadora. En el lenguaje de PASCAL la suma de dos números correspondientes a esta interpretación se expresa con la instrucción: Z:= X+Y; Con una sintaxis muy próxima a la expresión matemática; si bien su semántica es distinta pues ha de interpretarse del siguiente modo: El valor almacenado en la memoria identificada con el nombre x y el valor almacenado en la memoria identificada con el nombre y han de sumarse almacenando el resultado en el lugar de memoria identificado por el nombre z. Sin embargo, la información que ha de recibir la Unidad Central de Proceso de un ordenador para realizar esta operación puede ser: 0010 0000 0000 0100 0100 0000 0000 0101 0011 0000 0000 0110 Formalización de los lenguajes Los lenguajes de alto nivel son el resultado de investigaciones realizadas desde dos enfoques distintos. El primero desde un punto de vista de un lenguaje formal y el segundo como una solución al problema de ingeniería que surge en la construcción de maquinas procesadoras de información. La formalización de los lenguajes data desde los antiguos griegos. Se puede considerar a Aristóteles como el padre de la lógica formal. Gorge Boole en 1854 proporcionó un nuevo intento en la introducción de símbolos, formulas y axiomas esto permitió construir maquinas lógicas y así poder resolver problemas lógicos. Leonardo Torres construyo “El Ajedrecista” un autómata capaz de jugar ajedrez. Turing y Post en 1936 introdujeron un formalismo de manipulación de símbolos llamada “Maquina de Turing” con el que e puede realizar cualquier computo. Esta fue una vía de comunicación entre los problemas formales de la computación y de la matemática. La unión permitió demostrar que no existe ninguna maquina de Turing que pueda reconocer si una sentencia es o no un teorema de un sistema lógico formal; con ayuda de símbolos matemáticos, es siempre posible programar un ordenador digital capaz de realizar el cálculo, siempre que la capacidad de almacenamiento de información sea la adecuada. Desde el punto de vista de la ingeniería, los progresos en lenguajes de programación han sido paralelos a los diseños de los nuevos ordenadores. Babbage ya escribió programas para sus maquinas, pero los desarrollos importantes tuvieron lugar, igual que en los ordenadores, alrededor de la segunda guerra mundial. Fue en esa época cuando Zuse publico su libro Cálculo y programación. En él aparece por primera vez el concepto de operación de asignación. Este nuevo enfoque es fundamental puesto que el uso sistemático de las asignaciones es lo que distingue la forma de pensar en ciencias de la computación y en matemáticas. Las maquinas de Von Neuman Originalmente la programación de un ordenador era directamente la reordenación de los componentes del ordenador. La idea de producir un programa de ordenador que se pudiera almacenarse en la memoria del ordenador se debe a Von Neuman y apareció en un informe que hizo sobre el ordenador EDVAC. Von Neuman considero la posibilidad de que una palabra formada por 32 bit fuera o bien un numero o bien una instrucción. Una instrucción se codiciaba por un grupo de bits adyacentes y considero sumas, multiplicaciones, transferencia de contenidos de memoria a registros, test, e instrucciones de bifurcación. Así, un programa consistirá en una secuencia de palabras en forma binaria. La EDVAC fue entregada al laboratorio, militar en agosto de 1949, comenzó a operar en 1951 corrió hasta 1961 cuando fue reemplazada por BRLESC. Breve historia de los lenguajes En los años 50 se realizaron varios compiladores primitivos. En 1957 apareció el primer compilador de FORTRAN. El compilador de FORTRAN(FORmula TRANslator) estaba diseñado para traducir a lenguaje maquina expresiones y operaciones matemática. La evolución de los lenguajes de programación ha estado guiada por la evolución de: Los ordenadores y sus sistemas operativos. Las aplicaciones. Los métodos de programación. Los fundamento teóricos. La importancia dada a la estandarización. Podemos resumir la evolución de los lenguajes de programación en la siguiente tabla: ALGORITMOS Y RESOLUCIÓN DE PROBLEMAS CON EL ORDENADOR Pasos en la Resolución La mayoría de las consideraciones son válidas para problemas genéricos y muy pocas son específicas de esta herramienta. 1. Analizar el Problema Comprender el Problema. Especificar los Datos de Entrada. Diseñar un Esquema del Algoritmo. Especificar la manera de proporcionar la respuesta. 2. Realización de la Estrategia Capturar los Datos. Generar Estructuras adecuadas para el Algoritmo. Especificar los Algoritmos. Presentar los Resultados. Cuando la herramienta que se utiliza es el ordenador, la estrategia se ha de realizar en tres pasos: a) Diseño b) Escritura c) Verificación 3. Verificación y Análisis Prueba con Casos Sencillos. Prueba con Casos Complejos. Prueba con Casos Extremos. Analizar el Rendimiento en Casos poco Favorables y Casos Típicos. Refinar los Algoritmos. Refinar la Escritura de los Algoritmos. Usos Múltiples El uso múltiple de los procedimientos para la resolución de problemas con el ordenador implica que los procedimientos han de cumplir los siguientes requisitos: La resolución de un mismo problema con distintos datos y en periodos largos de tiempo obliga a: 1. Realización de procedimientos muy bien verificados. 2. Realización de procedimientos muy bien documentados y escritos con un estilo claro. La resolución de un mismo tipo genérico de problemas o variantes del mismo, con reutilización de las herramientas desarrolladas, obliga a: 1. Realización de procedimientos modulares. 2. Realización de procedimientos muy bien documentados y escritos con un estilo claro. El uso del procedimiento dentro de un equipo por distintas personas para resolver un mismo problema o variantes de él, obliga a: 1. Realización de procedimientos muy bien verificados. 2. Realización de procedimientos modulares. 3. Realización de procedimientos muy bien documentados y escritos con un estilo claro. Tipos de Lenguajes Un lenguaje en programación, es un lenguaje formal diseñado para expresar procesos que puedan ser llevados a cabo por maquinas como las computadoras. Un lenguaje de programación es un conjunto limitado de palabras y de símbolos que representan procedimientos, cálculos, decisiones y otras operaciones que puede ejecutar una computadora. Los tipos de lenguaje en Pascal pueden clasificarse en: Lenguaje de procedimiento. Indica cómo se debe ejecutar una tarea, dividiéndola en áreas de procedimiento que especifica cómo se realiza cada una de las tareas. Lenguaje declarativo: estos describen estructuras de datos y las relaciona entre ellas, siendo significativos para ejecutar una determinada tarea, a la vez indican cual es el objetivo de esa tarea. Tipos de lenguajes: *Lenguaje de alto nivel: Es el que permite al programador dar instrucciones a la computadora de manera sintáctica. * Lenguaje de bajo nivel: Estos pueden considerarse como los lenguajes que están más cerca del entendimiento de la maquina, y está condicionado por la estructura de la computadora que los soporta. La diferencia entre el lenguaje de alto nivel y el lenguaje de bajo nivel es que los programas del lenguaje de alto nivel son portátiles es decir que el mismo programa puede funcionar en diferentes maquinas siempre que el lenguaje este soportado por esta máquina, y el lenguaje de bajo nivel es directamente dependiente de la maquina. Compilador: Programa encargado de traducir los programas fuentes escritos en un lenguaje de alto nivel a lenguaje maquina y de comprobar que las llamadas a las funciones de librería se realizan correctamente. Tareas realizadas por el compilador: Verificación de la sintaxis Transformación a código maquina Optimización Pascal y turbo pascal Características Es un lenguaje relativamente moderno, desarrollada por Niklaus Wirth Se trata de un lenguaje de propósito general. Es especialmente útil para la enseñanza de buenos modos de programación. Posee una regla sencilla de sintaxis. Es un lenguaje muy estructurado. Realiza una comprobación exhaustiva de tipos de datos. El programa pascal Es un conjunto de instrucciones que siguen la sintaxis y la estructura del pascal La estructura genérica es Program nombre (ficheros); Declaraciones Begin Sentencias End Ficheros que contienen los datos de entrada y salida: Input Output Todos los símbolos que se encuentren entre los paréntesis ( ) son comentarios que sirven para hacer as legible el programa. También los símbolos compuestos (‘ y‘) sirven para delimitar el principio y fin de un comentario. PALABRAS RESERVADAS Las palabras Program, Begin, End, Input, y Output, y otras son identificadores que permiten al compilador PASCAL interpretar el programa y no se pueden utilizar con otros fines. En la parte del programa reservada para declaraciones se incluyen diversos tipos de declaraciones: USES: se utiliza para especificar el nombre las unidades donde se almacenan otros códigos de Pascal. CONST: Indica que se ha acabado la parte iniciada por USES y se empieza la parte de declaración de las constantes que aparecen en el programa. TYPE: se inicia la declaración de tipos de datos definidos por el programador. VAR: la especificación del tipo de dato que corresponde a las variables que se utilizan en el programa.