Recientemente probé Scala y Clojure, en base a motivaciones similares. Esto es lo que encontré:
Scala es enormemente versátil y potente; Scala le permite definir tipos con gran precisión y le permite definir DSL que son escuetos y limpios. Scala tiene muchos constructos geniales que uno desearía tener, incluyendo un montón de extensiones funcionales. Pero cuando llegó el momento, terminé codificando Java imprescindible en el lenguaje Scala porque la complejidad de todas esas cosas geniales me abrumaba.
Hice un poco de Lisp en la Universidad, y siempre tuve el anhelo de volver a hacerlo. Algunas cosas muy interesantes de vanguardia las hacen personas muy inteligentes en Lisp, y en muy pocas líneas. Quería ser una de esas personas inteligentes, o al menos tratar de ser como ellos. Pero nunca entendí a Scheme, y extrañé mi "fuente infinita de bibliotecas" de Java. No pude verme escribiendo una GUI en Scheme, y tuve problemas para visualizar una aplicación web.
Luego probé Clojure y parecía que todo encajaba en su lugar. Clojure se hizo intencionalmente más amigable con los extraños: se intenta reducir los paréntesis y utilizar diferentes signos de puntuación entre paréntesis para diferentes situaciones. Tratar cosas como matrices, texto y XML como secuencias, combinado con un poderoso conjunto de funciones de secuencia, hizo que muchos problemas fueran bastante simples, al igual que el soporte para matrices y hashpaps. Es (intencionalmente) como Java funcional. El mindeset funcional tarda un poco en acostumbrarse, pero en ninguna parte lo encontré tan accesible o agradable como en Clojure. Mi código apenas necesita bucles, sin embargo, es más claro sobre dónde está el bucle/secuenciación, y es más conciso. Puedo hacer estado mutable si realmente lo necesito, pero tengo que ser explícito al respecto; a cambio, ese estado está protegido por los mecanismos de concurrencia de Clojure. La concurrencia, entonces, se convierte casi en una obviedad, a veces mi código se ejecuta de forma segura en paralelo sin ningún esfuerzo consciente propio.
No viene de Java, esto no te parecerá muy útil, pero Clojure puede hacer cualquier cosa que pueda hacer Java, incluidos los archivos .class totalmente compatibles. Lo más importante es que puede interactuar con todas las bibliotecas de Java, y esa capacidad por sí sola hará que PHP parezca un lenguaje de juguete para ti.
¿Entonces estás diciendo que no debería aprender Scala o Clojure? Estoy confundido, porque ambos cumplen tus criterios. ¿Qué tiene esto que ver con la pregunta? –
Sea constructivo, los chicos pidieron una solución viable no fuz. –
No tengo experiencia con Scala o Clojure, así que no puedo recomendar ninguno de esos. Sin embargo, recomiendo 2 plataformas bastante grandes que se usan en sistemas empresariales. – monksy