TEMA 1: Introducción 1.1 ¿Qué es un lenguaje de Programación? • Un lenguaje de programación es un conjunto sistemático de reglas para comunicar ideas, ej.: lenguajes naturales, lenguajes de programación... • Diferencias entre los LN y los LP: • Los lenguajes de programación están pensados para una comunicación persona-computador, aunque los LP también sirven para comunicar 2 personas. • El contenido de la comunicación en los LP recibe el nombre de programa (expresiones de soluciones a problemas que son los suficientemente especificas como para proporcionar al receptor del programa información suficiente para obtener la solución). • El medio que usan para esa comunicación tradicionalmente son cadenas de caracteres. • Definición Formal: Lenguaje de programación es un lenguaje pensado para ser usado por una persona para expresar un proceso por el cual un computador puede solucionar un problema. • Procesador | Computador es la maquina que va a dar solución al problema. • Persona programador que actúa como puente del proceso de comunicación. • Proceso actividad que describe el programa. • Problema lo que el sistema o entorno pretende resolver. • Paradigmas: • Paradigma Imperativo : Está basado en el punto de vista del procesador. En el lenguaje imperativo, las órdenes se ejecutan secuencialmente y se utilizan almacenes de datos modificables que son las variables, y ambos conceptos están basados en los códigos máquina de las computadoras. Normalmente son muy eficientes. • Paradigma Lógico : Es un enfoque desde el punto de vista de la persona, se enfrenta al problema desde el punto de vista lógico : Un programa es la descripción lógica del problema expresado de una manera formal. • Paradigma Funcional : El enfoque es el del proceso, en el sentido de que los programas escritos en programación funcional, describen las operaciones deben realizarse para solucionar el problema de manera abstracta. • Paradigma Orientado a Objetos : El enfoque es el del problema. Reflejan la realidad de los problemas que queremos solucionar están compuestos por objetos que se envÃ−an mensajes. • Paradigma Concurrente : Incorpora aspectos de los 4 anteriores paradigmas y permite describir procesos que actúan simultáneamente. 1.2 ¿Por qué estudiar conceptos de LP? • Mejora la capacidad para solucionar el problema. El conocimiento de conceptos importantes de los LP nos puede ayudar a elegir un mejor enfoque del problema. • Incrementa la capacidad para hacer mejor uso de los LP. • Ayuda a realizar una buena elección del lenguaje para cada problema. Para cada problema hay unos lenguajes más adecuados que otros. • Facilita el aprendizaje de nuevos LP. • Permite adquirir algunas capacidades útiles para el diseño de nuevos lenguajes. 1 Historia de los LP 1.3 • Finales de los 40 o Era Prelinguar (época anterior a la aparición de los LP). • Los programas incluÃ−an manejos de cables, interruptores ... • Hay una excepción debida a Konrad Zare que en 1944 diseñó el lenguaje PlanKalKül, con ideas muy avanzadas: • Se incluÃ−an variables. • Procedimientos con parámetros • Da mas importancia a la estructura de los programas que a su eficiencia. • Anos 50 o Era del aprovechamiento del “poder” de la máquina. • Se programa en lenguaje ensamblador • Aplicaciones de cálculo numérico. • Pasar fórmulas grandes numéricas a ensamblador. • Esta fue la causa del nacimiento del FORTRAM, el cual ya incluye: • Estructuras de control. • Procedimientos. • Años 60 : Aparecen COBOL, ALGOL 60, TL1, gran cantidad de LP cada uno centrándose en ramas distintas: BASIC : Mayor interacción con el usuario. LISP : lenguaje para computación simbólica, padre de los lenguajes funcionales. • Años 70 : • Preocupación por la potabilidad, construir software que no depende de la maquina en la que se construya. • Preocupación sobre la corrección de los programas y comienza la crisis del SW. • La herramienta que permitió dar solución de estas 2 cosas fue la programación estructurada. • Aparecen lenguajes como PASCAL, C, ALGOL 68. • Años 80 : El énfasis se pone en la reducción de la complejidad (tanto la complejidad de la tarea de programar como la de administrar los programas). • Aparecen lenguajes como ADA, MODULA 2, que posibilitan el uso de módulos. • Aparecen los lenguajes O.O. : SMALLTALK. • Aparecen los lenguajes funcionales modernos : MIRANDA, ML Standard. • Aparecen los lenguajes Lógicos : PROLOG. • Aun se programa en ensamblador. • Años 90 : Son los años de la explosión del hardware paralelo y distribuido. Tema 1: Introducción LPR 1 1 • 2