0

Programación [Paradigma]

martes, 10 de mayo de 2011 | Author: Alex Alvarez Gárciga | Etiquetas: ,

Un paradigma de programación es una propuesta tecnológica que es adoptada por una comunidad de programadores cuyo núcleo central es incuestionable en cuanto a que unívocamente trata de resolver uno o varios problemas claramente delimitados. La resolución de estos problemas debe suponer consecuentemente un avance significativo en al menos un parámetro que afecte a la ingeniería de software. Tiene una estrecha relación con la formalización de determinados lenguajes en su momento de definición. Un paradigma de programación está delimitado en el tiempo en cuanto a aceptación y uso ya que nuevos paradigmas aportan nuevas o mejores soluciones que la sustituyen parcial o totalmente.

Actualmente las ciencias de la computación cuenta con los siguientes paradigmas de programación, donde:

  • La programación imperativa, en contraposición a la programación declarativa es un paradigma de programación que la describe en términos del estado del programa y sentencias que cambian dicho estado. Los programas imperativos son un conjunto de instrucciones que le indican al computador cómo realizar una tarea. Los lenguajes imperativos de alto nivel usan variables y sentencias más complejas en pos una mayor abstracción de la plataforma de cómputo para ganar en enfoque sobre el problema, pero aún así siguen el mismo paradigma.

  • La programación funcional, es un paradigma de programación declarativa basado en la utilización de funciones aritméticas que no maneja datos mutables o de estado. Enfatiza la aplicación de funciones, en contraste con el estilo de programación imperativa, que enfatiza los cambios de estado. La programación funcional tiene sus raíces en el cálculo lambda, un sistema formal desarrollado en los 1930s para investigar la definición de función, la aplicación de las funciones y la recursión. Muchos lenguajes de programación funcionales pueden ser vistos como elaboraciones del cálculo lambda.

  • La programación lógica, es un paradigma de programación declarativa que consiste en la aplicación del corpus de conocimiento sobre lógica para el diseño de lenguajes de programación. Esta gira en torno al concepto de predicado, o relación entre elementos. La lógica matemática es la manera más sencilla, para el intelecto humano, de expresar formalmente problemas complejos y de resolverlos mediante la aplicación de reglas, hipótesis y teoremas. De ahí que el concepto de "programación lógica" resulte atractivo en diversos campos como el de la inteligencia artificial, donde la programación tradicional es un fracaso.

  • La programación Declarativa, es un paradigma de programación que está basado en el desarrollo de programas especificando o "declarando" un conjunto de condiciones, proposiciones, afirmaciones, restricciones, ecuaciones o transformaciones que describen el problema y detallan su solución. La solución es obtenida mediante mecanismos internos de control, sin especificar exactamente cómo encontrarla. Donde no existen asignaciones destructivas, y las variables son utilizadas con Transparencia referencial.

  • La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos definidos mediante clases y sus interacciones, para diseñar aplicaciones y programas informáticos. Está basado en varias técnicas, incluyendo herencia, abstracción, polimorfismo y encapsulamiento como sus pilares.

  • La programación dirigida por eventos, es un paradigma de programación en el que tanto la estructura como la ejecución de los programas van determinados por los sucesos que ocurran en el sistema, definidos por el usuario o por ellos mismos provocados.

  • La programación modular, es un paradigma de programación que consiste en dividir un programa en módulos o subprogramas con el fin de hacerlo más legible y manejable. Presentada históricamente como una evolución de la programación estructurada para solucionar problemas de programación más grandes y complejos de lo que ésta puede resolver.

  • La Programación Orientada a Aspectos (POA) es un paradigma de programación cuya intención es permitir una adecuada modularización de las aplicaciones y posibilitar una mejor separación de incumbencias. Gracias a la POA se pueden encapsular los diferentes conceptos que componen una aplicación en entidades bien definidas, eliminando las dependencias entre cada uno de los módulos. De esta forma se consigue razonar mejor sobre los conceptos, se elimina la dispersión del código y las implementaciones resultan más comprensibles, adaptables y reusables. Varias tecnologías con nombres diferentes se encaminan a la consecución de los mismos objetivos y así, el término POA es usado para referirse a varias tecnologías relacionadas como los métodos adaptativos, los filtros de composición, la programación orientada a sujetos o la separación multidimensional de competencias.

  • La Programación con restricciones, es un paradigma donde las relaciones entre las variables son expresadas en términos de restricciones (ecuaciones) las cuales deben ser satisfechas por cualquier solución del problema planteado, en lugar de especificar los pasos para obtener dicha solución. Actualmente es usada como una tecnología de software para la descripción y resolución de problemas combinatorios particularmente difíciles, especialmente en las áreas de planificación y programación de tareas.

  • La programación orientada a componentes (que también es llamada basada en componentes) es una rama de la ingeniería del software, con énfasis en la descomposición de sistemas ya conformados en componentes funcionales o lógicos con interfaces bien definidas usadas para la comunicación entre componentes. Se considera que el nivel de abstracción de los componentes es más alto que el de los objetos y por lo tanto no comparten un estado y se comunican intercambiando mensajes que contienen datos.

Además, John Backus en su trabajo sobre los Programas como objetos matemáticos identificó dos paradigmas contrastantes. La programación a nivel funcional y la programación a nivel de valores donde:

  • La programación a nivel funcional dicta que un programa de nivel funcional no necesita la noción de variable, dado que las variables, que son elemento esencial en las definiciones a nivel de valores no hacen falta en el nivel funcional. Resultando así en un estilo de programación donde los programas se escriben como combinación de otros programas con la ayuda de los operaciones de construcción de programas o funcionales formando un espacio matemático.

  • La programación a nivel de valores describen como combinar diferentes valores (por ejemplo, números, caracteres, etc.) para formar nuevos valores hasta obtener el resultado final. Los nuevos valores se obtienen como resultado de la aplicación de operaciones que transforman valores en otros valores, como por ejemplo, la suma, la concatenación, la inversión de matrices, etc. Los lenguajes que siguen el estilo de von Neumann son de nivel de valores: las expresiones a la derecha de una asignación tienen por objeto la creación del nuevo valor a asignar.

Si bien puede seleccionarse la forma pura de estos paradigmas al momento de programar, en la práctica es habitual que se mezclen, dando lugar a la programación multiparadigma.

Y para aquellos que a estas alturas se lo pregunten:

La programación estructurada es una forma de escribir programas de computadora de manera clara. Utilizando únicamente tres estructuras: secuencia, selección e iteración; siendo innecesario el uso de la instrucción o instrucciones de transferencia incondicional (GOTO, EXIT FUNCTION, EXIT SUB o múltiples RETURN).

Hoy en día las aplicaciones informáticas son mucho más ambiciosas que las necesidades de programación existentes en los años 1960, principalmente debido a las aplicaciones gráficas, por lo que las técnicas de programación estructurada no son suficientes y están en desuso.


0 comentarios:

Publicar un comentario