Está en la página 1de 5

PARADIGMAS DE PROGRAMACIÓN

CONCEPTOS PARADIGMAS
 Thomas Kuhn, en su libro publicado en 1962, TheStructure of ScientificRevolutions, refiere el concepto a la forma en
que un científico percibe al mundo y a la estructura de teorías y suposiciones que modifican esta percepción.
Otro punto importante para nuestro interés es el señalamiento que hace Kuhn acerca de cómo el éxito de un
paradigma es consecuencia de su efectividad para resolver algún problema. En breve, un paradigma es el resultado
de un proceso social en el cual un grupo de personas desarrolla nuevas ideas y crea principios y prácticas
alrededor de estas ideas, y no solamente un conjunto de prácticas y conocimientos objetivamente validado.
 Un paradigma está constituido por los supuestos teóricos generales, las leyes y las técnicas para su aplicación que
adoptan los miembros de una determinada comunidad científica. Esto es:
Las leyes explícitamente establecidas y los supuestos teóricos. Por ejemplo, las leyes de movimiento de
Newton forman parte del paradigma newtoniano y las ecuaciones de Maxwell forman parte del paradigma que
constituye la teoría electromagnética clásica.
El instrumental y las técnicas instrumentales necesarios para hacer que las leyes del paradigma se refieran al
mundo real. La aplicación en astronomía del paradigma newtoniano requiere el uso de diversos telescopios, junto
con técnicas para su utilización y diversas técnicas para corregir los datos recopilados.
Un componente adicional de los paradigmas lo constituyen algunos principios muy generales que guían el
trabajo dentro del paradigma.
 Podemos decir que, los paradigmas son marcos de referencia que imponen reglas sobre cómo se deben hacer las
cosas, indican qué es válido dentro del paradigma y qué está fuera de sus límites. Un paradigma distinto implica
nuevas reglas, elementos, límites y maneras de pensar, o sea implica un cambio.
 Los paradigmas pueden ser considerados como patrones de pensamiento para la resolución de problemas.
 Un paradigma es un modelo o esquema fundamental que organiza nuestras opiniones con respecto a algún tema en
particular. Los paradigmas establecen límites adoptados por los miembros de una comunidad científica para resolver
problemas sustentados por los principios, leyes, supuestos teóricos y técnicas que la conforman.

Paradigmas de Programación

 Robert Floyd los definió como un proceso de diseño que va más allá de una gramática, reglas semánticas y
algoritmos, sino que es un conjunto de métodos sistemáticos aplicables en todos los niveles del diseño de programas.
Esto es
Representan un enfoque particular o filosofía para la construcción del software. No es mejor uno que otro sino que
cada uno tiene ventajas y desventajas. También hay situaciones donde un paradigma resulta más apropiado que
otro.
 Los paradigmas de programación son propuestas tecnológicas adoptadas por la comunidad de desarrolladores que se
enfocan a resolver uno o varios problemas definidos y delimitados.
 Un paradigma de programación es un modelo básico de diseño y desarrollo de programas, que permite producir
programas con unas directrices específicas, tales como: estructura modular, fuerte cohesión, alta rentabilidad, etc.
 Un paradigma de programación es una colección de modelos conceptuales que en conjunto modelan el proceso de
diseño y determinan la estructura de un programa. Esa estructura conceptual de modelos está pensada de forma que
los modelos determinan la forma correcta de los programas y controlan el modo en que el desarrollador piensa y
formula soluciones, que luego son implementadas en un lenguaje de programación. Para que este proceso sea efectivo
las características del lenguaje deben reflejar adecuadamente los modelos conceptuales de ese paradigma. Cuando un
lenguaje refleja bien un paradigma particular, se dice que soporta el paradigma, y en la práctica un lenguaje que
soporta correctamente un paradigma, es difícil distinguirlo del propio paradigma, por lo que se identifica con él.

PARADIGMAS DE PROGRAMACIÓN

Paradigma Imperativo
 En el paradigma imperativo se describen sentencias que modifican el estado de un programa. En este paradigma
se expresa como debe solucionarse un problema especificando una secuencia de acciones u algoritmos 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 el
mantenimiento y la calidad de los programas imperativos.

Paradigma Declarativo
 Al paradigma imperativo se le contrapone el paradigma declarativo en el que se describe la lógica de computación
necesaria para resolver un problema sin describir un flujo de control de ningún tipo. Efectivamente, en la
programación declarativa no es necesario definir algoritmos ya que se detalla la solución del problema en lugar de
cómo llegar a esa solución.
En la programación declarativa, la solución es alcanzada a través de mecanismos internos de control pero no se
especifica exactamente como llegar a ella. Las variables son utilizadas con transparencia referencial, es decir una
expresión puede ser sustituida por el resultado de ser evaluada en el programa sin alterarlo semánticamente.
Dentro de esta categoría se engloban la programación, la programación lógica y la programación restringida o
con restricciones entre otras.
Diferencias principales
La principal diferencia entre ambos paradigmas radica en 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.

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 sí.

El siguiente cuadro describe las principales diferencias entre ambos paradigmas

¿Cómo diferenciar una de la otra?


Podemos diferenciarlas sin temor a equivocarnos en los siguientes supuestos:
 Un programa que describe que problemas deben resolverse pero no como, está programado con programación
declarativa
 Cualquier programa que evita los efectos secundarios o es referencialmente transparente, está programado con
programación declarativa
 Todo lo que no cuadre con las dos afirmaciones anteriores usa programación imperativa o una mezcla de ambas

PARADIGMA IMPERATIVO
Los elementos más importantes de este paradigma son:
 Variables: Son elementos que se crean en memoria para almacenar un valor que puede cambiar a lo largo de la
