jueves, 15 de abril de 2010

Paradigmas de Programacion

Los paradigmas de programacion hoy en dia son diversos y cuando nos referimos a un paradigma de programacion estamos hablando de la forma en que se programa, un paradigma es un modelo opatron el cual me ayuda a asociar casos similares y a dar solucion basado en practicas anteriores.

Es erroneo pensar que un paradigma de programacion es mejor que otro, simplemente son enfoques diferentes para diferentes situaciones. Puede ser que para un tipo de soluciones se utilize un paradigma que resulta mas conveniente que algotro paradigma que es utilizado para dar soluciones diferentes.
Entre los paradigmas mas utilizados tenemos:
  • Estructurado
  • Modular
  • Orientado a objetos
  • Por eventos
  • Grafico
  • Concurrente
  • Para internet
  • Servicios
Paradigma Estructurado
Ventajas:
  • Programacion en bloques, con una secuencia logica de instrucciones.
  • Facil de entender debido a que no ejecuta una instruccion sin haber terminado de ejecutar la instruccion anterior.
  • Nececita poco mantenimiento al codigo.
  • Identificacion sensilla de errores, porque todas las instrucciones estan enlazadas.
  • Programas mas rapidos:

Desventajas:
  • Dificulta la reusabilidad de codigo.
  • Cuando el codigo crece demasiado, se hace complicada la manupilacion de todo el codigo, para solventar esta situacion se utiliza el paradigma modular que es la evolucion del paradigma estructurado.

Paradigma Modular:
  • La programacion modular es una evolucion del paradigma estructurado y su uso tiene lugar cuando el codigo secuencialmente estructurado se hace muy grande e impide su facil manipulacion.
  • Con la modularizacion logramos reutilizar codigo y facil hubicacion debido a que se organiza de mejor forma.
  • La modularizacion se lleva a cabo a travez de la utilizacion de procedimientos o funciones.
  • Para entender la razon por la que se organiza el codigo utilizando modularizacion se basa en el mensaje "divide y venceras", esto quiere decir que de todo el programa que involucra mucho codigo secuencial podemos analizar y dividir este codigo por PROCEDIMIENTOS bien definidos.
  • Teniendo el codigo dividido en funcionalidad bien definida podemos analizar en que situacion podemos reutilizar este codigo.
  • Las funciones o procedimientos se utilizan a travez de llamadas, enviando parametros y reciviendo parametros de solucion.
Paradigma Orientado a Objetos:
  • El paradigma de programacion orientado a objetos es un paradigma utilizado especialmente por su capacidad de reutilizar codigo.
  • El mantenimiento puede ser facil si se cuenta con un diagrama de clases y si se realizo una abstraccion correcta al momento de crear el modelo.
  • Una clase es un conjunto de objetos que estan relacionados por tener una estructura comun.
  • Un objeto puede ser cualquier cosa de la que nececitemos utilizar en nuestro programa por ejemplo, boton, pantalla, cuadro de texto, etc.. 
 Los objetos tienen sus propiedades que son 1) Identidad  2) Estado  3) Funcionamiento.
  • la identidad de un objeto debe ser unica, descriptiva y sencillamente su nombre con el cual lo vamos a llamar.
  • El estado de un objeto esta dado a travez de variables que guardan la informacion, estas variables pueden ser para el ejemplo del objeto boton: 1) texto  2) color  3) pocicion.
  • El funcionamiento de un objeto se le llama metodo, los metodos son todas las operaciones que el objeto puede realizar por ejemplo para el objeto carro seria: 1) estacionar, 2) arrancar, 3) apagar.
El trabajar con objetos tiene sus caracteristicas que son:
  • Herencia: los objetos no trabajan solos, sino en conjunto con otros objetos por lo cual es necesario que compartan sus metodos y atributos dando lugar a la utilizacion de polimorfismo y encapsulamiento.dicho en otras palabras la herencia es permitir a otros objetos hacer uso de los metodos de otro objeto.
  • Polimorfismo: un metodo significa funcionalidad o procesamiento de las varialbes, pero en ocaciones el mismo metodo es utilizado por diferentes objetos los cuales nececitan una respuesta a la medida, por ejemplo el metodo suma(), si los parametros son dos numeros reales el resultado es la suma aritmetica de los dos valores, mientras que si los parametros son dos cadenas de texto la suma es la union de estas dos cadenas de texto.
  • Abstraccion: la abstraccion consiste en destacar las caracteristicas especiales del objeto, la abstraccion es describir la realidad del objeto.
  • Encapsulamiento: el encapsulamiento significa que un objeto es utilizado de forma independiente, es decir, se ejecuta la llamada y se le envian parametros con los cuales sus metodos hacen la transformacion de informacion y la devuelve en variables de salida pero el funcionamiento del metodo no es visible.
  • Recolector de Basura: el recolector de basura tambien conocido como garbage collector es la propiedad que permite a la instancia de un objeto salir de memoria cuando ya no esta siendo utilizada, es decir los objetos existen pero cuando son utilizados por nuestra aplicacion son subidos a memoria sin embargo cuando deja de ser usado el objeto por nuestra aplicacion este debe de salir de memoria y a esta capacidad se le conoce como recolector de basura. algunos lenguajes incluyen el recolector de basura automatico por ejemplo java, es decir, el programador no tiene que indicar la recoleccion de basura. sin embargo hay otros lenguajes por ejemplo pascal la recoleccion de basura debe de ser programada explicitamente por el programador. 
Paradigma Orientado a Eventos
El paradigma de programacion orientado a eventos es aquel que basado en acciones ejecutadas por el usuario, ejecuta su programacion.

