¿Por qué los lenguajes funcionales? [cerrado]


Aquí se habla mucho de lenguajes funcionales y cosas así. ¿Por qué usarías uno sobre un lenguaje "tradicional"? ¿Qué hacen mejor? ¿En qué son peores? ¿Cuál es la aplicación de programación funcional ideal?

Author: MattBelanger, 2008-08-31

30 answers

Los lenguajes funcionales usan un paradigma diferente a los lenguajes imperativos y orientados a objetos. Utilizan funciones libres de efectos secundarios como un bloque de construcción básico en el lenguaje. Esto permite muchas cosas y hace que muchas cosas sean más difíciles (o en la mayoría de los casos diferentes de lo que la gente está acostumbrada).

Una de las mayores ventajas de la programación funcional es que el orden de ejecución de las funciones sin efectos secundarios no es importante. Por ejemplo, en Erlang esto se usa para habilite la concurrencia de una manera muy transparente. Y debido a que las funciones en lenguajes funcionales se comportan muy similares a las funciones matemáticas, es fácil traducirlas a lenguajes funcionales. En algunos casos, esto puede hacer que el código sea más legible.

Tradicionalmente, una de las grandes desventajas de la programación funcional era también la falta de efectos secundarios. Es muy difícil escribir software útil sin IO, pero IO es difícil de implementar sin efectos secundarios en las funciones. Así que la mayoría de la gente nunca he sacado más provecho de la programación funcional que calcular una sola salida a partir de una sola entrada. En lenguajes modernos de paradigma mixto como F # o Scala esto es más fácil.

Muchos lenguajes modernos tienen elementos de lenguajes de programación funcionales. C # 3.0 tiene muchas características de programación funcionales y también puede hacer programación funcional en Python. Creo que las razones de la popularidad de la programación funcional es sobre todo debido a dos razones: Concurrencia es conseguir un problema real en programación normal porque cada vez tenemos más ordenadores multiprocesadores; y los lenguajes son cada vez más accesibles.

 201
Author: Mendelt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-14 20:44:46

No creo que haya ninguna duda sobre el enfoque funcional de la programación "catching on", porque ha estado en uso (como un estilo de programación) durante aproximadamente 40 años. Cada vez que un programador OO escribe código limpio que favorece objetos inmutables, ese código está tomando prestados conceptos funcionales.

Sin embargo, los lenguajes que imponen un estilo funcional están recibiendo mucha tinta virtual en estos días, y si esos lenguajes se volverán dominantes en el futuro es una pregunta abierta. Mi propia sospecha es que los lenguajes híbridos, multi-paradigmas como Scala o OCaml probablemente dominará sobre los lenguajes funcionales "puristas" de la misma manera que el lenguaje OO puro (Smalltalk, Beta, etc.) han influido en la programación principal, pero no han terminado como las notaciones más utilizadas.

Finalmente, no puedo resistirme a señalar que sus comentarios re FP son altamente paralelos a los comentarios que escuché de programadores de procedimientos no hace muchos años ago:

  • El programador "promedio" (mítico, en mi humilde opinión) no lo entiende.
  • No se enseña ampliamente.
  • Cualquier programa que puedas escribir con él puede ser escrito de otra manera con las técnicas actuales.

Así como las interfaces gráficas de usuario y el" código como modelo del negocio " fueron conceptos que ayudaron a que OO se apreciara más ampliamente, creo que un mayor uso de la inmutabilidad y el paralelismo más simple (masivo) ayudará a más programadores a ver los beneficios que ofrece el enfoque funcional. Pero por mucho que hemos aprendido en los últimos 50 años que conforman toda la historia de la programación de computadoras digitales, creo que todavía tenemos mucho que aprender. Dentro de veinte años, los programadores mirarán hacia atrás asombrados por la naturaleza primitiva de las herramientas que estamos usando actualmente, incluyendo los ahora populares lenguajes OO y FP.

 192
Author: joel.neely,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-11 17:44:08

La principal ventaja para mí es su paralelismo inherente, especialmente porque ahora nos estamos alejando de más MHz y hacia más y más núcleos.

