¿Cuáles son las ventajas y desventajas de Lisp y Haskell? ¿Cuál es mejor para aprender?
En cuanto a la forma de pensar, no hay mucha diferencia entre ambos. Teniendo en cuenta que la programación funcional no es la corriente principal del desarrollo de programas en la actualidad, ya sea Lisp o Haskell, es muy diferente de las prácticas de ingeniería convencionales. Pero cuando se trata de lenguajes de programación funcionales, las ideas básicas son similares. La esencia del estilo de programación funcional: eliminar los efectos secundarios de la asignación, utilizar funciones de alto orden con contexto autónomo y diseñar programas centrados en el flujo de "valor" en lugar de cambios en las operaciones. Esto es lo mismo en ambos lenguajes. . Por supuesto, todavía existen diferencias entre los dos lenguajes en detalles: la expansión macro de Lisp, la escritura débil / escritura dinámica, la evaluación perezosa de Haskell y la escritura fuerte tienen sus propias diferencias. Cuando empieces a utilizarlo, debes prestar atención a sus características para utilizarlo bien.
En términos de comunidad, Lisp tiene una comunidad fija, pero debido a la existencia de una gran cantidad de dialectos Lisp, ahora está muy fragmentada. Además de la gran comunidad de Common Lisp, también hay varias pequeñas comunidades de Lisp repartidas por todas partes. Esto hace que sea realmente difícil para la comunidad Lisp trabajar en conjunto para crear una plataforma que sea común para todos los dialectos; sí, incluso si Common Lisp es la comunidad más grande, sigue siendo uno de los dialectos de la fuente. Debo admitir que Haskell es mucho mejor en esto. La comunidad Haskell está bien unificada a través de http://www.haskell.org, ya sea para enseñanza o desarrollo, es fácil reunir la fuerza de toda la comunidad.
Cuando se trata de ingeniería, al menos hasta ahora, la comunidad Haskell lo ha estado promoviendo como un lenguaje de programación de propósito general. Pero con el debido respeto, esta comunidad aún no ha encontrado un escenario laboral que sea realmente adecuado para ella, o en otras palabras, esta comunidad no es lo suficientemente madura para soportar un escenario laboral que sea adecuado para ella. En mi opinión, el núcleo de esta comunidad sigue siendo un lenguaje de juguete. Mirando hacia atrás en la comunidad Lisp, sus escenarios de aplicación son simples y enfocados: deducción simbólica e inteligencia artificial. Al mismo tiempo, muchos dialectos Lisp también han extendido su alcance al campo de la ingeniería práctica y se utilizan junto con otros lenguajes; También existen software de propósito general como Emacs y Gimp que son reconocidos en sus respectivos campos.