Los paradigmas de programacion que son y sus principales diferencias
Los paradigmas de programación
El paradigma de programación es una forma o estilo de programación de software. Hay muchas formas de diseñar lenguajes de programación y varias formas de trabajar para obtener los resultados que necesitan los programadores. Es un conjunto de métodos sistemáticos aplicables a todos los niveles de diseño de programas para resolver problemas computacionales
Algunos lenguajes de programación pueden admitir múltiples paradigmas de programación. Por ejemplo, C ++ se puede utilizar para desarrollar software que utilice modelos de programación puramente estructurados o orientados a objetos. En una situación como C ++, es el programador quien decide qué usar
algunos lenguajes están diseñados para admitir un único paradigma de programación, como Smalltalk, que solo admite programación orientada a objetos, o Haskell, que solo admite programación funcional. Algunos paradigmas prohíben el uso de ciertos mecanismos o técnicas. Por ejemplo, en la programación funcional, se elimina el uso de efectos secundarios en las funciones, mientras que en la programación estructurada, el uso de sentencias goto no se recomienda o incluso se elimina. Es muy común diseñar lenguajes que admitan múltiples paradigmas de programación. Estos lenguajes son los que soportan al menos dos paradigmas. En esta categoría, podemos encontrar caras nuevas y viejos conocidos:
- Scala: Imperativo, orientado a objetos, funcional, genérico y concurrente
- Erlang: Funcional, concurrente y distribuido
- Perl: Imperativo, orientado a objetos y funcional
- PHP: Imperativo, orientado a objetos, funcional y reflexivo
- JavaScript: Imperativo, orientado a objetos (prototipos) y funcional
- Java: Imperativo, orientado a objetos, reflexivo y genérico
- Python y Ruby: Imperativo, orientado a objetos, reflexivo y funcional
- C++: Imperativo, orientado a objetos, funcional y genérico
- C#: Imperativo, orientado a objetos, funcional (lambda), reflexivo y genérico
Estos son algunos ejemplos, hay lenguajes como Oz que soportan nueve paradigmas de programación, para unos tiene éxito y para otros no. En cualquier caso, en este artículo no discutiremos sobre el éxito de apoyar uno, dos, seis o diez paradigmas, dejamos que todos decidan.
programación imperativa:En este paradigma se expresa como debe solucionarse un problema especificando una secuencia de acciones a realizar a través de uno o más procedimientos denominados subrutinas o funciones.
Dentro de esta categoría se engloban la programación estructurada que restringe el uso de la instrucción goto, la programación modular y la programación orientada a objetos. Cada una de estas extensiones o evoluciones han permitido mejorar la mantenibilidad y la calidad de los programas imperativos.
Programación imperativa;En la programación imperativa se describen sentencias que modifican el estado de un programa. En muchos sentidos la programación imperativa es la programación natural para las CPUs que se basan en ese paradigma al nivel más básico.
En este paradigma se expresa como debe solucionarse un problema especificando una secuencia de acciones a realizar a través de uno o más procedimientos denominados subrutinas o funciones.
Dentro de esta categoría se engloban la programación estructurada que restringe el uso de la instrucción GOTO, la programación modular y la programación orientada a objetos. Cada una de estas extensiones o evoluciones han permitido mejorar la mantenibilidad y la calidad de los programas imperativos.
La programación declarativa :es lo opuesto a la programación imperativa, que describe la lógica computacional necesaria para resolver un problema sin escribir ningún tipo de flujo de control. De hecho, la programación declarativa no requiere que defina un algoritmo porque describe en detalle la solución al problema, no la solución al problema. En la programación declarativa
, la solución se logra mediante un mecanismo de control interno, pero no se especifica la forma exacta de lograrlo. Las variables se utilizan para la transparencia referencial. Es decir, la expresión se puede utilizar en lugar del resultado evaluado por el programa sin ningún cambio semántico.
Esta categoría incluye la programación funcional más expresiva y de alto nivel de Haskell, programación lógica (ampliamente utilizada en la academia) donde se dice que Prolog es el campeón, procesamiento de programación limitado o limitado, etc. Está incluido.
En un lenguaje puramente funcional como Haskell, todas las funciones son puras. Es decir, no hay efectos secundarios y los cambios de estado se expresan solo como funciones de transformación de estado. Aunque no es obligatorio, a menudo proporciona un mecanismo para describir la acción de una función como una secuencia de pasos.
Diferencias principales
La principal diferencia entre ambos paradigmas es que en la programación imperativa se describe paso a paso un conjunto de instrucciones que han de ejecutarse con la finalidad de variar el estado del programa y resolver un problema para hallar una solución. Es decir, se describe un algoritmo en el que se detallan los pasos secuenciales necesarios a seguir para la resolución de un problema.
Y en la programación declarativa solo se describe el problema pero no los pasos necesarios para llegar a su solución, la cual es hallada mediante mecanismos internos de inferencia de información a partir de la descripción del problema en si.
La programación imperativa se basa en la máquina de Turing mientras que la programación declarativa se basa en el cálculo lambda.
La programación orientada a objetos.:
Bueno, como ya he dicho anteriormente, la programación orientada a objetos es una forma de programación imperativa puesto que al programar orientando a objetos se describe la secuencia que debe seguir el programa para resolver un problema dado.
La diferencia con otras formas de programación imperativas como la programación estructurada es que en la orientación a objetos se hace uso de estructuras de datos llamadas objetos que aglutinan propiedades y métodos conjuntamente con sus interacciones.
Un objeto es una estructura abstracta que describe con la mayor fiabilidad posible un objeto del mundo real y como se relaciona o interactúa con el resto del mundo que lo rodea a través de interfaces. La programación orientada a objetos se basa también en conceptos como la abstracción de datos, la encapsulación, los eventos, la modularidad, la herencia y el polimorfismo
mi conclusion
La diferencia entre la programación estructurada y la programación orientada a objetos es enorme, pero en realidad la mayor diferencia está en las ramas superiores. La diferencia entre programación imperativa y programación declarativa es mucho más seria y compleja que la diferencia entre los diferentes submódulos de programación imperativa.
No sé lo que depara el futuro. Ni siquiera tengo mi opinión exacta, pero no debes ignorar lenguajes como Haskell y tratar de entender el modelo de programación declarativa que estás desarrollando como software. Paramos a los expertos en desarrollo y, sobre todo, a las mentes abiertas y las polémicas estériles.
Jonnathan isaza Rendon
estudiante ingenieria de software
Comentarios
Publicar un comentario