No creo que se convierta en el próximo paradigma de programación y reemplace completamente los métodos de tipo OO, pero sí creo que llegaremos al punto en que necesitamos escribir algo de nuestro código en un lenguaje funcional, o nuestros lenguajes de propósito general crecerán para incluir más construcciones funcionales.

 124
Author: Steven Robbins,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-04 17:57:02

Incluso si nunca trabajas en un lenguaje funcional profesionalmente, entender la programación funcional te hará un mejor desarrollador. Le dará una nueva perspectiva sobre su código y programación en general.

Yo digo que no hay razón para no aprenderlo.

Creo que los lenguajes que hacen un buen trabajo de mezclar el estilo funcional y el imperativo son los más interesantes y los que tienen más probabilidades de tener éxito.

 77
Author: user21714,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-04 17:19:39

Siempre soy escéptico sobre la Próxima Gran Cosa. Muchas veces la Próxima Gran Cosa es pura casualidad de la historia, estar allí en el lugar correcto en el momento adecuado, sin importar si la tecnología es buena o no. Ejemplos: C++, Tcl / Tk, Perl. Todas las tecnologías defectuosas, todas tremendamente exitosas porque se percibían ya sea para resolver los problemas del día o para ser casi idénticas a las normas arraigadas, o ambas cosas. La programación funcional puede ser genial, pero eso no significa que lo sea adoptar.

Pero yo puedodecirle por qué la gente está entusiasmada con la programación funcional: muchos, muchos programadores han tenido una especie de "experiencia de conversión" en la que descubren que el uso de un lenguaje funcional los hace dos veces más productivos (o tal vez diez veces más productivos) mientras producen código que es más resistente al cambio y tiene menos errores. Estas personas piensan en la programación funcional como un arma secreta; un buen ejemplo de esta mentalidad es la de Paul Graham Superando los Promedios. ¿Y su solicitud? Aplicaciones web de comercio electrónico.

Desde principios de 2006 también ha habido algunos rumores sobre la programación funcional y el paralelismo. Dado que personas como Simon Peyton Jones han estado preocupándose por el paralelismo de vez en cuando desde al menos 1984, no estoy conteniendo la respiración hasta que los lenguajes funcionales resuelvan el problema multinúcleo. Pero sí explica algunos de los rumores adicionales en este momento.

En general, las universidades estadounidenses son haciendo un mal trabajo enseñando programación funcional. Hay un fuerte núcleo de soporte para la enseñanza de la programación intro utilizando Scheme, y Haskell también goza de cierto apoyo allí, pero hay muy poco en el camino de la enseñanza de la técnica avanzada para el programador funcional. He enseñado un curso de este tipo en Harvard y lo haré de nuevo esta primavera en Tufts. Benjamin Pierce ha enseñado tal curso en Penn. No se si Paul Hudak ha hecho algo en Yale. Las universidades europeas son hacer un trabajo mucho mejor; por ejemplo, la programación funcional se enfatiza en lugares importantes en Dinamarca, los Países Bajos, Suecia y el Reino Unido. Tengo menos idea de lo que está pasando en Australasia.

 55
Author: Norman Ramsey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-04 21:54:47

No veo a nadie mencionando el elefante en la habitación aquí, así que creo que depende de mí:)

JavaScript es un lenguaje funcional. A medida que más y más personas hacen cosas más avanzadas con JS, especialmente aprovechando los puntos más finos de jQuery, Dojo y otros marcos, FP será introducido por la puerta trasera del desarrollador web.

Junto con los cierres, FP hace que el código JS sea realmente liviano, pero aún legible.

Saludos, PS

 34
Author: Psvensson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-05 10:37:57

La mayoría de las aplicaciones son lo suficientemente simples como para ser resueltas en formas normales de OO

  1. OO maneras no siempre han sido " normales."El estándar de esta década fue el concepto marginado de la década pasada.

  2. La programación funcional es matemática. Paul Graham en Lisp (sustituye la programación funcional por Lisp):

Así que la breve explicación de por qué esto 1950s lenguaje no es obsoleto es que no era tecnología sino matemáticas, y matemáticas no se pone rancio. Derecho lo que se compara con Lisp no es la década de 1950 hardware, pero, digamos, el Quicksort algoritmo, que fue descubierto en 1960 y sigue siendo el más rápido tipo de uso general.

 25
Author: Michael Paulukonis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-10 17:08:35

