Paradigmas de programación. Visión general (A3C34C1D01)

Paradigmas de Programación. Visión General

A lo largo de la historia de la programación, la forma de desarrollar los programas ha ido variando en función de la necesidad de resolver problemas cada vez más complejos y diversos. Al enfoque o estilo que determina cómo abordar el diseño y la escritura de un programa se le denomina paradigma de programación, y consiste en un conjunto de reglas, técnicas y principios que guían todo el proceso. Los paradigmas de programación están estrechamente relacionados con los lenguajes de programación, ya que cada lenguaje de programación está diseñado para soportar uno o más paradigmas de programación. De hecho, algunos lenguajes de programación son específicos de un solo paradigma, mientras que otros son multiparadigma, pudiendo soportar varios paradigmas diferentes.

En la actualidad, existen distintos paradigmas y cada uno posee características específicas que lo diferencian del resto, relacionados con la forma en que se representan los datos y se manejan las operaciones y el flujo de control. Esta variedad es fruto de la evolución que se ha producido desde el considerado como el paradigma más antiguo, el de la programación imperativa, cuyo origen se remonta al nacimiento de los primeros lenguajes de programación, a finales de los años 50 del siglo XX. La idea sobre la que se fundamenta este paradigma es la de que un programa es una secuencia de instrucciones que se ejecutan en un orden específico. Así, bajo este enfoque, los programas consisten en la descripción precisa y detallada de la secuencia de pasos que hay que realizar para resolver un problema; es decir, el foco se pone en el “cómo” se resuelve el problema. Lenguajes típicos, aunque algunos ya en desuso, son Fortran, C, Pascal, Basic o Cobol.

A finales de la década de 1960, los programas se habían hecho más complejos y surgió la necesidad de mejorar su claridad, calidad y tiempo de desarrollo, lo que derivó en el paradigma de la programación estructurada. El principio en el que se basa es el de que cualquier programa se debe escribir haciendo uso exclusivamente de las tres estructuras de control básicas (secuencia, selección e iteración) y de módulos o procedimientos. Ada, Algol o Modula-2 son lenguajes de programación estructurada. Por otro lado, el lenguaje C es principalmente un lenguaje de programación imperativo, pero también tiene algunas características que lo hacen adecuado para la programación estructurada.

De forma casi paralela, se desarrolla el paradigma de la programación declarativa, según el cual, al contrario que en el paradigma imperativo, los programas se escriben especificando “qué” es lo que debe hacer en vez de “cómo” hacerlo. Para ello, en lugar de instrucciones, se utilizan reglas y propiedades. Algunos lenguajes de programación modernos, como SQL para bases de datos o HTML para el diseño de páginas web, se basan en este paradigma. Dentro de este enfoque, existen dos paradigmas importantes:

  • Programación lógica, según el cual el programa se construye a partir de declaraciones lógicas. El programa establece una serie de hechos y reglas, y utiliza la lógica matemática para deducir conclusiones. El lenguaje de programación Prolog, que se desarrolló en la década de 1970, fue uno de los primeros lenguajes en implementar este paradigma.

  • Programación funcional, que se basa en el uso exclusivamente de funciones matemáticas y en la evaluación de expresiones. Este enfoque no ganó popularidad hasta la década de los 80 del siglo XX. Lisp, Haskell y Scheme son lenguajes funcionales usados básicamente para la investigación y la enseñanza. A pesar de que se ha usado fundamentalmente en la comunidad académica, en los últimos años ha ganado popularidad en la industria del software, gracias a su capacidad para manejar de manera eficiente grandes cantidades de datos y procesos concurrentes. Lenguajes como Clojure, Scala y F# son ejemplos de lenguajes de programación funcional que se utilizan en la industria.

Una década más tarde, durante los años 90 del siglo XX, se popularizó el paradigma de la programación orientada a objetos (POO) como forma de representar la información de forma más parecida a como ocurre en la vida real, así como para permitir la reutilización de código. Bajo este enfoque, un programa se considera una colección de objetos que interactúan entre sí; incluso el propio programa sería un objeto. Algunos de los lenguajes de programación orientada a objetos más populares son Java, Python y C++. Estos lenguajes modernos y multiparadigma permiten, además, la programación imperativa y estructurada.

Otro paradigma que es ampliamente utilizado en la actualidad para el desarrollo de aplicaciones web o móviles es el de la programación orientada a eventos, a pesar de que surgió a principios de la década de 1980. Nace de la necesidad de manejar interacciones de forma asíncrona en sistemas distribuidos y en tiempo real, como sistemas de control industrial y de telecomunicaciones. Sin embargo, ha sido el desarrollo de las interfaces gráficas de usuario lo que le ha hecho ganar popularidad. Los lenguajes de programación Java y C++ soportan este tipo de programación, aunque ganan terreno otros lenguajes más actuales como JavaScript o C#.

Todos estos paradigmas se encuadran dentro de la programación clásica. En la actualidad, empieza a extenderse un paradigma completamente distinto, el de la programación cuántica. Este se basa en hacer uso de los principios de la mecánica cuántica para desarrollar programas, en los que las operaciones pueden superponerse y entrelazarse, permitiendo realizar varias en paralelo. Un ejemplo de lenguaje es Q#.