7.1 Lenguajes funcionales


Los lenguajes funcionales se basan en la declaración de funciones aritméticas, tratan de ser un lenguaje expresivo y matemáticamente elegante. Los programas escritos en lenguajes funcionales están compuestos únicamente por la definición de funciones, pero no se trata de subrutinas de un programa iterativo, si no más bien como funciones puramente matemáticas.

Los lenguajes funcionales suelen usarse mucho para Inteligencia Artificial, ofreciendo al programador un buen número de recursos expresivos que permiten resolver problemas complejos mediante programas pequeños y robustos. Para alguien que está acostumbrado a programar en lenguajes imperativos u orientado a objetos, la curva de aprendizaje es un poco más grande; cuesta un poco entender el paradigma.

Lo complicado es que en general no existe la asignación de variables, se trabaja en forma recursiva, con memoria dinámica, y, en algunos lenguajes, cualquier programa se puede escribir en una sola línea (por ejemplo en APL), lo que dificulta un poco su lectura.

Entre ellos cabe destacar: un sistema de tipos polimórficos que permite definir una amplia variedad de estructuras de datos de uso genérico, la posibilidad de definir funciones que aceptan otras funciones como argumentos y devuelven funciones como resultado, facilidades para definir y manipular estructuras de datos infinitas, un modelo computacional simple, claro y bien fundamentado, etc. De no menor importancia es la posibilidad de razonar, de forma sencilla, acerca de las propiedades de los programas: su corrección, su eficacia, su comportamiento en ejecución. Esto permite optimizar las tareas de implementación de los lenguajes funcionales.

Los lenguajes funcionales son: Haskell, Miranda, R, Lisp, Scala, Scheme, ML, Erlang entre otros. Podemos encontrar, en casi todos los lenguajes de programación funcional, un núcleo común de conceptos y técnicas asentado sobre bases firmemente establecidas.


No hay comentarios:

Publicar un comentario