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.3
Historia de los LP
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.