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