Apuesto a que no sabías que eras programación funcional cuando usaste:

  • Fórmulas de Excel
  • Compositor de cuarzo
  • Javascript
  • Logo (gráficos Tortuga)
  • LINQ
  • SQL
  • Subrayado.js (o Lodash), D3
 25
Author: Breton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-10 17:15:06

El programador corporativo promedio, e. g. la mayoría de la gente con la que trabajo, Will no lo entiendo y la mayoría trabaja los entornos no le permitirán programar en ella

Eso es solo cuestión de tiempo. Tu programador corporativo promedio aprende lo que sea que sea la Gran Cosa actual. hace 15 años, no entendían OOP. SI FP se da cuenta, sus "programadores corporativos promedio" le seguirán.

No se enseña realmente en las universidades (o es hoy día?)

Varía mucho. En mi universidad, el SML es la primera lengua que se presenta a los estudiantes. Creo que el MIT enseña LISP como un curso de primer año. Estos dos ejemplos pueden no ser representativos, por supuesto, pero creo que la mayoría de las universidades al menos ofrecen algunos cursos opcionales sobre FP, incluso si no lo hacen una parte obligatoria del plan de estudios.

La mayoría de las aplicaciones son lo suficientemente simples para resolver en formas normales OO

No Es realmente una cuestión de "bastante simple" sin embargo. ¿Sería una solución más simple (o más legible, robusta, elegante, performante) en FP? Muchas cosas son" lo suficientemente simples como para ser resueltas en Java", pero todavía requiere una cantidad godawful de código.

En cualquier caso, tenga en cuenta que los defensores de FP han afirmado que era la Próxima Gran Cosa desde hace varias décadas. Tal vez tengan razón, pero tenga en cuenta que no lo eran cuando hicieron la misma afirmación hace 5, 10 o 15 años.

Una cosa que definitivamente cuenta a su favor, sin embargo, es que recientemente, C# ha dado un giro brusco hacia FP, en la medida en que prácticamente está convirtiendo a una generación de programadores en programadores FP, sin que ellos ni siquiera se den cuenta. Eso podría allanar el camino para la "revolución"del PF. Posiblemente. ;)

 18
Author: jalf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-04 17:42:25

El hombre no puede entender la perfección y las imperfecciones de su arte elegido si no puede ver el valor en otras artes. Seguir las reglas solo permite el desarrollo hasta un punto en la técnica y luego el estudiante y el artista tiene que aprender más y buscar más. Tiene sentido estudiar otras artes además de las de estrategia.

¿Quién no ha aprendido algo más sobre sí mismo observando las actividades de los demás? Para aprender la espada estudia la guitarra. Para aprender el primer estudio de comercio. A solo estudiar la espada te hará de mente estrecha y no te permitirá crecer hacia afuera.

Miy Miyamoto Musashi,"Un Libro de Cinco Anillos"

 14
Author: shawndumas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-05 14:58:56

Una característica clave en un lenguaje funcional es el concepto de funciones de primera clase. La idea es que puede pasar funciones como parámetros a otras funciones y devolverlas como valores.

La programación funcional implica escribir código que no cambia de estado. La razón principal para hacerlo es para que las llamadas sucesivas a una función produzcan el mismo resultado. Puede escribir código funcional en cualquier idioma que admita funciones de primera clase, pero hay algunos idiomas, como Haskell, que no te permiten cambiar de estado. De hecho, se supone que no debes hacer ningún efecto secundario (como imprimir texto) en absoluto, lo que suena como que podría ser completamente inútil.

Haskell emplea un enfoque diferente para IO: mónadas. Estos son objetos que contienen la operación de E / s deseada para ser ejecutada por el nivel superior de su intérprete. En cualquier otro nivel son simplemente objetos en el sistema.

¿Qué ventajas ofrece la programación funcional? Funcional la programación permite codificar con menos potenciales para errores porque cada componente está completamente aislado. Además, el uso de recursividad y funciones de primera clase permite pruebas simples de corrección que típicamente reflejan la estructura del código.

 11
Author: Kyle Cronin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-31 00:29:54

