Iniciación a la programación: Paradigmas de programación (parte 2)

Estándar

En esta segunda parte de la serie de Iniciación a la programación me gustaría hablaros sobre los distintos paradigmas dentro de la programación. Un paradigma, en lo que a la programación se refiere, es la manera en la que un lenguaje de programación afronta un problema cualquiera. Existen distintos tipo de paradigmas de programación con los cuales clasificamos los lenguajes de programación. Los más utilizados son:

Programación imperativa

Empezamos por la programación imperativa, la programación clásica basando en las Máquinas de Turing su funcionamiento. La programación imperativa agrupa sentencias para describir a un computador las órdenes necesarias para solucionar un problema concreto. Esta aproximación es muy parecida a la implementación de la ejecución de las instrucciones en lenguaje máquina por parte del procesador, en el cual entran instrucciones que son derivadas por el flujo de etapas de procesamiento has dar con una solución final.

Este tipo de programación es el estandarte de lenguajes de programación clásicos como son C y BASIC y suelen ser una herramienta muy buena para enseñar a los novatos que comienzan sus estudios los flujos de programa y las sentencias que varían ese flujo continuo (como los bucles o las llamadas a funciones). Como todos sabemos, lenguajes como C se siguen empleando en tareas de alto rendimiento y en el desarrollo de Linux por tratarse de tipos de problemas a resolver de ese estilo.

c

Algoritmo de ordenación Bubble Sort escrito en C (o C++)

Programación declarativa

En contraposición se encuentra la programación declarativa, en la cual la resolución de un problema no pasa por la definición de todos sus pasos intermedios sino que se define (o declara) el problema en sí en términos de reglas, restricciones, condiciones o proposiciones, de manera que la solución al mismo pasa por la ejecución de esa declaración, la cual es transparente a nosotros. Una característica muy importante de este tipo de paradigma es la transparencia referencial, que es que dados unos valores iniciales la evaluación de una expresión declarativa siempre tiene que devolver el mismo resultado, por lo que no está vinculada a efectos colaterales del programa ni al estado del mismo, cosa que si que sucede en la programación imperativa.

Dentro de este grupo se definen subparadigmas, por así decirlo, que se nutren de estas características, como son:

Programación funcional

En la programación funcional no existen flujos de programa no sujetos a una función. Estas funciones no se deben ver como funciones en un lenguaje imperativo, es decir como subrutinas, sino como funciones matemáticas.

Además en este tipo de lenguajes no suelen existir estructuras de tipo bucle, lo que nos obliga a usar la llamada a funciones de manera recursiva (llamadas a la misma función en la que nos encontramos).

Factorial en Lisp

Factorial escrito en Lisp

Algunos lenguajes típicos de la programación funcional son Haskell (funcional puro) o Scheme/Lisp (funcionales híbridos) que principalmente son usados en entornos educativos, pero que también han dado lugar a software real.

Programación Lógica

Este tipo de paradigmas son una aproximación a un lenguaje de proposición lógica aplicados a la resolución de problemas, basándonos en que a las personas nos es más fácil formular y comprender la formulación de un problema de forma matemática que de en forma de sentencias individuales como en la programación imperativa.

Para el desarrollo en este tipo de lenguajes se requiere de una base bien estable de lógica de primer orden y su lenguaje clásico es el Prolog.

Otros

Existen otros tipos como pueden ser la programación algebraica o la programación lógica difusa que no entraremos a comentar, pero que también son interesantes para investigar acerca de ellos.

Programación orientada a objetos

Por último, y no por ello menos importante, la programación orientada a objetos (o POO) es el tipo de programación más usada actualmente y trata de llevar la programación a la definición de objetos basados en lo que serían en la realidad. Dichos objetos están definidos por su estado (los valores de sus atributos en un momento determinado) y su comportamiento (métodos sobre los cuales puede recibir mensajes).

Este tipo de programación es sencilla de explicar a gente que no sepa programar por su similitud con el mundo real en cuando a los objetos se refieren y sus relaciones con otros objetos. Conceptos clave de este tipo de programación son Clase, Herencia, Objeto, Mensaje, etc. No vamos a profundizar demasiado en estos conceptos ya que éste será el paradigma que usaremos para el curso e iremos definiéndolos conforme los vayamos necesitando.

Este tipo de programación fue por primera vez implementada en el lenguaje Smalltalk y posteriormente extendida con C++, una ampliación de C para añadir la capacidad de orientación a objetos. Más tarde fueron más lenguajes de otro tipo de programación los que añadieron dichas capacidades por la potencia que les ofrecía y se popularizó su uso con la llegada del auge de las interfaces de usuario y de la programación dirigida por eventos. En estos momentos el lenguaje en el que pensamos cuando hablamos de orientación a objetos es Java, ya que es el predominante, pero otro tipo de lenguajes modernos se han adaptado para ser completamente orientados a objetos, como PHP.

java

Clase ejemplo acerca de copia de Arrays e impresión usando un StringBuilder en Java

Programación multiparadigma

Como bien os podéis imaginar, la programación multiparadigma no es más que unir características de varios paradigmas en un mismo lenguaje de programación. Esta es la técnica más habitual en la actualidad y es difícil encontrar un lenguaje que represente de manera pura un tipo de paradigma. Un ejemplo clásico de multiparadigma es C++ el cual sigue conservando su manera imperativa heredada de C pero con la posibilidad de definir clases que interactúen con ese programa imperativo.

En este curso

Como ya os avance en la entrada anterior, el lenguaje de programación que usaré (y en el que basaré mucho del aprendizaje) será Java, por lo que no es difícil hilar hasta conseguir llegar a la conclusión de que el paradigma a usar en este curso será la POO (Programación Orientada a Objectos) puesto que es la más usada en este momento, una de las más fáciles de aprender (lo cual no significa que sea la mejor para el aprendizaje) y por tanto la más útil; y, por qué no decirlo, en la que más cómo se siente un servidor.

Espero veros en la próxima entrega, dónde empezaremos a meternos "en el ajo" del asunto.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s