3.
DESARROLLO HISTÓRICO
La idea del paradigma de programación surgió como una forma de
clasificar y organizar diferentes estilos o enfoques en la programación.
Orígenes y Evolución:
1. Paradigmas Iniciales:
o En los inicios de la programación, la mayoría de los lenguajes y
estilos de programación seguían un enfoque imperativo. Este
paradigma se basa en una secuencia de comandos o
instrucciones que cambian el estado del programa de manera
explícita. Lenguajes como FORTRAN y COBOL, desarrollados en
las décadas de 1950 y 1960, son ejemplos tempranos de este
enfoque.
2. Paradigma de Programación Funcional:
o La programación funcional tiene sus raíces en la lógica
matemática y el cálculo lambda, formalizado por Alonzo Church
en la década de 1930. Este paradigma se centra en la evaluación
de funciones matemáticas y evita el uso de estados mutables y
efectos secundarios. Lenguajes como Lisp (1958) y Haskell
(1990) son ejemplos de lenguajes de programación funcionales.
3. Paradigma de Programación Orientada a Objetos (POO):
o El paradigma orientado a objetos fue desarrollado para manejar la
complejidad de sistemas grandes y complejos. Surgió a mediados
de la década de 1960 con el lenguaje Simula 67, diseñado por
Ole-Johan Dahl y Kristen Nygaard. POO se basa en la idea de
"objetos" que encapsulan datos y comportamientos, permitiendo
la modularidad y la reutilización de código.
4. Paradigmas Emergentes:
o Con el tiempo, otros paradigmas han emergido o han sido
formalizados, como la programación lógica (Prolog, 1972), que se
basa en la lógica de predicados, y la programación declarativa,
que describe el "qué" en lugar del "cómo" se debe realizar una
tarea (ej., SQL para bases de datos).
Propósito del Paradigma:
El propósito de los paradigmas de programación es ofrecer diferentes
enfoques para resolver problemas. Cada paradigma trae consigo una
manera distinta de pensar sobre los problemas, lo que puede ser más o
menos adecuado dependiendo del tipo de problema que se quiera
resolver. La existencia de múltiples paradigmas refleja la diversidad de
problemas que los programadores
El primer paradigma en aparecer, primera mitad de los años 50, es
el imperativo, que se caracteriza por un nivel bajo de abstracción. Por lo
que, el código está enfocado en las instrucciones que la computadora
debe seguir, y no necesariamente en la lógica de la funcionalidad que
estamos implementando (Laboratorio, 2024).
El snippet de arriba es un "hello world" escrito en Assembly (una versión
moderna, pero muy parecido a lo que hubieramos visto en los años 50).
Lo único que hace este programa es imprimir el string “Hello, world!”.
El equivalente a todo el código de arriba en JavaScript sería:
JavaScript tiene un altísimo nivel de abstracción. Con lo cual, no
tenemos que preocuparnos de muchos detalles pues JavaScript ya
abstrae para nosotros. Ejm: manejo de memoria, instrucciones del
procesador, etc.
4. APORTES DE CORRADO BOHM Y GUSEPPE JACOPINI; ESDGER
DIJSKSTRA; EDWARD YOURDON
En mayo de 1996, Corrado Böhm y Giuseppe Jacopini demostraron
que un propio programa puede escribirse utilizando tan solo tres tipos de
estructuras de control: secuenciales, condicionales y cíclicas. A esto se
le conoce como teorema de la programación estructurada (Lógica de
programación, 2017).
Estas estructuras de control permiten modificar la secuencia de
ejecución de las instrucciones de un algoritmo y se clasifican mediante
su complejidad, tal y como se muestra en la anterior figura.
Según el mismo Edsger Dijkstra (1989), contribuyó con “el algoritmo de
caminos mínimos”, también llamado “Algoritmo de Dijkstra”, y haber sido
el impulsor de un nuevo paradigma, “la programación estructurada”. Era
conocido por su baja opinión de la sentencia GOTO en programación,
que culminó en 1968 con su artículo “Go To Statement Considered
Harmful”, visto como un paso importante hacia el rechazo de esta
expresión y de su eficaz reemplazo por estructuras de control como el
bucle while.
Uno de los mayores expertos y defensores de los métodos estructurados
es Edward Yourdon, tanto que las expresiones “Yourdon” y “métodos
de análisis y diseño estructurado” son sinónimos. Constantine y Yourdon
definieron nuevos modelos de control del flujo de datos implementando
lo que llamaron transacciones que en realidad son un patrón de diseño
de manejadores de eventos (Campus O, 2011)
En este diagrama se presenta los siguientes procesos:
- Un flujo de datos invoca eventos, lo que Constantine y Yourdon
llamaron “transacciones“.
- Un disparador los envía a manejadores especializados, se llama
“centro de transacciones“.
- Un conjunto de manejadores que se encargan de realizar
operaciones sobre el flujo de datos
Referencias Bibliográficas:
Laboratoria Bootcamp. (s/f). Laboratoria.la. Recuperado el 24 de agosto de 2024, de
https://bootcamp.laboratoria.la/es/topics/paradigms/paradigms/history
Lógica de programación. (s/f). Montealegreluis.com. Recuperado el 24 de agosto de
2024, de https://montealegreluis.com/logica-programacion/docs/programacion-
estructurada.html
E. W. Dijkstra. (1989). On the cruelty of really teaching computing science.
Communications of the ACM, Vol. 32, No. 12, pp. 1398-1404.
Campos, O. (2011, julio 21). Introducción a la programación dirigida por eventos.
Genbeta.com; Genbeta dev. https://www.genbeta.com/desarrollo/introduccion-a-la-
programacion-dirigida-por-eventos