Tendencias de Desarrollo del Software Guía 01 - Inicio 8 A partir de tal información, el sistema proporcionará un esquema que incluya el orden de evaluación que genere una solución, sin requerir para lograrla, la descripción de etapas a seguir como en el caso procedimental.Dado que estos paradigmas especifican la solución sin indicar cómo construirla, en principio eliminan la necesidad de comprobar que el valor generado es la solución, ya que el programador adopta solo aquellas verdades, hechos, restricciones o reglas que definen el problema a resolver, por lo que, si la especificación fué realizada meticulosamente, cualquier solución obtenida será necesariamente válida. Paradigma orientado a objetos. Uno de los paradigmas más modernos, mas estudiados y que da origen y desarrolla otra serie de paradigmas alternos (aspectos, restricciones, métodos, valores, etc.). La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa los objetos en sus interacciones, para diseñar aplicaciones y programas informáticos. Está basado en varias técnicas, incluyendo herencia, cohesión, abstracción, polimorfismo, acoplamiento y encapsulamiento. Su uso se popularizó a principios de la década de los años 1990 y se desarrollo por la OMG (Object Management Group) con el fin de mejorar la calidad del software producido y la reutilización de código/software. En la actualidad, existe gran variedad de lenguajes de programación que soportan la orientación a objetos. Un lenguaje completamente orientado a objetos es Smalltalk. EL más conocido y el más utilizado es JAVA. Ámbito de los Sistemas OO La propuesta moderna de todos los sistemas de programación se centra en reutilización de componentes de software, algo similar a desarrollar repuestos para las máquinas y vehículos de hardware pero en el terreno de la lógica con códigos de programación empaquetados en componentes. Algunos de los paradigmas modernos en programación: Computación en la nube Programación imperativa Programación lógica Programación funcional Programación declarativa Programación estructurada Programación dirigida por eventos Programación modular Programación orientada a aspectos Programación orientada a objetos Programación con restricciones Programación a nivel funcional (John Backus) Programación a nivel de valores (John Backus) Programación orientada a componentes www.dariolara.com Guía 01 - Inicio Tendencias de Desarrollo del Software 5 Paradigmas de Desarrollo del Software Introducción El término paradigma significa «ejemplo» o «modelo». En todo el ámbito científico, religioso u otro contexto epistemológico, el término paradigma puede indicar el concepto de esquema formal de organización, y ser utilizado como sinónimo de marco teórico o conjunto de teorías. En lingüística, Ferdinand de Saussure ha usado paradigma para referirse a una clase de elementos con similitudes. El término tiene también un significado en el terreno de la psicología refiriéndose a aceptación de ideas, pensamientos, creencias incorporadas generalmente durante nuestra primera etapa de vida que se aceptan como verdaderas o falsas sin ponerlas a prueba de un nuevo análisis. En su forma más simple para proviene de mas allá y digma se puede asimilar a conocimiento, y por tanto la definición mas elemental: mas alla del conocimiento actual, esto es conocimiento que hay que reevaluar continuamente. Paradigmas de programación Un paradigma está constituido por los supuestos teóricos generales, las leyes y las técnicas para su aplicación que adoptan los miembros de una determinada comunidad científica. Componentes « Leyes y Supuestos Teóricos « Instrumental y Técnicas Instrumentales. « Principios metafísicos generales que guían el accionar. Ej.: Leyes de movimiento de Newton (Paradigma Newtoniano) Son marcos de referencia, pueden ser considerados patrones de pensamiento para la resolución de problemas. Paradigma Un paradigma de programación es entonces una forma de representar y manipular el conocimiento. Representa un enfoque particular o filosofía para la construcción del software. No es mejor uno que otro sino que cada uno tiene ventajas y desventajas. También hay situaciones donde un paradigma resulta más apropiado que otro. Tipos de Paradigmas de Programación « Paradigma Imperativo « Paradigma Procedimental « Paradigma Declarativo « Paradigma Funcional y Lógico « Paradigma Demostrativo « Paradigma Orientado a Objetos Paradigma de Programación Imperativo El paradigma imperativo es considerado el más común basado en ordenes secuenciales y está representado, por ejemplo, por lenguajes como Fortran, Cobol o por el lenguaje Basic de los 70s.. www.dariolara.com Tendencias de Desarrollo del Software Guía 01 - Inicio 6 Paradigma Procedimental El paradigma procedimental es considerado un sistema muy simple que basa su conjunto de códigos en procedimientos en secuencia y puede recurrir a librerías o funciones similares basado en ordenes secuenciales y está representado por lenguajes estructurados o semiestructurados como C o Pascal .... Paradigma Declarativo La Programación Declarativa, en contraposición a la programación imperativa 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 (tan sólo se le indica a la computadora qué es lo que se desea obtener o qué es lo que se está buscando). No existen asignaciones destructivas. Diferencia entre imperativo y declarativo « En la programación imperativa se describe paso a paso un conjunto de instrucciones que deben ejecutarse para variar el estado del programa y hallar la solución, es decir, un algoritmo en el que se describen los pasos necesarios para solucionar el problema. « En la programación declarativa las sentencias que se utilizan lo que hacen es describir el problema que se quiere solucionar, pero no las instrucciones necesarias para solucionarlo. Esto último se realizará mediante mecanismos internos de inferencia de información a partir de la descripción realizada. Paradigma Funcional En ciencias de la computación, 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. Los lenguajes de programación funcional, especialmente los que son puramente funcionales, han sido enfatizados en el ambiente académico principalmente y no tanto en el desarrollo de software comercial. Sin embargo, lenguajes de programación importantes basados en LISP (List Procesor) tales como Scheme, Erlang, Objective Caml y Haskel, han sido utilizados en aplicaciones comerciales e industriales por muchas organizaciones. Paradigma lógico La programación lógica es un tipo de paradigmas de programación dentro del paradigma de programación declarativa. El resto de los subparadigmas de programación dentro de la programación declarativa son: programación funcional, programación con restricciones, programas DSL (de dominio específico) e híbridos. La programación funcional se basa en el concepto de función www.dariolara.com Guía 01 - Inicio Tendencias de Desarrollo del Software 7 (que no es más que una evolución de los predicados), de corte más matemático. La programación lógica gira en torno al concepto de predicado, o relación entre elementos. Campos de aplicación La programación lógica encuentra su hábitat natural en aplicaciones de inteligencia artificial (IA) o relacionada, los Sistemas expertos (SE), donde un sistema de información imita las recomendaciones de un experto sobre algún dominio de conocimiento y las Redes Neuronales (RN) que intentan simular la complejidad de un cerebro. Algunos campos: Demostración automática de teoremas, donde un programa genera nuevos teoremas sobre una teoría existente. Reconocimiento de lenguaje natural, donde un programa es capaz de comprender (con limitaciones) la información contenida en una expresión lingüística humana. La programación lógica también se utiliza en aplicaciones más "mundanas" pero de manera muy limitada, ya que la programación tradicional es más adecuada a tareas de propósito general. 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 donde la programación tradicional es un fracaso. Lenguajes lógicos El lenguaje de programación lógica por excelencia es Prolog, que cuenta con diversas variantes. La más importante es la programación lógica con restricciones (véase artículo sobre programación con restricciones), que posibilita la resolución de ecuaciones lineales además de la demostración de hipótesis. Paradigma Demostrativo En este modelo, denominado también como PARADIGMA POR EJEMPLO, el programador en lugar de especificar procedimentalmente como lograr una solución, propone soluciones de problemas similares y permite al sistema que GENERALICE una solución procedimental a partir de tales demostraciones. Las alternativas para generalizar tales soluciones abarcan desde simular una secuencia procedimental hasta inferir intenciones, de manera que los sistemas que infieren, intentarán generalizaciones basadas en el razonamiento del conocimiento. En este modelo, una solución basada en la inferencia tratará de determinar por una parte los aspectos similares, un grupo de datos u objetos y a partir de estos generalizar estas similitudes. Paradigma de definición Bajo este paradigma, un programa se diseña señalando hechos, reglas, restricciones, ecuaciones, transformaciones y otras propiedades del conjunto de valores que con figuran la solución. www.dariolara.com