programming languages - ¿Qué factores podrían determinar si Clojure, Scala o Haskell ganarán tracción?
programming-languages (9)
Algunos de estos idiomas pueden ganar aceptación primero en entornos no comerciales y de código abierto. Más o menos lo que le sucedió a Perl, Python, Ruby (y algunos otros idiomas).
La facilidad de implementación del software (piense en apt-get) y la libertad del programador promueve la diversidad del lenguaje en el mundo del código abierto. Una vez que parte del software adquiere suficiente importancia, el lenguaje se vuelve inmortal en términos de soporte. Una vez que es inmortal, es una apuesta segura para todos. Los pequeños desarrolladores serán los primeros, y si obtienen algunas ventajas del uso del lenguaje, las grandes compañías lo seguirán.
Entonces, es una cuestión de qué comunidad es más amigable con el código abierto (enseñanza, documentación, infraestructura) y qué lenguaje le permite a un programador ser más productivo.
Dado que es imposible ver el futuro, ¿qué factores relacionados con Clojure, Scala o Haskell pueden determinar si alguno de ellos se da cuenta?
¿Hay problemas culturales o económicos que podrían dar a uno de estos idiomas una ventaja sobre los demás?
¿O es probable que ninguno de estos idiomas gane tracción debido a su complejidad conceptual?
Creo que para entrar en las grandes ligas (es decir, C, C #, C ++, Java) necesitan una amplia aceptación de unas pocas grandes empresas que desarrollan sus propias instalaciones pero que no son ellas mismas productoras de software . Pienso en grandes bancos, compañías de seguros, empresas de servicios, consultorías de gestión, etc.
Sin embargo, hay una gran barrera para esta aceptación en estos días; a saber, apoyo , mercado y estabilidad . Sin una gran empresa como Sun, IBM o Microsoft que brinde soporte, será muy difícil convencer a compañías como estas de que cualquier lenguaje nuevo es una apuesta segura .
Sin persuadir a estas compañías, el mercado para desarrolladores familiarizados con los idiomas será pequeño. Siempre y cuando haya una pequeña base de usuarios, el idioma puede permitirse realizar cambios incompatibles con los cambios hacia atrás solicitados por la comunidad. De ahí un círculo vicioso de adopción no convencional.
Desde el mundo Haskell, veo las cosas principales para seguir impulsando como:
- Bibliotecas, tenemos
1500> 4000 en Hackage, y esta es una ventaja competitiva significativa. - Instalación fácil en cada sistema (La plataforma Haskell)
- Más documentación, tutoriales y libros
- Historias de éxito industrial continuas (es decir, el primer microkernel verificado utilizado Haskell , la construcción de sistemas de comercio en tiempo real con fines de lucro en Haskell )
Además de esto, es difícil de decir. Algunos pensamientos al azar: Haskell ha existido durante 20 años, tiene una gran base de usuarios y mucho apoyo comercial. Clojure es pequeño en comparación. Scala y Clojure obtienen "puntos gratis" ejecutando en .NET o JVM. ¿Eso importa? ¿Cuánto importa el tiempo de ejecución? GHC tiene un tiempo de ejecución paralelo muy rápido, porque no es la JVM, pero a las personas les gusta usar la JVM. Lo mismo para .NET. ¿Importa la madurez / estabilidad?
Y además de todo esto, ¿quién está haciendo el mejor alcance?
Ah, y tenemos The Industrial Haskell Group .
En lo alto de mi cabeza:
- buen soporte IDE (con refactorización)
- especificaciones suficientemente estables
- política clara sobre compatibilidad hacia atrás (en términos de fuentes, binarios y comportamiento)
- marcos y herramientas en torno al lenguaje (como análisis estático de código, cobertura de código, ...)
Scala, por ejemplo, todavía está evolucionando y moviéndose "demasiado rápido" para ser usado "en gran medida", aunque algunos grandes proyectos ya lo han adoptado.
Edición: noviembre de 2009
Consulte Refactorización para DSL de Scala y presentación de resumen de LiftOff 2009 , Diapositiva 10 y 11:
Martin definitivamente "entiende" la importancia de contar con la ayuda de la herramienta Scala de alta calidad
En mi humilde opinión, el factor principal se refiere al resultado de la investigación con el objetivo de proporcionar un paralelismo implícito en los lenguajes puramente funcionales. Si / cuando esto funcione, entonces es probable que Haskell se convierta en la corriente principal.
En cuanto a Scala y Clojure ... Scala tiene la sintaxis históricamente más aceptable. Eso es un exceso. Algunos pueden argumentar que Clojure tiene un macro sistema, pero las macros son expresivamente equivalentes a clojures, por lo que esta no es una ventaja real.
De todos modos, creo que los lenguajes de tipo estático no son apropiados para todas las áreas, a saber, desarrollo web. Y, curiosamente, hoy en día hay una tendencia a hacer que todo esté basado en la web. No creo que Ruby fuera una exageración: está madurando muy rápido.
Haskell o Ruby barrerán evryone en el mundo. Es probable que Ruby tenga más éxito ya que Haskell es complejo y difícil de aprender.
Ruby 2.x se convertirá en padre de ''Scala y Clojure''. Tendrá una nueva versión con alta velocidad, GIL eliminado y módulos incorporados para el procesamiento en paralelo, programación funcional, macros.
Pensando aún más, se construirán más bibliotecas en ruby para diversas tareas. Esto se hará una vez que la versión 2.X vendrá con todos los feechurs mencionados anteriormente.
¡¡¡Creo que Matz y Antonio !!!!!
C ++, Java, .NET, Python, Scala se verán en los museos. XXXXX
C, Perl y PHP seguirán vivos para pequeñas aplicaciones / tareas.
MySQL, Oracle, SQLServer también se verán en la sección ''db'' del museo. XXXXX
SQlite, PostgreSQL seguirá vivo fuera.
Aclamaciones,
Hombre de Ur
OK, voy a tomar una conjetura salvaje. Creo que el factor necesario para el éxito es "¿puede hacer el trabajo de Java?".
Lo real que Java hace es escribir estático. Si bien esto es molesto para programas pequeños, permite la construcción de sistemas estables grandes. Permite refactorizar con confianza.
Piénselo: cada idioma tiene un tipo de programa de tamaño máximo que admite. Para superar ese tamaño se requiere un diseño e implementación cada vez mayor a la media.
Como una consideración secundaria, Java es bastante rápido y tiene una biblioteca bastante completa.
Entonces, supongo que esos son los criterios, y entonces Scala tiene una oportunidad.
Lo único negativo es la dificultad de ejecutar servidores web de servidores compartidos baratos con JVM.
Respaldo de una gran empresa de desarrollo de software. Mire lo que le tomó a Java y C # para llegar a donde están. Eso es lo que les tomará a otros llegar allí también.
Un factor cultural es cuán similar es el lenguaje a los idiomas populares existentes. Por ejemplo, la evolución de C -> C ++ -> Java -> C #.
Haskell tiene la brecha más grande de la corriente principal, con una sintaxis desconocida, un stack de tiempo de ejecución, un paradigma de programación y una comunidad orientada mucho más hacia la academia que hacia la industria.