2011-01-07 10 views

Respuesta

6

Algunos escenarios en los que yo usaría Clojure:

  • Usted está construyendo una nueva altamente concurrente aplicación, que necesita para escalar de forma fiable. En mi opinión, las características de concurrencia de Clojure (STM, inmutabilidad por defecto, MVCC sin bloqueo) son las mejores de cualquier lenguaje principal de en la actualidad. Rick Hickey's excellent video acerca de Identity and State es una gran manera de sentir esto.

  • Usted es una tienda basada en Java que quiere un lenguaje dinámico productiva que se puede utilizar para el desarrollo rápido o de scripting, manteniendo su inversión en una base de código Java grande. He encontrado que Clojure es bastante efectivo para "pegar" el código Java, ya que las capacidades de interoperabilidad son extremadamente buenas (¡y simples!).

  • Si desea utilizar un lenguaje programación funcional Clojure es bastante buena (que no es tan "puro", como Haskell, pero tiene todas las características clave - funciones de primer nivel, la composición de orden superior función, la inmutabilidad, la pereza)

  • Si trabaja en un campo donde hay una gran necesidad de la manipulación del código (compiladores, de dispositivo, el procesamiento del lenguaje natural, la programación genética), donde el LISP "código son datos" filosofía le permite ser extremadamente productiva . Este es un punto ideal para homoiconic idiomas basados ​​en LISP en general.

2

A riesgo de proporcionar exactamente el tipo de respuesta no reductiva a la que se refiere Devin: elegí Clojure porque me gusta el estilo de programación funcional y Clojure me permite hacerlo en la JVM e interoperar con muchos códigos existentes que se ejecuta en la JVM.

Entonces la pregunta es: ¿Por qué la programación funcional?

Estado inmutable: falta de efectos secundarios, pruebas más sencillas, mejor compatibilidad con la concurrencia (y, en el futuro, paralelismo).

Componentes pequeños y funcionales que se pueden reutilizar y componer fácilmente para construir sistemas grandes y flexibles.

1

es muy difícil encontrar desarrolladores de clojure, así que me mantendría alejado de él si trabajas para una gran compañía y te quedas con java o .net. es más una decisión política que técnica en las grandes compañías. Sin embargo, si está construyendo su propio producto, entonces clojure es muy rápido para desarrollarse y puede llevarlo al mercado más rápido.

+0

Eso es un poco de gallina y huevo, sin embargo, si nadie adopta Clojure, es difícil encontrar desarrolladores. Si más compañías lo adoptan, habrá más desarrolladores en el mercado. Dado que Lisp/Clojure no tiene esencialmente sintaxis para aprender, la documentación de la función central es excelente (y hay varios libros excelentes sobre Clojure) y los conceptos, una vez dominados, se aplican de manera casi uniforme en cada parte del lenguaje. Diría que es un lenguaje bastante fácil de aprender y/o entrena a los desarrolladores. –

+0

Sí, es cierto que el lenguaje tiene una sintaxis pequeña y es fácil de aprender.Creo que una vez que Clojure obtenga un marco asesino como el equivalente de Ruby's Rails o una gran empresa como IBM haciendo proyectos usando Clojure, crecerá mucho más rápido y se expandirá en más compañías grandes. – Zubair

+2

Siempre puede presentar Clojure como una "biblioteca de Java para una programación simultánea mejorada" .... :-) – mikera

Cuestiones relacionadas