Download Breve historia de los lenguajes - Ranther

Document related concepts

Programación funcional wikipedia , lookup

Lisp wikipedia , lookup

Rust (lenguaje de programación) wikipedia , lookup

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.