Programación Funcional

17 de septiembre de 2009

Todos sabemos que es la Programacion Orientada a Objetos y todos los beneficios que nos brinda, por años hemos utilizado este paradigma en diversidad de plataformas y lenguajes. Sin embargo, debemos de saber que los lenguajes de programación tienen su origen en las ciencias de la computación y las matemáticas. La programación funcional es un paradigma diferente, representado en lenguajes como ML, OCalm, Haskell y otros, que es muy poco utilizado de manera comercial, aunque de mucho valor para la comunidad científica, siendo muy potente y concreto para realizar determinadas tareas de cómputo.

Microsoft promete un nuevo lenguaje multiparadigma que juntará lo mejor de ambos mundos, la programación imperativa, la programación orientada a objetos y la funcional en uno solo: Functional# o F#. la idea es unirlos en un único lenguaje que promete ser elegante, potente y altamente productivo. Este nuevo lenguaje estará disponible para Visual Studio 2010 y .NET Framework 4 (aunque ya está disponible la beta en el site oficial).

La programación funcional es la herramienta utilizada por programadores científicos que desean modelar dinámica de fluidos, reacciones químicas y modelos mecánicos. La programación imperativa y orientada a objetos es usado ampliamente por los desarrolladores de software comercial que son quienes escriben sistemas operativos, aplicaciones empresariales y paquetes como procesadores de texto, hojas de cálculo, juegos, reproductores multimedia, y más.

Pero, ¿Qué es la Programacion Funcional?
Podemos dar un acercamiento un poco tosco y decir que en la programación funcional:
  • Las funciones se tratan como si fueran otro tipo de dato más (parecidos a los delegados de C# o los punteros a funciones en C, pero con mucha más utilidad y poder combinatorio).
  • Los datos son inmutables (osea, no podemos alterar el valor de una variable, una ves que éste ha sido asignado).
  • Las funciones pueden aplicarse a todo un conjunto de datos, sin necesidad de iteraciones o bucles.
  • Con las funciones podemos realizar aquellas operaciones matemáticas que nos enseñaban en el cole (recuerdan: composición de funciones, funcion inversa, funciones parciales... etc, etc)
  • Nuevos tipos de estructuras comunes, como Tuplas, Opcionales, etc.
  • Expresiones Lambda.
  • Inferencia de tipos (no necesitamos declarar el tipo de la variable, F# decide cúal es el tipo correcto, por nosotros).
  • Asimismo, la programación paralela (ver arrticulo anterior) y asíncrona se hacen más fáciles.

Es cierto, es dificil comprender a primera vista porqué estas características nos darán más potencia en nuestras aplicaciones (me refiero a escribir menos lineas de código para hacer tareas más eficientes y elevar nuestra productividad), para quienes no estamos familiarizados con la programación funcional, por lo que tenemos que ir un poco más allá con ciertas definiciones, así que trataremos de ir viéndolas en futuros artículos, trataremos también de realizar un paso a paso para hacer nuestra primera aplicación de este tipo.
Saludos,

0 comentarios:

Publicar un comentario