jueves, 24 de agosto de 2017

LOS PARADIGMAS DE PROGRAMACIÓN

LOS PARADIGMAS DE PROGRAMACIÓN

Un paradigma es una forma de representar el conocimiento, en este caso es la forma de analizar, diseñar e implementar una solución computacional, es un enfoque particular son diferentes cada uno tiene sus ventajas y desventajas, ellas se deben tener en cuenta a la hora de tomar la decisión de cual paradigma seleccionar para la solución de un caso de ingeniería de software.

Entre los paradigmas más utilizados están:

El paradigma imperativo es considerado el más común. por ejemplo, por el C, son conjuntos de instrucciones que indican como realizar una operación o calculo en el computador cambian de estado las variables que se declaran inicialmente, llevándolas a un estado final.  Los primeros lenguajes imperativos fueron los lenguajes de máquina de los computadores originales. En estos lenguajes, las instrucciones fueron muy simples, lo cual hizo la implementación de hardware fácil.  

A lenguajes como C se les llama estructurados porque permiten el manejo de las conocidas estructuras de datos y las funciones que se pueden llamar desde otras funciones facilitando la reutilización de código.


El paradigma funcional está representado por la familia de lenguajes LISP, en particular Scheme. Los programas escritos en un lenguaje funcional están constituidos únicamente por definiciones de funciones, entendiendo éstas no como subprogramas clásicos de un lenguaje imperativo, sino como funciones puramente matemáticas.

 El paradigma lógico, un ejemplo es PROLOG. La programación lógica comprende dos paradigmas de programación: la programación declarativa y la programación funcional. La programación declarativa gira en torno al concepto de predicado, o relación entre elementos. La programación funcional se basa en el concepto de función (que no es más que una evolución de los predicados), de corte más matemático.
La programación lógica permite formalizar hechos del mundo real, inicialmente se proponen ciertos predicados iniciales, y unas restricciones que nos permiten comprobar o negar hipótesis (afirmación sobre el tema analizado como parte del mundo real que se debe comprobar o refutar).

Paradigma de Programación con restricciones, trabaja en conjunto con el paradigma de programación lógico, se especifica un conjunto de restricciones, las cuales deben satisfacer una solución, en vez de especificar los pasos para obtener dicha solución.  Se trata de buscar un estado en el cual una gran cantidad de restricciones sean satisfechas.

El paradigma orientado a objetos. (POO) represento un gran paso en la ingeniería del software, ya que presentaba un modelo de objetos que parecía encajar de manera adecuada con los problemas reales. La cuestión era saber descomponer de la mejor manera el dominio del problema al que nos enfrentáramos, encapsulando cada concepto en lo que se dio en llamar objetos y haciéndoles interactuar entre ellos, habiéndoles dotado de una serie de propiedades.

Programación dirigida por eventos: El creador de un programa dirigido por eventos debe definir los eventos que manejará su programa y las acciones que se realizarán al producirse cada uno de ellos, lo que se conoce como el manejador de evento. Los eventos soportados estarán determinados por el lenguaje de programación utilizado, por el sistema operativo e incluso por eventos creados por el mismo programador. Por ejemplo Visual Basic ó el framework .NET.




Programación Orientada a Aspectos
Relativamente reciente cuya intención es permitir una adecuada modularización de las aplicaciones y posibilitar una mejor separación de conceptos. Gracias a la POA se pueden capturar los diferentes conceptos que componen una aplicación en entidades bien definidas, de manera apropiada en cada uno de los casos y eliminando las dependencias inherentes entre cada uno de los módulos.


En todos los paradigmas se utilizan los módulos de programación: Para extender las capacidades predeterminadas de un lenguaje mediante porciones de código empacadas en diferentes módulos, los cuales pueden ser fácilmente insertados en nuestros programas, esto se llama reutilización de código.

Modularidad: Decimos que un programa es modular con respecto a un cambio en una parte dada si el cambio puede hacerse sin cambiar el resto del programa.

Esta técnica modular se conoce con el nombre de procedimiento o función  en algunos lenguajes de programación.  En Python y en otros lenguajes, el término módulo tiene un significado especial.

En java se utilizan los paquetes; un package es una agrupación de clases que tienen una finalidad relacionada. Existe una jerarquía de packages que se refleja en nombres compuestos, separados por un punto (.). Es habitual nombrar los packages con letras minúsculas (como java.util o java.awt), mientras que los nombres de las clases suelen empezar siempre por una letra mayúscula (como ArrayList). El asterisco (*) de la sentencia 3 indica que se importan todas las clases del package. Hay un package, llamado java.lang, que se importa siempre automáticamente.   Las clases de java.lang se pueden utilizar directamente, sin importar el package.)

 - Investigar los diferentes package que existen en java y que funciones nos brindan.

Booch piensa que la modularización deber ser propiedad de un sistema que ha sido descompuesto en un conjunto de módulos cohesivos y débilmente acoplados.

Acoplamiento

Es la interacción entre módulos, sus propiedades deberían ser:
1.       Facilitar la sustitución de un módulo realizando pocos cambios en los otros.
2.       Facilitar el seguimiento y aislamiento de un error (módulo defectuoso).

Cohesión

Es la interacción interna de un módulo: todos los elementos de un módulo han de tener relación.

Bajo acomplamiento (dependencia entre módulos) y alta cohesión (tener relaciones entre los módulos)



Actividad: En grupos de trabajo identificar los lenguajes en los que se ha desarrollado programas (clasificando los lenguajes de programación según el paradigma al que pertenecen)

No hay comentarios:

Publicar un comentario