Podemos encionar los siguientes eventos mas utilizados por los usuarios:
1) Click
2) Doble Click
3) Mouse Over entre otros.
  • La programacion orientada a eventos a diferencia de la programacion estructurada o secuencial en donde el usuario no tenia opcion a ejecutar el codigo conforme a su demanda, sino que, el programa secuencial evolutivamente en el tiempo iva procesando la informacion sin opcion a cambios o a detenerse.
  • Visual Basic es un lenguaje orientado a eventos, en donde tenemos una interfaz con multiples botones los cuales esperan el EVENTO Click para ejecutar su codigo.
  • Esto otorga al usuario el control de la secuenica de ejecucion, naturalmente hay que tener cuidado y de alguna manera validar este tipo de errores por ejemplo que el usuario no pueda seleccionar una opcion 2 sin haber pasado por la opcion 1, pero en este caso son las relgas del negocio las que determinan este tipo de restricciones.
  • Las interfaces de usuario tambien conocidas como GUI (Graphic User Interface) se han popularizado gracias a este paradigma de programacion.

Programacion Grafica:
Los lenguajes de programacion grafica tambien llamados lenguajes visuales son aquellos que se programa unicamente con imagenes, iconos, graficas y en definitiva no se utilizan textos.

Equivocamente algunos programadores confunden el hecho de texto en alguna interfaz grafica para decir que es una programacion visual, esto es totalmente falso.

Los lenguajes de programacion visual son los que con ayuda del mouse insertan objetos y especifican comportamiento para que la programacion se de, por ejemplo:
  • circuit maker, arrastra los circuitos y los conecta para luego verificar el comportamiento en una simulacion.
  • blender, crea y anima objetos en 3d.
  • y muchos otros programas con los que sepueden construir rutas, juegos que unicamente insertanto objetos visuales ya se obtiene funcionalidad.
No hay que equivocar el termino programacion visual con un ide en especifico porque en definitiva la programacion visual es un programa que se encarga de dar funcionalidad con objetos sobre una aplicacion.

Programacion Concurrente
La programacion concurrente o paralela se refiere a programas que estan compuestos por varios procesos los cuales se ejecutan simultaneamente, esto puede ser en un equipo que cuenta con multiples procesadores o en un equipo de un unico procesador.

en los equipos de un unico procesador se deben utilizar algoritmos para garantizar la exclusion mutua sobre el area critica.

En un paradigma secuencial no podemos llevar a cabo la programacion concurrente, sin embargo lenguajes orientados a objetos tienen formas de programar concurrentemente, como en el caso de java con los threads (multiples hilos).

La programacion concurrente provee mejor aprovechamiento de los recursos del cpu, rapidez de procesamiento y es utilizada para cuando nececitamos control sobre la ejecucion, la programacion de paginas web, simulaciones.

para garantizar la exclusion mutua esisten diferentes algoritmos entre ellos tenemos:
  1. Semaforos
  2. Monitores
  3. Mensajes

Programacion Orientada a Servicios
La programacion orientada a servicios es una nueva tendencia de la programacion que permite reutilizar codigo, ampliar funcionalidad, reducir costos y descentralizar los programas.

Es tipico pensar en internet y en servicios web cuando se menciona una arquitectura orientada a servicios sin embargo aunque estas si pertenecen a la arquitectura de servicios no son las unicas que existen.

Es un clasico ejemplo pensar que los web service son todo lo existente a una arquitectura orientada a servicios pero esto no es cierto, la arquitectura basada en servicios puede funcionar en internet y en intranet, puede incluso trabajar localmente en un ordenador sin necesidad de que exita una red aunque de esta fomra no se explotan todos sus beneficios.

con la arquitectura basada en servicios apliamos funcionalidad debido a que utilizamos codigo existente, que esta publicado y que gratuitamente o por alguna forma de remuneracion podemos hacer uso.

tambien reducimos costos debido a que mi empresa no tiene que gastar en un desarrollo por esa funcionalidad sino unicamente contratar el servicio que me devuelve el resultado nececitado.

los servicios funcionan escondiendo funcionamiento, unicamente requieren de determinados parametros de entrada, en base a estos transforman la informacion de salida y la entregan en variables de salida.

un tipico ejemplo de servicios es una pagina de comercio electronico, este tipo de paginas no tienen que programar un modulo de cobros por tarjeta de credito unicamente nececitan contratarlo.

entonces cuando el usuario paga con tarjeta de credito en este sitio, el sitio envia en a un servicio web el monto, el numero de tarjeta y el establecimiento, con esta informacion el servicio web procesa esos datos y realiza la transferencia de fondos. finalmente las variables de salida son la aceptacion de la transferencia acompañado con un numero de transaccion o un mensaje de fondo insuficiente el cual indica que no se realizo la operacion.

de esta manera se logra veneficio con los servicios web, reutilizando codigo. los servicios web cuentan con estandares por ejemplo el UDDI que es un directorio de web services existentes, el WSDL que es la informacion de los parametros de entrada y los parametros de salida para un web service determinado y el SOAP que es el paquete de comunicacion del servicio web.

3 comentarios:

  1. Si me pueden responder para uds cual es el paradigma que ofrece mayores ventajas para aprender a programar??

    ResponderEliminar
  2. Para aprender a programar el mejor paradigma es el estructurado(ejemplos: c++, pascal), porque te da buena base en cuanto a la secuencia de ejecucion de las sentencias, sin embargo te se decir que comercialmente ya no es muy utilizado, el que se utiliza comercialmente es el paradigma orientado a objetos(.net, java).

    ResponderEliminar
  3. que te da buena base en cuanto a la secuencia de ejecucion de las sentencias, sin embargo te se decir que comercialmente ya no es muy utilizado, el que se utiliza comercialmente es el paradigma orientado a objetos(.n coaching-mastery.com/vida-de-san-jeronimo-en-resumen/

    ResponderEliminar