En el pasado, LISP era el único lenguaje de programación funcional poderoso, por lo que yo entiendo. Ahora hay muchos, ¿por qué la gente todavía usa LISP con su sintaxis extraña? ¿Existe un rasgo asesino único de un tipo?Por qué usar LISP hoy, cuando hay Scala, Erlang, Haskell etc.
Respuesta
Primero, Lisp en general y Common Lisp en particular es más "multi-paradigma" que "funcional". A partir de ahora, voy a discutir principalmente Common Lisp (CL).
Sin embargo, no existe una "función asesina". CL es un lenguaje de programación programable, lo que facilita la meta-programación. Es decir, normalmente puede hacer cosas de "meta-nivel" directamente en el idioma en lugar de tener que buscar un pre-procesador que realice la transformación textual en su idioma base.
CL también tiene un subsistema de objeto (CLOS) muy poderoso, que hasta ahora ha sido compatible con todo lo que he querido hacer con jerarquías y/o métodos de clase.
En lo que respecta a la sintaxis, supongo que es un poco diferente de la sintaxis más clásica de los idiomas de la "familia Algol", pero no es más y posiblemente menos extraño que APL.
Hay una única característica asesina. Se llama un macro-sistema. Con las macros puede ampliar su idioma y hace que sea muy fácil hacer excelentes DSL. Este tipo de cosas sería difícil (y no tan agradable) implementar con Scala, Erlang o Haskell.
La sintaxis o la falta de ella es lo que realmente le gusta a los parceros porque ofrece una gran uniformidad que es algo que falta en muchos idiomas. Para un programador C o Java estándar, la sintaxis de Erlang o Haskell es extraña también, así que lo que es peor acerca de la sintaxis es que se ve extraño.
Otra pregunta que debe responder es por qué son los otros idiomas mejores que Lisp, ¿qué función le falta a Lisp?
Pero, por supuesto, muchos idiomas modernos aprenden mucho de Lisp y hay muchos más idiomas que se pueden usar para el mismo problema.
No olvides que Lisp no es un idioma en el que hay diferentes tipos de dialectos Lisp. Scheme, Common Lisp o Clojure y todos tienen enfoques diferentes.
Por lo tanto, la pregunta qué idioma utilizar solo puede responderse probándolos, cada uno tiene algo muy especial sobre ellos. Erlang con los actores, Haskell y Scala tienen estos tipos de sistemas locos, Lisps tienen macro-sistemas increíbles ...
Hay Lisp Flavoured Erlang (LFE) que proporciona la sintesis lisp trayendo macros a Erlang. – boring
- 1. ¿Por qué existen ZeroMemory, etc. cuando ya hay memset, etc.?
- 2. Llegando a Ocaml de Ruby, Lisp, Haskell y Erlang
- 3. ¿Por qué usar matrices en VBA cuando hay colecciones?
- 4. ¿Por qué usar werkzeug cuando hay un matraz
- 5. ¿Qué herramienta es mi mejor apuesta para la depuración de Haskell con hebras hoy?
- 6. ¿Por qué no hay un buen esquema/lisp en llvm?
- 7. ¿Por qué compila erlang: foo()?
- 8. ¿Por qué mi strtotime ("hoy") no funciona?
- 9. ¿Por qué usar Jython cuando solo podías usar Java?
- 10. Lisp Flavored Erlang - Primitivas de mensajería
- 11. Haskell Scala interoperabilidad
- 12. en Scala, largo, int, etc.
- 13. Por qué usar scala.collection.immutable.Stack
- 14. transacciones y colas distribuidas, ruby, erlang, scala
- 15. ¿Por qué necesito jsr305 para usar guayaba en scala?
- 16. ¿Hay un equivalente a HLint para Erlang?
- 17. ¿Por qué necesitamos funcall en Lisp?
- 18. ¿Por qué no hay interpolación de cadenas en Scala?
- 19. ¿Por qué no hay ARM en Scala stdlib?
- 20. Haskell: ¿Por qué no hay desajuste de tipo (y por qué compila esto)?
- 21. ¿Por qué usar id cuando podemos usar NSObject?
- 22. ¿Para qué se usa lisp hoy y dónde crees que va?
- 23. ¿Scala y Erlang usan hilos verdes?
- 24. erlang vs jvm (scala) rendimiento de recursión
- 25. ¿Por qué las colecciones scala no tienen ningún método legible como .append, .push, etc.
- 26. C# 4.0: ¿Por qué MethodBag cuando hay ExpandoObject?
- 27. ¿Hay alguna pelusa para Common Lisp o Chicken Scheme?
- 28. ¿Por qué no hay muchas discusiones sobre contra y varianza en Haskell (a diferencia de Scala o C#)?
- 29. ¿Qué hace "nuevo" cuando lo llama un módulo de erlang?
- 30. ¿Por qué debería querer aprender Haskell?
Hoy en día, las personas usan Lisp, no LISP. Los dialectos más utilizados son Common Lisp, Scheme y Clojure. – Svante
Espera, ¿lo estás comparando con Scala, Erlang, Haskell, y crees que * Lisp * tiene "sintaxis extraña"? :-) – Ken
Si bien la sintaxis de Lisp puede ser inusual si proviene de un entorno C'ish, en realidad tiene la sintaxis más regular de cualquier idioma que haya visto. C, Java, etc. todos tienen una amplia variedad de reglas de sintaxis para lo que sea conveniente en ese momento, en lisp la sintaxis es AST (esencialmente) por lo que es increíblemente regular. – asm