Paradigmas de programación: principios básicos de programación
Los paradigmas de programación son los principios fundamentales de la programación de software. Lo más fácil es planteárselos como estilos de programación fundamentalmente diferenciados que, en consecuencia, generan códigos software que están estructurados de forma distinta.
El concepto clásico es el de la programación imperativa, en la que se define claramente en el código fuente qué pasos debe ejecutar un programa y en qué secuencia. Sus subtipos son la programación procedimental y la orientada a objetos. Según el principio de la programación declarativa, solo se describe lo que debe solucionar el software (es decir, solo el resultado y no los pasos individuales). Subtipos del paradigma declarativo son la programación funcional y la lógica. ¿Cómo se distinguen entre sí los citados paradigmas de software?
Programación imperativa: el paradigma de programación clásico
Entre los paradigmas de programación de software, la programación imperativa (del latín imperare, ordenar) se considera el paradigma clásico. Los primeros lenguajes de programación y, por extensión, también los primeros programas informáticos, se basaban completamente en este enfoque, que prevé una secuencia regularizada de órdenes o instrucciones determinadas. Este paradigma de programación es la base, por ejemplo, de los veteranos lenguajes Pascal y C, así como de todos los lenguajes ensambladores, entre otros. En la programación imperativa, el centro de atención radica, entre otras cosas, en trabajar lo más cerca posible del sistema. Como consecuencia, el código de programación resultante es fácil de comprender y, a la vez, muy abarcable.
La programación estructurada, la procedimental y la modular son tres enfoques adicionales subordinados al paradigma de programación imperativa para escribir y estructurar código software.
Puedes descubrir más acerca de la programación imperativa en nuestro artículo de la Digital Guide.
Programación estructurada
El enfoque estructurado de programación constituye una forma simplificada de programación imperativa. La principal modificación del principio básico radica en que, en lugar de instrucciones de salto absolutas (instrucciones que provocan que el procesamiento no continúe con la siguiente instrucción, sino en otro lugar) este paradigma de programación de software prevé el uso de bucles y estructuras de control. Un ejemplo de ello es el uso de “do...while” para realizar una instrucción de forma automática siempre que se dé una determinada condición (al menos una vez).
Programación procedimental
El paradigma de programación procedimental amplía el enfoque imperativo con la posibilidad de desglosar algoritmos en porciones manejables. Estos se denominan como procedimientos, dependiendo del lenguaje de programación, o también como subprogramas, rutinas o funciones. El sentido y el propósito de esta distribución es hacer que el código de programa sea más claro y evitar las repeticiones innecesarias de código. Mediante la abstracción de los algoritmos, el paradigma de software procedimental representa un paso decisivo desde los lenguajes ensambladores simples hasta los lenguajes estándar complejos.
Programación modular
La programación modular también se clasifica como un subtipo del paradigma de programación imperativo. En principio, es muy similar al enfoque procedimental, o más bien lo adapta a los requerimientos de proyectos de software mayores y más amplios. En este sentido, el código fuente se divide específicamente en bloques parciales lógicos independientes los unos de los otros para proporcionar más transparencia y facilitar el proceso de debugging (resolución de errores). Los bloques parciales individuales, denominados módulos, se pueden probar por separado antes de vincularlos posteriormente a una aplicación conjunta.
Programación declarativa: paradigmas de software del pasado más reciente
De forma paralela a la evolución continuada del hardware y el software, con el enfoque declarativo se desarrolló un paradigma alternativo para la programación de código. El principio fundamental de la programación declarativa radica en la descripción del resultado final que se busca. Por lo tanto, en primera línea se encuentra el “qué” del resultado y no el “cómo” de los pasos que llevan a la solución, como es el caso en la programación imperativa. Esto provoca que el código de la programación declarativa sea más difícil de comprender debido al alto grado de abstracción, aunque resulta muy corto y preciso.
Dentro de los subtipos del paradigma de programación declarativa, existen más diferencias que dentro del estilo imperativo. Asimismo, su definición y clasificación no es siempre exacta. Los dos enfoques más importantes del paradigma de programación declarativa son la programación funcional y la lógica.
Puedes descubrir más acerca de la programación declarativa en el artículo enlazado de nuestra Digital Guide.
Programación funcional
Las funciones existen en cualquier lenguaje de programación estándar. Sin embargo, los enfoques funcionales del desarrollo de software cuentan con funciones de una clase especial:
Un programa de programación funcional consta de llamadas de función concatenadas en las que cada parte del programa se interpreta como una función. En este sentido, las funciones dentro de la programación funcional pueden adoptar distintas “estructuras”. Por ejemplo, se pueden vincular entre sí como datos o se pueden utilizar en forma de parámetros. Asimismo, se pueden utilizar como resultados de función. En contraposición, el paradigma se ocupa de que no haya asignaciones independientes de valores.
Los subtipos de la programación declarativa son muy importantes para la informática en general y al mismo tiempo cuentan con aplicaciones muy versátiles. El tratamiento especial de funciones permite a los programadores que trabajan de forma funcional componer y aplicar nuevas normas de cálculo de gran alcance a partir de funciones.
Puedes descubrir más acerca de la programación funcional en el artículo correspondiente de nuestra Digital Guide.
Programación lógica
El paradigma de software lógico, denominado también como programación predicativa, se basa en la lógica matemática. En lugar de una sucesión de instrucciones, un software programado según este principio contiene un conjunto de principios que se pueden entender como una recopilación de hechos y suposiciones. Todas las solicitudes al programa se procesan de forma que el intérprete recurre a estos principios y les aplica reglas definidas previamente para alcanzar el resultado deseado.
Puedes descubrir más acerca del método de la programación lógica en el artículo correspondiente que aborda la temática más detalladamente.
Comparativa de los paradigmas de programación
Paradigma de programación imperativa | Paradigma de programación declarativa |
---|---|
“¿Cómo?” | “¿Qué?” |
Clásico. | Nueva corriente. |
Un programa según este paradigma consta de instrucciones sucesivas que indican al ordenador aquello que debe computar y hacer y en qué secuencia. | Un programa según este paradigma consta de instrucciones que determinan cómo debe proceder un programa con una petición. Los cálculos se llevan a cabo mediante la manipulación de valores y el proceso se controla mediante el procedimiento de recursión. |
El nombre viene del latín “imperare”, que significa “ordenar”. | El nombre viene del latín “declarare”, que significa “denominar”. |
Se predetermina la vía de solución deseada. | Se predetermina el resultado deseado. |
Lenguajes de programación típicos serían C, Pascal, Fortran, ALGOL y los denominados lenguajes ensambladores. | Lenguajes de programación típicos serían Lisp, ML, Haskell, F#, Prolog y Oz. |