No creo que la mayoría de la gente realista piense que la programación funcional se pondrá de moda (se convierte en el paradigma principal como OO). Después de todo, la mayoría de los problemas de negocios no son problemas matemáticos, sino reglas imperativas peludas para mover datos y mostrarlos de varias maneras, lo que significa que no es una buena opción para el paradigma de programación funcional pura (la curva de aprendizaje de monad supera con creces OO.)

OTOH, la programación funcional es lo que hace que la programación sea divertida. Te hace apreciar el belleza inherente e intemporal de expresiones sucintas de las matemáticas subyacentes del universo. La gente dice que aprender programación funcional te hará un mejor programador. Esto es, por supuesto, altamente subjetivo. Personalmente no creo que eso sea completamente cierto tampoco.

Te hace un ser mejor sensible.

 11
Author: obecalp,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-04 22:19:52

Debo ser denso, pero todavía no lo entiendo. ¿Hay ejemplos reales de pequeñas aplicaciones escritas en un lenguaje funcional como F# donde se puede mirar el código fuente y ver cómo y por qué era mejor utilizar un enfoque de este tipo que, por ejemplo, C#?

 7
Author: Mike K,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-12-16 07:34:50

F# podría coger encendido porque Microsoft está empujando él.

Pro:

  • F# va a ser parte de la próxima versión de Visual Studio
  • Microsoft está construyendo comunidad desde hace algún tiempo: evangelistas, libros, consultores que trabajan con clientes de alto perfil, exposición significativa en conferencias de MS.
  • F # es un lenguaje. Net de primera clase y es el primer lenguaje funcional que viene con una base realmente grande (no es que diga que Lisp, Haskell, Erlang, Scala, OCaml no tienen muchas bibliotecas, simplemente no son tan completas como. Net)
  • Fuerte apoyo al paralelismo

Contra:

  • F # es muy difícil de empezar incluso si eres bueno con C# y. Net - al menos para mí: (
  • probablemente será difícil encontrar buenos desarrolladores de F#

Por lo tanto, le doy 50:50 oportunidad a F# para convertirse en importante. Otros lenguajes funcionales no van a lograrlo en un futuro cercano.

 7
Author: zendar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-04 17:38:37

Me gustaría señalar que todo lo que has dicho sobre lenguajes funcionales, la mayoría de la gente estaba diciendo sobre lenguajes orientados a objetos hace unos 20 años. En ese entonces era muy común escuchar acerca de OO:

* The average corporate programmer, e.g. most of the people I work with, will not understand it and most work environments will not let you program in it
* It's not really taught at universities (or is it nowadays?)
* Most applications are simple enough to be solved in normal IMPERATIVE ways

El cambio tiene que venir de alguna parte. Un cambio significativo e importante se hará realidad independientemente de si las personas capacitadas en tecnologías anteriores opinan que el cambio no es necesario. ¿Crees que el cambio a OO fue bueno a pesar de toda la gente que ¿en contra en ese momento?

 7
Author: RD1,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-09-17 17:52:53

Creo que una razón es que algunas personas sienten que la parte más importante de si un idioma será aceptado es lo bueno que es el idioma. Desafortunadamente, las cosas rara vez son tan simples. Por ejemplo, yo diría que el mayor factor detrás de la aceptación de Python no es el lenguaje en sí (aunque es bastante importante). La mayor razón por la que Python es tan popular es su enorme biblioteca estándar y la comunidad aún más grande de 3rd party biblioteca.

Lenguajes como Clojure o F# pueden ser la excepción a esta regla considerando que están construidos sobre la JVM/CLR. Como resultado, no tengo una respuesta para ellos.

 5
Author: Jason Baker,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-04 17:31:57

La mayoría de las aplicaciones se pueden resolver en [inserte su idioma favorito, paradigma, etc. aqui].

Aunque esto es cierto, se pueden usar diferentes herramientas para resolver diferentes problemas. Funcional solo permite otro alto(más alto?) abstracción de nivel que permite hacer nuestro trabajo de manera más efectiva cuando se utiliza correctamente.

 4
Author: tylermac,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-04 17:21:54

Me parece que esas personas que nunca aprendieron Lisp o Scheme como estudiante ahora lo están descubriendo. Al igual que con muchas cosas en este campo, hay una tendencia a exagerar y crear altas expectativas...

Pasará.

La programación funcional es genial. Sin embargo, no se apoderará del mundo. C, C++, Java, C#, etc. seguirán existiendo.

