Objetivos

Algunas definiciones iniciales de la materia

La materia se basa en el aprendizaje de tres paradigmas de programación: Objetos, Lógico y Funcional. De cada uno de ellos se presenta en forma teórica los principales conceptos y fundamentos, y se los aplica en forma práctica a la resolución de problemas. Las propuestas de ejercitación, trabajos prácticos y exámenes articulan la teoría con la práctica, buscando que la teoría sea aplicable y que se pueda justificar teóricamente las herramientas utilizadas para la resolución de un problema concreto. Para ello, se utilizan lenguajes de programación propios de cada paradigma.

  • Objetos: Wollok
  • Funcional: Haskell
  • Lógico: Prolog

No es una materia de lenguajes (cada uno después usa el que más le gusta o el que le paguen más por usarlo)… es una materia de conceptos.

No es una materia donde se aprende a programar en la que importa sólo que tus soluciones funcionen… es una materia donde se aprenden abstracciones y herramientas

No es un curso para salir a trabajar… es una cursada donde los conocimientos que adquieran los van a acompañar durante toda su carrera profesional (independientemente de la tecnología que utilicen o el rol que ocupen).

No es una materia donde se revele una única verdad o una única forma de resolver un problema (no tiene la papa)...es la posibilidad de entender la programación desde varios puntos de vista bien distintos a lo que conocen (y que pueden convivir juntos en la misma aplicación).

Objetivos

La materia “Paradigmas de Programación” brinda, para la formación de un Ingeniero en Sistemas, un conjunto de conceptos fundamentales de la programación que, relacionados entre si, con sus diferencias, similitudes e influencias recíprocas, conforman paradigmas de programación. El objetivo es dar un marco teórico conceptual que permita analizar y construir soluciones informáticas, y la práctica de analizar una herramienta técnica o conceptual, ya sea un lenguaje de programación u otro producto, a la luz de estos conceptos.

Se estudian los principales paradigmas de programación –Objetos, Lógico y Funcional-, recuperando los conceptos fundamentales que los asemejan y distinguen entre sí, el sentido y utilidad de cada uno y el impacto que generan en la configuración y uso de los lenguajes de programación. El conocimiento de la sintaxis y herramientas propias de cada lenguaje no es el foco, sino un medio para comprender el paradigma y un caso particular de aplicación que se pueden trasladar a la mayoría de los otros lenguajes de cada paradigma. Se analiza la pertinencia de situarse en el marco conceptual de un paradigma si se decide utilizarlo para la construcción de una pieza de software.

Los tres paradigmas presentan modelos consistentes, que con conjuntos relativamente reducidos de herramientas permiten desarrollar un sinnúmero de soluciones informáticas. La utilidad de cada paradigma no es sólo como instrumento para desarrollar aplicaciones concretas, sino también como ejercicio mental y de desarrollo de formas alternativas de razonamiento y planteo de soluciones, cuya utilidad y aplicación se extiende a numerosas problemáticas informáticas más allá de los límites del propio paradigma. Precisamente, lo más importante de cada paradigma es la posibilidad de pensar, abordar y crear abstracciones para un problema de una forma diferente que enriquece la tarea de programar en cualquier lenguaje de programación.

Las formas de programación conocidas como imperativas o procedurales, que en la actualidad del mundo de sistemas mantienen vigencia e importancia, si bien no se desarrollan en la presente materia por tratarse de contenidos propios de otras materias anteriores, se las encuadra como otro paradigma y se las utiliza como punto de referencia y comparación.

Objetos

En el estado actual de las ciencias de la computación y más precisamente en el ámbito del desarrollo de sistemas es innegable el papel preponderante que asume el Paradigma de Objetos. Al plantearse como unos de sus postulados fundamentales la reusabilidad y extensibilidad de sus soluciones, Objetos encuentra en el cada vez más complejo, cambiante y competitivo mundo de sistemas el ámbito apropiado para su crecimiento y aceptación creciente. Otros enfoques de la programación originalmente valorados por su solidez y confiabilidad se encuentran muchas veces limitados a la hora de responder ágilmente a los nuevos desafíos que se plantean en la actualidad.

Lógico

Desde los orígenes de las ciencias de la computación, la imitación del razonamiento humano ha sido uno de sus grandes desafíos. La posibilidad de que un artefacto artificial, creado por el hombre, pueda comportarse, y sobre todo, “pensar” como una persona humana tuvo su impacto en el ámbito de la informática de la mano del paradigma lógico y marcó su origen. La evolución posterior del paradigma fue demostrando la validez del camino emprendido, pero el proceso fue y es en la actualidad, más complejo y sus objetivos han ido variando: Por un lado, los lenguajes lógicos han incorporado características que los transforman en lenguajes de propósito general, con posibilidades de aplicación en los más variados campos informáticos, y por otro, el desarrollo de la “inteligencia artificial” manteniendo la centralidad de las premisas lógicas se ha diversificado incorporando nuevas herramientas de software y hardware.

Funcional

El paradigma de la programación funcional, a medida que fue evolucionando técnicamente en el tiempo, por sus propias características esenciales y condicionado por los vaivenes y tendencias del mercado mundial de sistemas en el que se halla, se ha mantenido como un paradigma vigente, con lenguajes y herramientas concretas que permite desarrollar aplicaciones de propósito general, basándose en principios sólidos y formulaciones de carácter declarativo. Uno de los ámbitos que ha hecho del paradigma funcional una herramienta más que indispensable es el de la investigación científica.