lunes, 2 de septiembre de 2013

Paradigmas de Programación

Un paradigma de programación provee (y determina) la visión y métodos de un programador en la construcción de un programa o subprograma. Existen diferentes paradigmas que resultan con diferentes estilos de programación y en diferentes formas de pensar la solución de problemas (con la solución de múltiples “problemas” se construye una aplicación). 

Los lenguajes de programación son basados en uno o más paradigmas.
Por Ejemplo: Smalltalk y Java son lenguajes basados en el paradigma orientado a objetos. El lenguaje de programación Scheme, soporta sólo programación funcional. En cambio Python, soporta múltiples paradigmas. 


Clasificación por paradigmas de programación 

1. Paradigma Imperativo: Describe la programación como una secuencia de instrucciones 
o comandos que cambian el estado de un programa. El código de máquina en general 
está basado en el paradigma imperativo. 

2. Paradigma Declarativo: No se basa en el cómo se hace algo, sino que describe cómo es algo. En otras palabras, se enfoca en describir las propiedades de la solución buscada, dejando indeterminado el algoritmo que es el conjunto de instrucciones usado para encontrar esa solución. Es más complicado de implementar que el paradigma imperativo, tiene 
desventajas en la eficiencia, pero ventajas en la solución de determinados 
problemas. 

3. Paradigma Estructurado: La programación se divide en dos bloques que son: procedimientos y funciones; que pueden o no comunicarse entre sí. Además la programación se controla con secuencia, selección e iteración. Permite reutilizar un código 
programado y otorga una mejor compresión de la programación.

4. Paradigma Orientado a Objetos: Está basado en la idea de encapsular el estado y las operaciones en objetos. En general, la programación se resuelve comunicando 
dichos objetos a través de mensajes. Se puede incluir (no formalmente) dentro de este paradigma, el paradigma basado en objetos, que además posee herencia y subtipos entre objetos. Ejemplo: Simula, Smalltalk, C++, Java, Visual Basic, NET, etc. 
Su principal ventaja es la reutilización de códigos y su facilidad para pensar 
soluciones a determinados problemas. 

5. Paradigma Funcional: Este paradigma concibe a la computación como la evaluación 
de funciones matemáticas y evita declarar y cambiar datos. En otras palabras, hace hincapié en la aplicación de las funciones y composición entre ellas, más que en los cambios de estados y la ejecución secuencial de comandos (como lo hace el paradigma procedimental). Permite resolver ciertos problemas de forma elegante y los lenguajes puramente funcionales evitan los efectos secundarios comunes en otro tipo de programaciones. 

6. Paradigma lógico: Se basa en la definición de reglas lógicas para luego, a 
través de un motor de inferencias lógicas, responder preguntas planteadas al 
sistema y así resolver los problemas. Ejemplo: prolog.