Lo que vendrá de esto creo que es más capacidad de lenguaje cruzado - por ejemplo, la implementación de cosas en un funcional y luego dar acceso a esas cosas en otros idiomas.

 4
Author: Tim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-04 18:05:49

Al leer "The Next Mainstream Programming Language: A Game Developer's Perspective" de Tim Sweeney, Epic Games, mi primer pensamiento fue: Tuve que aprender Haskell.

PPT

La versión HTML de Google

 4
Author: Janis Veinbergs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-08 06:56:12

Las cosas se han estado moviendo en una dirección funcional durante un tiempo. Los dos nuevos chicos geniales de los últimos años, Ruby y Python, están radicalmente más cerca de los lenguajes funcionales que los anteriores, tanto que algunos Lispers han comenzado a apoyar uno u otro como "lo suficientemente cerca"."

Y con el hardware masivamente paralelo que ejerce presión evolutiva sobre todos, y los lenguajes funcionales en el mejor lugar para lidiar con los cambios , no es un salto tan lejos como lo es una vez fue pensar que Haskell o F # será la próxima gran cosa.

 3
Author: Chuck,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-04 18:07:17

¿Has estado siguiendo la evolución de los lenguajes de programación últimamente? Cada nueva versión de todos los lenguajes de programación convencionales parece tomar prestadas más y más características de la programación funcional.

  • Cierres, funciones anónimas, pasar y devolver funciones como valores solían ser características exóticas conocidas solo por los hackers Lisp y ML. Pero gradualmente, C#, Delphi, Python, Perl, Javascript, han agregado soporte para cierres. No es posible para ningún lenguaje prometedor ser tomado en serio sin cierres.

  • Varios lenguajes, especialmente Python, C# y Ruby tienen soporte nativo para la comprensión de listas y generadores de listas.

  • ML fue pionero en la programación genérica en 1973, pero el soporte para genéricos ("polimorfismo paramétrico") solo se ha convertido en un estándar de la industria en los últimos 5 años. Si no recuerdo mal, Fortran soportó genéricos en 2003, seguido de Java 2004, C# en 2005, Delphi en 2008. (Sé que C++ ha soportado plantillas desde 1979, pero el 90% de las discusiones sobre el STL de C++comienzan con "here there be demons".)

¿Qué hace que estas características sean atractivas para los programadores? Debería ser claramente obvio: ayuda a los programadores a escribir código más corto. Todos los idiomas en el futuro van a admitir, como mínimo, cierres si quieren seguir siendo competitivos. A este respecto, la programación funcional ya está en la corriente principal.

La mayoría de las aplicaciones son lo suficientemente simples para ser resuelto en formas normales de OO

¿Quién dice que no se puede usar la programación funcional para cosas simples también? No todos los programas funcionales necesitan ser compiladores, probadores de teoremas o conmutadores de telecomunicaciones masivamente paralelos. Regularmente uso F# para scripts desechables ad hoc además de mis proyectos más complicados.

 3
Author: Juliet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-04 21:11:05

Se está poniendo de moda porque es la mejor herramienta para controlar la complejidad. Véase:
- diapositivas 109-116 de la charla de Simon Peyton-Jones"A Taste of Haskell"
- "The Next Mainstream Programming Language: A Game Developer's Perspective" por Tim Sweeney

 3
Author: ja.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-05 11:59:03
 3
Author: grom,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-10 05:36:14

Estoy de acuerdo con el primer punto, pero los tiempos cambian. Las corporaciones responderán, incluso si son adoptantes tardíos, si ven que hay una ventaja que tener. La vida es dinámica.

Estaban enseñando Haskell y ML en Stanford a finales de los 90. Estoy seguro de que lugares como Carnegie Mellon, MIT, Stanford y otras buenas escuelas lo están presentando a los estudiantes.

Estoy de acuerdo en que la mayoría de las aplicaciones de "exponer bases de datos relacionales en la web" continuarán en esa línea durante mucho tiempo. Java EE, . NET, Ror y PHP han desarrollado algunas soluciones bastante buenas para ese problema.

Usted ha golpeado en algo importante: Podría ser el problema que no se puede resolver fácilmente por otros medios que impulsarán la programación funcional. ¿Qué sería eso?

