Artículo sobre la programación funcional

Solo disponible en BuenasTareas
  • Páginas : 24 (5963 palabras )
  • Descarga(s) : 0
  • Publicado : 1 de marzo de 2011
Leer documento completo
Vista previa del texto
¿Por qué es importante la programación funcional?
John Hughes, Institutionen för Datavetenskap, Chalmers Tekniska Högskola, 41296 Göteborg, SWEDEN. rjmh@cs.chalmers.se Este documento data de 1984, y circuló como un memo de Chalmers por varios años. Versiones ligeramente revisadas aparecieron en 1989 y 1990 como [Hug90] y [Hug89]. Esta versión está basada en el memo Chalmers original nroff ,editado ligeramente para LaTeX y lo más cercano posible a las versiones publicadas, con uno o dos errores corregidos. Ofrecemos disculpas por lo antiguo de la fuente y por el hecho de que los ejemplos no estan en Haskell. Justificación Dado que el software se hace cada vez más y más complejo, también se vuelve importante estructurarlo adecuadamente. Un software bien estructurado es fácil de escribir,depurar, y proporciona un conjunto de módulos que pueden ser reutilizados para reducir futuros costos de programación. Los lenguajes convencionales marcan límites conceptuales en la forma en que los problemas pueden ser modularizados. Los lenguajes funcionales dejan estos límites atrás. El presente documento muestra que dos características de los lenguajes funcionales, en particular las funcionesde orden superior y la evaluación perezosa, pueden contribuir enormemente en la modularidad. Como ejemplos, se presentan listas y árboles, varios programas sobre algoritmos numéricos, y se implementa la heurística alfa-beta (un algoritmo de Inteligencia Artificial usado en la programación de juegos). Dado que la modularidad es la clave para el éxito en la programación, los lenguajes funcionalesson vitalmente importantes para el mundo real.

1. INTRODUCCIÓN.
El presente documento es un intento de demostrar al “mundo real” que la programación funcional es vitalmente importante, y también de ayudar a los programadores funcionales a explotar sus ventajas al máximo para hacer más claras dichas ventajas. La programación funcional se denomina así porque un programa en este paradigma constacompletamente de funciones. El programa principal por sí mismo está escrito como una función que recibe la entrada del programa como su argumento y devuelve la salida del programa como resultado. Típicamente, la función es definida en términos de otras funciones, las cuales a su vez están definidas en términos de otras funciones, hasta que en el nivel más bajo las funciones son primitivas dellenguaje. Estas funciones son mucho más que funciones matemáticas ordinarias, y en este documento serán definidas por ecuaciones ordinarias. Nuestra notación se toma del lenguaje Miranda® de Turner[Tur85], pero debería poder leerse aún sin conocimientos previos sobre lenguajes funcionales (Miranda es una marca registrada de Research Software Ltd.). Las características y ventajas especiales de laprogramación funcional pueden exponerse brevemente más o menos así. Los programas funcionales no contienen sentencias de asignación; de este modo las variables, una vez que adquieren cierto valor, nunca lo cambian. Más generalmente, los programas funcionales no contienen efectos colaterales. Una función que sea llamada puede no tener efecto sobre otra que calcule su resultado. Esto elimina una fuenteimportante de errores, y también hace al orden de la evaluación irrelevante – pues al no haber efectos colaterales que puedan modificar el valor de una expresión, esta puede ser evaluada en cualquier momento-. Esto libera al programador de la carga de establecer el control de flujo. Dado que las expresiones pueden ser evaluadas en cualquier momento, uno puede reemplazar libremente a las variables porsus valores y viceversa – esto es, los programas son “transparentes referencialmente”. Esta libertad ayuda a hacer a los programas funcionales matemáticamente manejables, contrario a su contraparte convencional. Semejante catálogo de “ventajas” esta muy bien. Pero no debe sorprendernos que los escépticos no lo tomen demasiado en serio. Ellos mencionan mucho de lo que no es la programación...
tracking img