Historia de la programación
Enviado por adolffff • 23 de Octubre de 2011 • 2.180 Palabras (9 Páginas) • 811 Visitas
Historia de la programación.
La computadora fue inventada para facilitar el trabajo intelectual. Si el hombre tiene algún problema, el diseñador define el algoritmo que resuelve el problema, el programador lo codifica en un lenguaje de programación, el cual la computadora es capaz de "entender", luego la computadora ejecuta el algoritmo expresado como programa en el lenguaje de programación en cuestión, y entrega al hombre la respuesta.
Los lenguajes de programación son el medio de comunicación entre el hombre y la máquina, por lo tanto son una forma de representación del conocimiento.
Los tipos más importantes de lenguajes de programación son:
• Lenguajes Imperativos
Su origen es la propia arquitectura de von Neumann, que consta de una secuencia de celdas (memoria) en las cuales se pueden guardar datos e instrucciones, y de un procesador capaz de ejecutar de manera secuencial una serie de operaciones (ó comandos) principalmente aritméticas y booleanas. En general, un lenguaje imperativo ofrece al programador conceptos que se traducen de forma natural al modelo de la máquina.
Ejemplos: FORTRAN, Algol, Pascal, C, Modula-2, Ada.
• Lenguajes Funcionales
Los matemáticos resuelven problemas usando el concepto de función, que convierte datos en resultados. Sabiendo cómo evaluar una función, usando la computadora, podríamos resolver automáticamente muchos problemas. Este fue el pensamiento que llevó a la creación de los lenguajes de programación funcionales. Además se aprovechó la posibilidad que tienen las funciones para manipular datos simbólicos, y no solamente numéricos, y la propiedad de las funciones que les permite componer, creando de esta manera, la oportunidad para resolver problemas complejos a partir de las soluciones a otros más sencillos. También se incluyó la posibilidad de definir funciones recursivamente. Un lenguaje funcional ofrece conceptos que son muy entendibles y relativamente fáciles de manejar. El lenguaje funcional más antiguo y popular es LISP, diseñado por
McCarthy en la segunda mitad de los años 50. Se usa principalmente en Inteligencia Artificial. En los 80 se añadió a los lenguajes funcionales la tipificación y algunos conceptos modernos de modularización y polimorfismo, un ejemplo es el lenguaje ML.
Programar en un lenguaje funcional significa construir funciones a partir de las ya existentes.
• Lenguajes Lógicos
Otra forma de razonar para resolver problemas en matemáticas se fundamenta en la lógica de primer orden. El conocimiento básico de las matemáticas se puede representar en la lógica en forma de axiomas, a los cuales se añaden reglas formales para deducir cosas verdaderas (teoremas). Gracias al trabajo de algunos matemáticos, de finales de siglo pasado y principios de éste, se encontró la manera de automatizar computacionalmente el razonamiento lógico particularmente para un subconjunto significativo de la lógica de primer orden- que permitió que la lógica matemática diera origen a otro tipo de lenguajes de programación, conocidos como lenguajes lógicos.
También se conoce a estos lenguajes, y a los funcionales, como lenguajes declarativos, porque para solucionar un problema el programador solo tiene que describirlo con axiomas y reglas de deducción en el caso de la programación lógica y con funciones en el caso de la programación funcional.
El PROLOG surgió a principio de los 70 y es el primer lenguaje lógico. Las aplicaciones en la Inteligencia Artificial lo mantienen vivo y útil.
En el caso de la programación lógica, el trabajo del programador es la buena descripción del problema en forma de hechos y reglas. A partir de ésta se pueden encontrar muchas soluciones dependiendo de como se formulen las preguntas (metas), que tienen sentido para el problema.
• Lenguajes Orientados a Objetos
A mediados de los años 60 se empezó a usar las computadoras para la simulación de problemas del mundo real. Pero el mundo real está lleno de objetos, en la mayoría de los casos complejos, los cuales difícilmente se traducen a los tipos de datos primitivos de los lenguajes imperativos. Así surgió el concepto de objeto y sus colecciones (clases de objetos), que permitieron introducir abstracciones de datos a los lenguajes de programación. La posibilidad de reutilización del código y sus indispensables modificaciones, se reflejaron en la idea de las jerarquías de herencia de clases. También surgió el concepto de polimorfismo introducido vía procedimientos virtuales. Todos estos conceptos (que hoy identificamos como conceptos del modelo de objetos) fueron presentados en el lenguaje Simula 67, desde el año 1967, aunque este lenguaje estaba enfocado a aplicaciones de simulación discreta.
Fue en los años 80 cuando surgieron lenguajes de programación con conceptos de objetos encabezada por Smalltalk, C++, Eiffel, Modula-3, Ada 95 y terminando con Java.
El modelo de objetos, y los lenguajes que lo usan, parecen facilitar la construcción de sistemas o programas en forma modular. Los objetos ayudan a expresar programas en términos de abstracciones del mundo real, lo que aumenta su comprensión. La clase ofrece cierto tipo de modularización que facilita las modificaciones al sistema. La reutilización de clases previamente probadas en distintos sistemas también es otro punto a favor. Sin embargo, el modelo de objetos, a la hora de ser interpretado en la arquitectura von Neumann conlleva un excesivo manejo dinámico de memoria debido a la constante creación de objetos, así como a una carga de código fuerte causada por la constante invocación de métodos. Por lo tanto los programas en lenguajes orientados a objetos son ineficientes, en tiempo y memoria, contra los programas equivalentes en lenguajes imperativos, aunque les ganan en la comprensión de código.
• Lenguajes Concurrentes, Paralelos y Distribuidos
El origen de los conceptos para el manejo de concurrencia, paralelismo y distribución está en el deseo de aprovechar al máximo la arquitectura von Neumann y sus modalidades reflejadas en conexiones paralelas y distribuidas.
Esto fue un tema importante sobre todo cuando las computadoras eran caras y escasas; el sistema operativo tenía que ofrecer la ejecución concurrente y segura de programas de varios usuarios, que desde distintos terminales utilizaban un solo procesador, y así surgió la necesidad de introducir algunos conceptos de programación concurrente para programar los sistemas operativos.
Cuando los procesadores cambiaron de tamaño y de precio, se abrió la posibilidad de contar con varios procesadores en una máquina y ofrecer el procesamiento en paralelo (procesar varios programas al mismo tiempo). Esto dio el impulso a la creación de lenguajes
...