¿ El hardware multinúcleo masivo y la computación en la nube los impulsarán?

 2
Author: duffymo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-04 17:18:07

Porque FP tiene beneficios significativos en términos de productividad, confiabilidad y capacidad de mantenimiento. Many-core puede ser una aplicación asesina que finalmente hace que las grandes corporaciones cambien a pesar de los grandes volúmenes de código heredado.Además, incluso los grandes lenguajes comerciales como C# están adquiriendo un sabor funcional distinto como resultado de preocupaciones de muchos núcleos: los efectos secundarios simplemente no encajan bien con la concurrencia y el paralelismo.

No estoy de acuerdo en que los programadores "normales" no lo entiendan. Le will, al igual que eventualmente entendieron OOP (que es igual de misterioso y extraño, si no más).

Además, la mayoría de las universidades enseñan FP, muchas incluso lo enseñan como el primer curso de programación.

 2
Author: Sebastian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-04 17:40:42

Wow-esta es una discusión interesante. Mis propios pensamientos sobre esto:

FP hace que algunas tareas sean relativamente simples (en comparación con los lenguajes none-FP). Ninguno-Los lenguajes FP ya están empezando a tomar ideas de FP, así que sospecho que esta tendencia continuará y veremos más de una fusión que debería ayudar a la gente a dar el salto a FP más fácil.

 2
Author: Pete OHanlon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-04 21:51:03

No se si se pondrá de moda o no, pero a partir de mis investigaciones, un lenguaje funcional es casi seguro que vale la pena aprender, y te hará un mejor programador. Solo entender la transparencia referencial hace que muchas decisiones de diseño sean mucho más fáciles, y que los programas resultantes sean mucho más fáciles de razonar. Básicamente, si se encuentra con un problema, entonces tiende a ser solo un problema con la salida de una sola función, en lugar de un problema con un estado inconsistente, lo que podría han sido causados por cualquiera de los cientos de clases / métodos / funciones en un lenguaje imparativo con efectos secundarios.

Apátrida naturaleza de FP mapas de forma más natural a los apátridas, a la naturaleza de la web, y por lo tanto los lenguajes funcionales se prestan más fácilmente a la más elegante, TRANQUILO webapps. Contraste con JAVA y. NET frameworks que necesitan recurrir a HACKS horriblemente feos como VIEWSTATE y claves de SESIÓN para mantener el estado de la aplicación, y mantener el (a veces bastante fugas) abstracción de un lenguaje imperativo stateful, en una plataforma funcional esencialmente sin estado como la web.

Y también, cuanto más apátrida sea su aplicación, más fácilmente podrá prestarse al procesamiento paralelo. Terriblemente importante para la web, si su sitio web pasa a ser popular. No siempre es sencillo simplemente agregar más hardware a un sitio para obtener un mejor rendimiento.

 2
Author: Breton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-05 11:34:50

Mi punto de vista es que se pondrá de moda ahora que Microsoft ha empujado mucho más en la corriente principal. Para mí es atractivo por lo que puede hacer por nosotros, porque es un nuevo desafío y por las oportunidades de trabajo que resiente para el futuro.

Una vez dominada será otra herramienta para ayudarnos a ser más productivos como programadores.

 2
Author: Peanut,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-05 14:57:32

Un punto perdido en la discusión es que los mejores sistemas de tipos se encuentran en los lenguajes FP contemporáneos. Además, los compiladores pueden inferir todos (o al menos la mayoría) tipos automáticamente.

Es interesante que uno pasa la mitad del tiempo escribiendo nombres de tipos cuando se programa Java, sin embargo Java no es seguro para los tipos. Aunque nunca puede escribir tipos en un programa Haskell (excepto como una especie de documentación comprobada por el compilador) y el código es 100% seguro de tipos.

 2
Author: Ingo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-04-03 07:24:07

Además de las otras respuestas, lanzar la solución en términos funcionales puros obliga a uno a entender mejor el problema. Por el contrario, pensar en un estilo funcional desarrollará mejor * habilidades de resolución de problemas.

*Ya sea porque el paradigma funcional es mejor o porque permitirá un ángulo de ataque adicional.

 1
Author: Rodrick Chapman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-04 00:20:05