ejecución del programa. El funcionamiento del paradigma imperativo sería imposible sin las variables, ya que los
estados de un programa son representados y diferenciados por su conjunto de variables y sus contenidos.
 Tipos de datos: Son abstracciones que representan el conjunto válido de valores que puede almacenar una variable.
 Expresiones: Aunque son la forma fundamental de programar instrucciones, en la programación imperativa su papel
más importante está en las sentencias de asignación. Una sentencia de asignación sirve para modificar el valor de una
variable y así cambiar el estado de un programa. Las asignaciones pueden utilizar operadores. Los operadores
empleados pueden ser matemáticos, lógicos o una combinación de ambos.
 Estructuras de Control: Las estructuras de control son mecanismos que un lenguaje requiere para realizar dos tareas
indispensables:
1. Seleccionar una opción entre dos o más flujos de control alternativos (sentencia si, según, etc.)
2. Iterar la ejecución de una serie de sentencias. Las sentencias de iteración representan el verdadero poder del
cómputo, ejecutan un bloque de sentencias desde cero hasta un número teóricamente infinito de veces (sentencias
mientras, repetir, para, etc.)

PARADIGMA FUNCIONAL
Es un tipo de paradigma declarativo. Está basado en el concepto matemático de función:

El paradigma funcional considera al programa como una función matemática, donde el dominio representaría el conjunto
de todas las entradas posibles (inputs) y el rango sería el conjunto de todas las salidas posibles (outputs). La forma en que
funciona puede ser entendida como una caja negra

Al observar la figura anterior, podríamos pensar que cualquier tipo de programación podría ser clasificada como
programación funcional y esto es relativamente cierto a excepción de unos puntos claves:
En los lenguajes funcionales no existe el concepto de variables y consecuentemente tampoco existen operaciones de
asignación. Aunque podría parecer que los parámetros de una función se comportan como una variable (puesto que
pueden llevar un nombre y su uso es de hecho parecido al de las variables), esto es incorrecto: El valor de los parámetros
es dado como fijo al inicio de la función.
La existencia de una propiedad llamada transparencia referencial (Referentialtransparency) que indica que una función
sólo depende de sus parámetros y que tendrá efecto únicamente en su resultado, por lo que podríamos llamar a una
función arbitrariamente sin tener efectos colaterales en el resto de las computaciones.
Una función puede ser utilizada como parámetros y resultados de cualquier otra función. Los lenguajes más utilizados
dentro de este paradigma son Standard ML,Haskell y Scheme.

PARADIGMA LÓGICO
El paradigma lógico difiere de forma importante de otros paradigmas. No sólo en su sintaxis o semántica, sino que en él la
lógica representa conocimiento, el cual es manipulado mediante inferencias. A diferencia de los demás paradigmas,
trabajar en este significa especificar qué hacer y no cómo hacerlo, por ello son llamados lenguajes declarativos. El
proceso general de la programación lógica es que a partir de un conjunto de reglas (axiomas) e inferencias podamos
comprobar nuevas proposiciones que nos sean relevantes. Este proceso está basado en reglas de lógica de primer orden.
Al ser un paradigma bastante abstracto vale la pena esclarecerlo a través de algunos ejemplos. Para ello se utilizará
nociones de SQL el cual se estima es ampliamente conocido. Definamos un conjunto de películas mexicanas inmortales
con algunos de sus atributos:
En estos dos ejemplos, hemos declarado únicamente que es lo que queríamos hacer con nuestro conjunto, pero no
definimos aspectos como, cuantas veces iterar alguna instrucción, especificaciones para hacer cada comparación, etc.
Esta es la idea subyacente en la programación lógica. El lenguaje de programación más conocido es Prolog.

PARADIGMA ORIENTADO A OBJETOS


Es un tipo de paradigma imperativo en el cual las variables claves de desarrollo son entidades denominadas objetos, las
cuales a su vez agrupan internamente conjuntos de variables denominadas atributos y conjuntos de funciones o
procedimientos denominados operaciones.
Las operaciones de los objetos definen sus responsabilidades o comportamiento. El conjunto de los valores asignados a
los atributos del objeto se denomina estado. El otro aspecto fundamental de este paradigma es el estudio de las
interrelaciones entre objetos. Cuando un objeto necesita un servicio (un método de un objeto) que brinda otro objeto, el
primero se lo solicita por medio un mensaje. De esta forma una aplicación orientada a objetos es una secuencia de
mensajes que los objetos se envían entre sí para colaborar en la realización de una tarea específica. La forma en que se
realiza el envío y respuesta de mensajes depende del lenguaje de programación, a esto se denomina protocolo de
mensajes.

EJEMPLOS DE LENGUAJES PARA DIVEROS PARADIGMAS

Algunos lenguajes de programación pueden soportar múltiples paradigmas de programación. Por ejemplo, C++ puede
ser empleado para desarrollar software utilizando para ello un modelo de programación puramente orientado a objetos o
bien puramente estructurado. En casos como el de C++, los programadores los deciden que paradigma utilizar.
Por otro lado, algunos lenguajes han sido diseñados para soportar un único paradigma de programación, ese es el caso de
Smalltalkque soporta únicamente la programación orientada a objetos o Haskellque solo soporta la 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 del efecto secundario en las funciones mientras que en la programación estructurada se desaprueba o
incluso elimina el uso de la sentencia goto.
Es realmente común el diseño de lenguajes que soporten múltiples paradigmas de programación. Estos lenguajes son
aquellos que soportan al menos dos paradigmas. Dentro de esta categoría podemos encontrar nuevas caras 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

También podría gustarte