¿Por qué debería elegir Clojure en otro idioma para un nuevo proyecto? ¿En qué áreas se destaca?¿Cuáles son los mejores casos de uso para usar Clojure para un nuevo desarrollo?
Respuesta
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.
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.
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.
- 1. ¿Cuáles son los casos de uso para __new__ de Python?
- 2. Casos de uso para Clojure en proyectos
- 3. ¿Cuáles son los casos de uso de jsdom
- 4. ¿Cuáles son las mejores referencias para usar jQuery?
- 5. ¿Cuáles son los posibles casos de uso de AOP?
- 6. ¿Cuáles son los casos de uso de Node.js vs Twisted?
- 7. ¿Cuáles son las mejores prácticas para usar Z2 Availability Zones?
- 8. ¿Cuáles son las mejores estrategias para usar múltiples bibliotecas AJAX?
- 9. Casos de uso para NoSQL
- 10. ¿Cuáles son los mejores beneficios de usar Pinax?
- 11. ¿Cuáles son algunos casos de uso común para usar el Microkernel Akka?
- 12. ¿Cuáles son los mejores recursos para aprender CIL (MSIL)
- 13. ¿Cuáles son los buenos casos de uso para las tuplas en C++ 11?
- 14. ¿Cuáles son los casos de uso adecuados para el tipo de datos de matriz PostgreSQL?
- 15. ¿Cuáles son los casos de uso para las funciones de cierre/devolución de llamada en JavaScript?
- 16. ¿Cuáles son los mejores recursos para comenzar con el desarrollo de plugins de Eclipse?
- 17. ¿Cuáles son algunos de los mejores patrones y prácticas para el desarrollo de PHP?
- 18. Casos de uso para IdentityHashMap
- 19. ¿Cuáles son los casos de uso para probar Scala 2.9 ... generalización de capturas?
- 20. ¿Cuáles son sus mejores prácticas para los proyectos de backbone.js?
- 21. ¿Cuáles son los mejores contadores de rendimiento ASP.NET para monitorear?
- 22. ¿Cuáles son algunos de los mejores recursos para aprender MSBuild?
- 23. ¿Cuáles son los casos de uso adecuados para process.nextTick en Node.js?
- 24. ¿Cuáles son buenos ejemplos de uso de 'enlace' en clojure?
- 25. ¿Cuáles son las mejores prácticas para usar los Métodos de extensión en .Net?
- 26. ¿Cuáles son los IDEs disponibles para desarrollo de gtk +
- 27. ¿Cuáles son los mejores recursos para aprender WPF y .NET?
- 28. ¿Cuáles son los casos de uso para tener un retorno de función por valor de const para tipo no incorporado?
- 29. ¿Cuáles son los mejores recursos para aprender Ant?
- 30. ¿Cuáles son los mejores IDE para el marco expreso - nodejs
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. –
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
Siempre puede presentar Clojure como una "biblioteca de Java para una programación simultánea mejorada" .... :-) – mikera