2009-09-01 8 views
34

Dado que es imposible ver hacia el futuro, ¿qué factores relacionados con Clojure, Scala o Haskell pueden determinar si alguno de ellos se da cuenta?¿Qué factores podrían determinar si Clojure, Scala o Haskell ganarán tracción?

¿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?

+0

Su pregunta parece sugerir que ser el próximo Rubí/Python sería el ideal, a pesar de que esos son los dos idiomas claramente minoritarios, y no son "grandes lenguas" . – skaffman

+0

Tengo dificultades para generar imágenes, ya que cualquiera de ellas tendrá una amplia aceptación en la comunidad de desarrolladores, incluso para comenzar a llamarlas convencionales. –

+5

Si bien las preguntas subjetivas son válidas, las preguntas que son poco más que una encuesta de opiniones deben hacerse en la wiki de la comunidad. Esta pregunta se ajusta a ese criterio, así que, por favor, conviértalo en una wiki comunitaria. –

Respuesta

20

En la parte superior de mi cabeza:

  • buen soporte IDE (con refactorización)
  • especificaciones suficientemente estable
  • política clara sobre backward compatibility (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 2009

Ver Refactoring to Scala DSLs and LiftOff 2009 Recap presentación, la diapositiva 10 y 11:

Martin definitivamente "se lo" acerca de la importancia de contar con el apoyo de herramientas Scala alta calidad

+6

La capacidad de interoperar fácilmente con otros lenguajes (C FFI en general, y la interoperabilidad COM y .NET en Windows) también es bastante importante para su adopción. –

+0

@Pavel Entonces, ¿cualquier lenguaje que no tenga interconexión .NET es un error? ¿Tienes alguna base para esta lógica? – Rayne

+1

Aunque obviamente no puedo hablar en su nombre, creo que Pavel no está diciendo que el uso de un idioma sea un requisito. Es "bastante importante", como él dice, no "requerido". Me inclino a estar de acuerdo con él: el éxito de Python (ya sea que piense que es grande o pequeño) se atribuye en parte a su amabilidad con C, por ejemplo. – agorenst

17

Desde el mundo Haskell, veo las cosas principales para seguir presionando como:

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?

Oh, y tenemos The Industrial Haskell Group.

+0

Clojure también es nuevo. Otra cosa que Clojure y Scala tienen a su favor, es el hecho de que las personas pueden aprender sin volar sus cerebros. Haskell tiene un montón de "OMG ITZ SO HARD" detrás de él, y creo que siempre lo ha hecho, y siempre obstaculizará su popularidad. – Rayne

+3

http://learnyouahaskell.com/ realmente puede ayudar a los principiantes a aprender Haskell. ¿Alguna otra buena referencia de Haskell para principiantes? –

+1

Correr en JVM y .NET es atractivo porque permite la integración fácil y profunda con bases de código existentes en esos tiempos de ejecución. – nohat

2

Bien, voy a tomar una conjetura salvaje. Creo que el factor necesario para el éxito es "¿puede hacer el trabajo de Java?".

Lo que hace Java es tipear 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 el 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, por lo que Scala tiene una oportunidad.

Lo único negativo es la dificultad de ejecutar servidores web de servidores compartidos baratos con la JVM.

10

creo que para romper en el gran liga (es decir, C, C#, C++, Java) que necesitan aceptación generalizada de unas pocas grandes empresas que hacen de desarrollo interno, pero no son en sí mismas casas de software . Pienso en grandes bancos, compañías de seguros, compañías de servicios, consultorías de gestión, etc.

Sin embargo, hoy en día existe una gran barrera a esta aceptación; a saber apoyo, mercado y estabilidad. Sin una gran compañía como Sun, IBM o Microsoft que brinde soporte, será muy difícil convencer a compañías como estas de que cualquier lenguaje nuevo es apuesta segura.

Sin persuadir a estas empresas, 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.

+1

Tengo curiosidad acerca de por qué piensas que tu primera declaración debe ser verdadera. Cuando pienso en grandes instituciones financieras o grandes empresas médicas, o lo que sea, pienso en todo tipo de softwares que son la "norma" en esos entornos, pero de los que la mayoría de la gente no sabe nada. Un buen ejemplo de esto es ANSI M (MUMPS). Es ampliamente utilizado en las finanzas y la medicina, pero es prácticamente inaudito en cualquier otro lugar. Según su razonamiento, usted pensaría que todos lo habrían adoptado ... ¿O estoy malinterpretando su punto? – Shaun

+4

Creo que está confundiendo * "X es una condición necesaria para Y" * con * "X implica Y" *. De hecho, es equivalente a * "no X implica que no Y" *. Además, MUMPS no tiene nada que ver con la adopción de C/C++/Java en mi experiencia: he trabajado en bancos de inversión y en la industria financiera durante 12 años y la primera vez que escuché que estaba en TheDailyWTF :-) –

3

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 despliegue 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 permite que un programador sea más productivo.

2

Respaldo de una compañía de desarrollo de software grande. 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.

2

Un factor cultural es la similitud del lenguaje con 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.

0

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 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.

+2

"Algunos pueden argumentan que Clojugre tiene un macro sistema "? No, definitivamente * tiene un sistema macro. Y las macros no son equivalentes a funciones, por lo que no son equivalentes a cierres. – user359996

+0

_expressively_ equivalent –

+2

¿Cómo? Los cierres y macros casi no están relacionados. El primero tiene que ver con el alcance variable y el enlace, mientras que el segundo tiene que ver con la manipulación ortogonal de las estructuras sintácticas para su evaluación. – user359996

-5

Haskell o Ruby barrerá 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 el padre de 'Scala and 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á en la sección 'db' del museo. XXXXX
SQlite, PostgreSQL seguirá vivo fuera.

Cheers,
Ur hombre

+1

por supuesto, sí ... y me sacaste las palabras de la boca ... pero, ¿has traído aquí un único argumento de valor? Es una pena ... ¡oh, por supuesto que no los pasa por referencia! –

Cuestiones relacionadas