Articulo de referencia

Clojure

{{cite web |url=https://clojure.org/reference/agents |title=Agents and Asynchronous Actions |website=Clojure.org |access-date=2019-07-07}} \n* [[Concurrent programming|concurren...

Clojure ( / ˈ k l ʒ ər / , como closure ) [ 17 ] [ 18 ] es un dialecto dinámico y funcional del lenguaje de programación Lisp en la plataforma Java . [ 19 ] [ 20 ]

Al igual que la mayoría de los demás Lisp, la sintaxis de Clojure se basa en expresiones S que primero son analizadas en estructuras de datos por un lector de Lisp antes de ser compiladas . [ 21 ] [ 17 ] El lector de Clojure admite sintaxis literal para mapas , conjuntos y vectores , además de listas, y estos se compilan directamente a las estructuras mencionadas. [ 21 ] Clojure trata el código como datos y tiene un sistema de macros de Lisp . [ 22 ] Clojure es un Lisp-1 y no está diseñado para ser compatible con el código de otros dialectos de Lisp, ya que utiliza su propio conjunto de estructuras de datos incompatibles con otros Lisp. [ 22 ]

Clojure aboga por la inmutabilidad y las estructuras de datos inmutables , y anima a los programadores a ser explícitos en la gestión de la identidad y sus estados. [ 23 ] Este enfoque en la programación con valores inmutables y construcciones explícitas de progresión del tiempo tiene como objetivo facilitar el desarrollo de programas más robustos, especialmente concurrentes , que sean simples y rápidos. [ 24 ] [ 25 ] [ 17 ] Si bien su sistema de tipos es completamente dinámico , los esfuerzos recientes también han buscado la implementación de un sistema de tipos dependiente . [ 26 ]

El lenguaje fue creado por Rich Hickey a mediados de la década de 2000, originalmente para la plataforma Java; desde entonces, se ha adaptado a otras plataformas, como Common Language Runtime (.NET). Hickey continúa liderando el desarrollo del lenguaje como su benevolente creador vitalicio .

Historia

Rich Hickey, creador de Clojure

Rich Hickey es el creador del lenguaje Clojure. [ 19 ] Antes de Clojure, desarrolló dotLisp, un proyecto similar basado en la plataforma .NET , [ 27 ] y tres intentos anteriores de proporcionar interoperabilidad entre Lisp y Java : una interfaz de lenguaje extranjero de Java para Common Lisp ( jfli), [ 28 ] una interfaz de objetos extranjeros para Lisp (FOIL), [ 29 ] y una interfaz amigable de Lisp para servlets de Java (Lisplets). [ 30 ]

Hickey comenzó a trabajar en Clojure en 2005 [ 31 ] [ 32 ] y pasó alrededor de dos años y medio trabajando en Clojure antes de publicarlo en octubre de 2007, [ 33 ] gran parte de ese tiempo trabajando exclusivamente en Clojure sin financiación externa. Stephanie Hickey, su esposa, ayudó a diseñar el lenguaje siendo una oyente activa y participando en discusiones sin escribir ningún código [ 32 ] . Al final de este tiempo, Hickey envió un correo electrónico anunciando el lenguaje a algunos amigos de la comunidad Common Lisp.

Según Hickey, el nombre de Clojure es un juego de palabras con el concepto de programación " cierre " que incorpora las letras C, L y J de C# , Lisp y Java respectivamente, tres lenguajes que tuvieron una gran influencia en el diseño de Clojure. [ 18 ]

Diseño

Rich Hickey desarrolló Clojure porque quería un Lisp moderno para la programación funcional , simbiótico con la plataforma Java establecida y diseñado para la concurrencia . [ 24 ] [ 25 ] [ 34 ] [ 17 ] [ 32 ] También ha enfatizado la importancia de la simplicidad en el diseño de lenguajes de programación y arquitectura de software, abogando por el acoplamiento débil , el polimorfismo a través de protocolos y clases de tipos en lugar de herencia , funciones sin estado que son espacios de nombres en lugar de métodos o reemplazar la sintaxis con datos . [ 35 ] [ 36 ] [ 31 ]

El enfoque de Clojure respecto al estado se caracteriza por el concepto de identidades, [ 23 ] que se representan como una serie de estados inmutables a lo largo del tiempo. Dado que los estados son valores inmutables, cualquier número de procesos puede operar sobre ellos en paralelo, y la concurrencia se convierte en una cuestión de gestionar los cambios de un estado a otro. Para ello, Clojure proporciona varios tipos de referencia mutables , cada uno con una semántica bien definida para la transición entre estados. [ 23 ]

Clojure se ejecuta en la plataforma Java y, como resultado, se integra con Java y admite completamente la llamada a código Java desde Clojure, [ 37 ] [ 17 ] y también se puede llamar a código Clojure desde Java. [ 38 ] La comunidad utiliza herramientas como la interfaz de línea de comandos (CLI) de Clojure [ 39 ] o Leiningen para la automatización de proyectos, que proporciona soporte para la integración con Maven . Estas herramientas gestionan la administración de paquetes y dependencias del proyecto y se configuran utilizando la sintaxis de Clojure.

Como dialecto de Lisp, Clojure admite funciones como objetos de primera clase , un bucle de lectura-evaluación-impresión (REPL) y un sistema de macros. [ 6 ] El sistema de macros de Lisp de Clojure es muy similar al de Common Lisp con la excepción de que la versión de Clojure de la comilla invertida (denominada "comilla sintáctica") califica los símbolos con su espacio de nombres . Esto ayuda a prevenir la captura de nombres no deseada, ya que está prohibido vincularse a nombres calificados con espacio de nombres. Es posible forzar una expansión de macro de captura, pero debe hacerse explícitamente. Clojure no permite macros de lector definidas por el usuario, pero el lector admite una forma más restringida de extensión sintáctica. [ 40 ] Clojure admite multimétodos [ 41 ] y para abstracciones tipo interfaz tiene un protocolo [ 42 ] basado en polimorfismo y sistema de tipos de datos que utiliza registros , [ 43 ] proporcionando un polimorfismo dinámico y de alto rendimiento diseñado para evitar el problema de la expresión .

Clojure admite secuencias perezosas y fomenta el principio de inmutabilidad y estructuras de datos persistentes . Como lenguaje funcional , se hace hincapié en la recursión y las funciones de orden superior en lugar de los bucles basados ​​en efectos secundarios. No admite la optimización automática de llamadas recursivas, ya que la JVM no la admite de forma nativa; [ 44 ] [ 45 ] [ 46 ] es posible hacerlo explícitamente mediante el uso de la recurpalabra clave. [ 47 ] Para la programación paralela y concurrente , Clojure proporciona memoria transaccional de software , [ 48 ] un sistema de agentes reactivos , [ 1 ] y programación concurrente basada en canales . [ 49 ]

Clojure 1.7 introdujo condicionales de lector al permitir la incrustación de código Clojure, ClojureScript y ClojureCLR en el mismo espacio de nombres. [ 50 ] [ 21 ] Se agregaron transductores como un método para componer transformaciones. Los transductores permiten que funciones de orden superior como map y fold se generalicen sobre cualquier fuente de datos de entrada. Si bien tradicionalmente estas funciones operan en secuencias , los transductores les permiten trabajar en canales y permiten que el usuario defina sus propios modelos para la transducción. [ 51 ] [ 52 ] [ 53 ]

Notación de datos extensible

La notación de datos extensible , o edn , [ 54 ] es un subconjunto del lenguaje Clojure concebido como un formato de transferencia de datos. Se puede utilizar para serializar y deserializar estructuras de datos de Clojure, y Clojure mismo utiliza un superconjunto de edn para representar programas.

edn se utiliza de forma similar a JSON o XML , pero tiene una lista relativamente grande de elementos integrados, que se muestran aquí con ejemplos:

  • booleanos: true,false
  • instrumentos de cuerda:"foo bar"
  • personajes: \c,\tab
  • símbolos:name
  • palabras clave::key
  • números enteros:123
  • números de punto flotante:3.14
  • liza:(a b 42)
  • vectores:[a b 42]
  • mapas:{:a1,"foo":bar,[123]four}
  • conjuntos:#{ab[123]}
  • nil: nil(un valor similar a un valor nulo )

Además de estos elementos, admite la extensibilidad mediante el uso de etiquetas , que consisten en un carácter #seguido de un símbolo. Al encontrar una etiqueta, el lector pasa el valor del siguiente elemento al controlador correspondiente, que devuelve un valor de datos. Por ejemplo, este podría ser un elemento etiquetado: , cuya interpretación dependerá del controlador apropiado del lector.#myapp/Person{:first"Fred":last"Mertz"}

Esta definición de elementos de extensión en términos de los demás evita depender de convenciones o contexto para transmitir elementos no incluidos en el conjunto base.

Plataformas alternativas

La plataforma principal de Clojure es Java , [ 20 ] [ 37 ] pero existen otras implementaciones de destino. Las más notables son ClojureScript, [ 55 ] que compila a ECMAScript 3 [ 56 ] (o ES5 o ES5-strict más recientes, hasta ES-2021, y ES-next posible) [ 57 ] y ClojureCLR, [ 58 ] una adaptación completa a la plataforma .NET , interoperable con su ecosistema.

Otras implementaciones de Clojure en diferentes plataformas incluyen:

  • Babashka, [ 59 ] Lenguaje de scripting nativo de Clojure que aprovecha la imagen nativa de GraalVM y el intérprete de Clojure pequeño
  • ClojureDart, [ 60 ] Extiende el alcance de Clojure a aplicaciones móviles y de escritorio portando Clojure a Dart y Flutter
  • Clojerl, [ 61 ] Clojure en BEAM , la máquina virtual de Erlang
  • basilisp, [ 62 ] Un dialecto Lisp compatible (más o menos) con Clojure, dirigido a Python 3.8+
  • ClojureRS, [ 63 ] Clojure en Rust
  • Ferret, [ 64 ] compila a C++11 autocontenido que puede ejecutarse en microcontroladores
  • jank, [ 65 ] Clojure nativo alojado en C++ en un JIT basado en LLVM
  • Joker, [ 66 ] un intérprete y linter escrito en Go

Herramientas

Las herramientas para el desarrollo en Clojure han experimentado mejoras significativas a lo largo de los años. A continuación se muestra una lista de algunos IDE y editores de texto populares con complementos que añaden soporte para la programación en Clojure: [ 67 ]

Además de las herramientas proporcionadas por la comunidad, las herramientas oficiales de la interfaz de línea de comandos (CLI) de Clojure [ 39 ] también están disponibles en Linux , macOS y Windows desde Clojure 1.9. [ 80 ]

Desarrollo

El proceso de desarrollo está restringido al equipo central de Clojure, aunque los problemas son visibles públicamente en la página del proyecto Clojure en JIRA . [ 81 ] Cualquiera puede hacer preguntas o enviar problemas e ideas en ask.clojure.org. [ 82 ] Si se determina que un nuevo problema justifica un ticket en JIRA, un miembro del equipo central lo priorizará y lo agregará. Los problemas de JIRA son procesados ​​por un equipo de revisores y finalmente aprobados por Rich Hickey. [ 83 ] [ 84 ]

Impacto

Con el interés continuo en la programación funcional, la adopción de Clojure por parte de los desarrolladores de software que utilizan la plataforma Java ha seguido aumentando. [ 85 ] El lenguaje también ha sido recomendado por desarrolladores de software como Brian Goetz, [ 86 ] [ 87 ] [ 88 ] Eric Evans, [ 89 ] [ 90 ] James Gosling , [ 91 ] Paul Graham , [ 92 ] y Robert C. Martin . [ 93 ] [ 94 ] [ 95 ] [ 96 ] ThoughtWorks , al evaluar lenguajes de programación funcional para su Technology Radar, [ 97 ] describió Clojure como "una implementación simple y elegante de Lisp en la JVM" en 2010 y elevó su estatus a "ADOPTAR" en 2012. [ 98 ]

En el "Informe del Ecosistema de la JVM 2018" (que se afirmó que era "la mayor encuesta jamás realizada a desarrolladores de Java"), preparado en colaboración por Snyk y Java Magazine, Clojure se clasificó como el segundo lenguaje de programación más utilizado en la JVM para "aplicaciones principales". [ 99 ] Clojure es utilizado en la industria por empresas [ 100 ] como Apple , [ 101 ] [ 102 ] Atlassian , [ 103 ] Funding Circle , [ 104 ] Netflix , [ 105 ] Nubank , [ 106 ] Puppet , [ 107 ] y Walmart [ 108 ] así como agencias gubernamentales como la NASA . [ 109 ] También se ha utilizado para la computación creativa, incluyendo arte visual, música, juegos y poesía. [ 110 ]

En la edición 2023 de la encuesta para desarrolladores de Stack Overflow , Clojure fue el cuarto lenguaje más admirado en la categoría de lenguajes de programación y scripting, con un 68,51 % de los encuestados que trabajaron con él el año pasado afirmando que les gustaría seguir usándolo. Sin embargo, en la categoría de lenguajes deseados , solo el 2,2 % de los encuestados lo marcó como tal, mientras que JavaScript, el lenguaje con la puntuación más alta , fue deseado por el 40,15 % de los desarrolladores que participaron en la encuesta. [ 111 ]

Historial de lanzamientos

Véase también

Referencias

  1. 1 2 "Agentes y acciones asíncronas" . Clojure.org . Consultado el 7 de julio de 2019 .
  2. "Programación concurrente" . Clojure.org . Consultado el 7 de julio de 2019 .
  3. Hickey, Rich; colaboradores. "core.async" . GitHub . Consultado el 7 de julio de 2019 .
  4. "Programación funcional" . Clojure.org . Consultado el 7 de julio de 2019 .
  5. Nolen, David; Hickey, Rich. "core.logic" . GitHub . Consultado el 7 de julio de 2019 .
  6. 1 2 "Macros" . Clojure.org . Consultado el 7 de julio de 2019 .
  7. Esterhazy, Paulus. "Guía de macros de enhebrado" . Clojure.org . Consultado el 7 de julio de 2019 .
  8. 1 2 Miller, Alex (10-12-2025). "Lanzamiento de Clojure 1.12.4" .
  9. Fogus, Michael (2011). "Preguntas y respuestas con Rich Hickey" . CodeQuarterly.com . Archivado del original el 11 de enero de 2017.
  10. Hickey, Rich (2011). "Simple Made Easy" . YouTube .
  11. Bonnaire-Sergeant, Ambrose (2012). Un sistema práctico de tipos opcionales para Clojure (Tesis). Universidad de Australia Occidental.
  12. "Programación en Clojure" (PDF) . OReilly.com . Consultado el 30 de abril de 2013 .
  13. Hickey, Rich. "Clojure Bookshelf" . Amazon.com . Archivado del original el 3 de octubre de 2017. Consultado el 7 de julio de 2019 .
  14. Rose, Calvin; colaboradores. "Janet Language" . Janet-Lang.org . Consultado el 18 de febrero de 2023 .
  15. Baldridge, Timothy. "Pixie" . GitHub . Consultado el 6 de febrero de 2025 .
  16. ^ Ramachandra, Ramkumar. "Rin" . GitHub . Consultado el 7 de julio de 2019 .
  17. 1 2 3 4 5 Edwards, Kathryn (10 de agosto de 2009). "El AZ de los lenguajes de programación: Clojure" . Computerworld.com.au . Archivado del original el 26 de agosto de 2019.
  18. 1 2 Hickey, Rich (2009-01-05). "significado y pronunciación de Clojure" . Google.com .
  19. 1 2 Krill, Paul (22-03-2012). "El inventor de Clojure, Hickey, ahora apunta a Android" . InfoWorld.com .
  20. 1 2 "Clojure" . Clojure.org . Consultado el 7 de julio de 2019 .
  21. 1 2 3 "El lector" . Clojure.org . Consultado el 7 de julio de 2019 .
  22. 1 2 "Diferencias con otros Lisp" . Clojure.org . Consultado el 7 de julio de 2019 .
  23. 1 2 3 "Valores y cambio: el enfoque de Clojure hacia la identidad y el estado" . Clojure.org . Consultado el 7 de julio de 2019 .
  24. 1 2 Hickey, Rich. "Rationale" . Clojure.org . Consultado el 7 de julio de 2019 .
  25. 1 2 Torre, Charles (2009-10-06). "De experto a experto: Rich Hickey y Brian Beckman – Dentro de Clojure" . MSDN.com .
  26. "clojure/spec.alpha" . GitHub . 26 de abril de 2017.
  27. Hickey, Rich (16 de octubre de 2002). " [ ANN ] dotLisp: Un dialecto de Lisp para .Net" . Google.com .
  28. Hickey, Rich (2013-04-15). "jfli" . SourceForge.net .
  29. Hickey, Rich (2013-04-03). "foil: Interfaz de objetos externos para Lisp" . SourceForge.net .
  30. Hickey, Rich (2013-03-07). "Lisplets" . SourceForge.net .
  31. 1 2 "talk-transcripts/Hickey_Rich/EffectivePrograms.md en master · matthiasn/talk-transcripts" . GitHub . Recuperado el 2 de mayo de 2024 .
  32. 1 2 3 CultRepo (16 de abril de 2026). Cómo el proyecto personal de un programador cambió nuestra forma de pensar sobre el software . Recuperado el 17 de abril de 2026 a través de YouTube.
  33. 1 2 Hickey, Rich (2020-06-12). "Una historia de Clojure" . Actas de la ACM sobre lenguajes de programación . 4 (HOPL): 1– 46. doi : 10.1145/3386321 . S2CID 219603760 . 
  34. Elmendorf, Dirk (2010-04-01). "Economy Size Geek: Entrevista con Rich Hickey, creador de Clojure" . LinuxJournal.com .
  35. "Simple Made Easy" . InfoQ . Consultado el 2 de mayo de 2024 .
  36. "(iterar pensamientos): Ventajas de la programación orientada a datos" . yogthos.net . Consultado el 2 de mayo de 2024 .
  37. 1 2 "Alojado en la JVM" . Clojure.org . Consultado el 7 de julio de 2019 .
  38. "Java Interop" . Clojure.org . Consultado el 7 de julio de 2019 .
  39. 1 2 Miller, Alex. "Guía de dependencias y CLI" . Clojure.org . Recuperado el 8 de julio de 2019 .
  40. Hickey, Rich. "edn" . GitHub . Consultado el 7 de julio de 2019 .
  41. "Multimétodos y jerarquías" . Clojure.org . Consultado el 7 de julio de 2019 .
  42. "Protocolos" . Clojure.org . Consultado el 7 de julio de 2019 .
  43. "Tipos de datos: deftype, defrecord y reify" . Clojure.org . Consultado el 7 de julio de 2019 .
  44. Goetz, Brian (2014-11-20). "Administración: las partes aleccionadoras" . YouTube.com .
  45. Rose, John (12 de julio de 2007). "Llamadas de cola en la VM" . Oracle.com .
  46. Rose, John (11 de febrero de 2009). "Algunos lenguajes necesitan poder realizar llamadas recursivas" . Java.net .
  47. "Formas especiales" . Clojure.org . Consultado el 7 de julio de 2019 .
  48. "Referencias y transacciones" . Clojure.org . Consultado el 7 de julio de 2019 .
  49. Hickey, Rich (2013-06-28). "Canales core.async de Clojure" . Clojure.org .
  50. 1 2 Miller, Alex (30-06-2015). "Clojure 1.7 ya está disponible" . Clojure.org .
  51. Hickey, Rich (17 de septiembre de 2014). "Transductores" . YouTube.com .
  52. Hickey, Rich (2014-08-06). "Los transductores están llegando" . Cognitect.com .
  53. Hickey, Rich (2014-11-20). "Inside Transducers" . YouTube.com .
  54. "Especificación oficial de EDN" . edn-format.org . 27 de abril de 2022.
  55. "ClojureScript" . ClojureScript.org . Consultado el 6 de julio de 2019 .
  56. "ClojureScript – Preguntas frecuentes (para desarrolladores de JavaScript)" . ClojureScript.org . Consultado el 4 de febrero de 2018 .
  57. "ClojureScript - Opciones del compilador" . clojurescript.org . Consultado el 1 de enero de 2026 .
  58. "ClojureCLR" . GitHub . Consultado el 28 de junio de 2012 .
  59. Borkent, Michiel. "Babashka" . Babashka.org . Consultado el 19 de agosto de 2019 .
  60. "¿Qué es ClojureDart?" , GitHub , Tensegritics, 16 de diciembre de 2022 , consultado el 16 de diciembre de 2022
  61. Facorro, Juan. "Clojerl" . GitHub . Consultado el 6 de julio de 2019 .
  62. "basilisp" . GitHub . Consultado el 13 de mayo de 2024 .
  63. "ClojureRS" . GitHub . Consultado el 17 de marzo de 2022 .
  64. ^ Akkaya, Nurullah. "Hurón" . Ferret-Lang.org . Consultado el 6 de julio de 2019 .
  65. ^ Wilkerson, Jeaye. "jank" . Jank-Lang.org . Consultado el 17 de agosto de 2022 .
  66. Bataev, Roman. "Joker" . Joker-Lang.org . Consultado el 6 de julio de 2019 .
  67. Miller, Alex (04-02-2019) .Resultados del congreso "Estado de Clojure 2019" . Clojure.org .
  68. Batsov, Bozhidar; colaboradores. "CIDER: El entorno de desarrollo interactivo de Clojure que mola" . CIDER.mx . Consultado el 5 de julio de 2019 .
  69. Fleming, Colin. "Cursive: Proporciona soporte completo para los lenguajes Clojure y ClojureScript" . JetBrains.com . Consultado el 5 de julio de 2019 .
  70. Prokopov, Nikita. «Clojure Sublimado» . PaqueteControl.io . Consultado el 18 de febrero de 2023 .
  71. ^ Helenio, Eero. "Tutkaín" . FlowThing.me . Consultado el 18 de febrero de 2023 .
  72. Pope, Tim. "fireplace.vim: Soporte REPL para Clojure" . VIM.org . Consultado el 5 de julio de 2019 .
  73. Monroe, Dominic (13 de diciembre de 2016). "Clojure y Vim: una visión general: es muy posible" . JUXT.pro .
  74. Masashi, Iizuka (29-04-2024). "vim-elin: Un entorno de desarrollo Clojure para Vim/Neovim, escrito principalmente en Babashka" . GitHub . Archivado del original el 02-05-2024 . Recuperado el 02-05-2024 .
  75. Caldwell, Oliver. "Neovim Clojure(Script) tooling over prepl" . GitHub . Consultado el 9 de noviembre de 2019 .
  76. Caldwell, Oliver (06-11-2019). "Primeros pasos con Clojure, Neovim y Conjure en minutos" . oli.me.uk .
  77. Strömberg, Peter. "Calva: Programación interactiva con Clojure y ClojureScript" . VisualStudio.com . Consultado el 5 de julio de 2019 .
  78. "Descripción general - Clojure LSP" . clojure-lsp.io . Consultado el 2 de mayo de 2024 .
  79. ^ clj-kondo/clj-kondo , clj-kondo, 30 de abril de 2024 , consultado el 2 de mayo de 2024
  80. Miller, Alex (2017-12-08). "Clojure 1.9" . Cognitect.com .
  81. "Clojure" . Atlassian.net . Consultado el 7 de julio de 2019 .
  82. "Foro de Clojure" . clojure.org . Consultado el 20 de marzo de 2020 .
  83. Hickey, Rich (26-11-2018). "El código abierto no se trata de ti" . GitHub .
  84. "Flujo de trabajo" . Clojure.org . Consultado el 7 de julio de 2019 .
  85. Rinko, Marek (18 de octubre de 2023). "Proyección de Clojure en 2024" . Flexiana . Consultado el 27 de marzo de 2025 .
  86. Goetz, Brian (24-05-2020). "El lenguaje JVM no Java favorito de Brian Goetz (Parte 1 de 3)" . Twitch.tv .
  87. Goetz, Brian (24-05-2020). "El lenguaje JVM no Java favorito de Brian Goetz (Parte 2 de 3)" . Twitch.tv .
  88. Goetz, Brian (24-05-2020). "El lenguaje JVM no Java favorito de Brian Goetz (Parte 3 de 3)" . Twitch.tv .
  89. Evans, Eric (14 de agosto de 2018). "Modelling Time: Eric Evans: Domain-Driven Design Europe 2018" . YouTube.com .
  90. Evans, Eric (21-11-2014). "Eric Evans en Twitter" . Twitter.com .
  91. "James Gosling se reúne con la comunidad Java de Londres" . YouTube.com . 11 de octubre de 2016.
  92. Graham, Paul (06-05-2016). "Paul Graham en Twitter" . Twitter.com .
  93. Martin, Robert (22 de agosto de 2019). "¿Por qué Clojure?" . CleanCoder.com .
  94. Martin, Robert (29-11-2018). "Unble Bob Martin en Twitter" . Twitter.com .
  95. Martin, Robert (2018-08-01). "Introducción a la programación funcional" . CleanCoders.com .
  96. Martin, Robert (11 de julio de 2017). "Programación funcional pragmática" . CleanCoder.com .
  97. "Radar Tecnológico | Una guía con opiniones sobre el panorama tecnológico actual" . Thoughtworks . Consultado el 20 de mayo de 2024 .
  98. "Radar Tecnológico: Clojure" . ThoughtWorks.com . Consultado el 10 de febrero de 2019 .
  99. Maple, Simon; Binstock, Andrew (17 de octubre de 2018). "Informe del ecosistema JVM 2018" . Snyk.io.
  100. "Historias de éxito" . Clojure.org . Consultado el 27 de octubre de 2018 .
  101. Liutikov, Roman (17 de diciembre de 2017). "Roman Liutikov en Twitter" . Twitter.com .
  102. "Empleos en Apple" . Apple.com . Consultado el 6 de julio de 2019 .
  103. Borges, Leonardo (2015-07-07). "Colaboración en tiempo real con Clojure" . YouTube.com .
  104. Pither, Jon (2016-10-04). "Clojure en Londres: Funding Circle – Prestando algo de Clojure" . JUXT.pro .
  105. Williams, Alex (2014-08-03). "Los nuevos creadores de Stack: Adrian Cockcroft habla sobre Sun, Netflix, Clojure, Go, Docker y más" . TheNewStack.io .
  106. «Nubank adquiere empresa norte-americana de tecnología Cognitect» . 23 de julio de 2020.
  107. Price, Chris (11 de abril de 2014). "Una nueva era de servicios de aplicaciones en Puppet Labs" . Puppet.com . Consultado el 6 de agosto de 2020 .
  108. Phillips, Marc (14 de julio de 2015). "Walmart implementa Clojure a gran escala" . Cognitect.com .
  109. "Common-Metadata-Repository" . GitHub . Consultado el 6 de julio de 2019 .
  110. Meier, Carin (2015-05-06). "Computación creativa con Clojure" . OReilly.com .
  111. "Encuesta para desarrolladores de Stack Overflow 2023" . Stack Overflow . Consultado el 2 de mayo de 2024 .
  112. Hickey, Rich (2009-05-04). "Clojure 1.0" . BlogSpot.com .
  113. Hickey, Rich (31-12-2009). "Lanzamiento de Clojure 1.1" . BlogSpot.com .
  114. Hickey, Rich (19 de agosto de 2010). "Lanzamiento de Clojure 1.2" . Google.com .
  115. ^ Redinger, Christopher (23 de septiembre de 2011). " [ ANN ] Lanzamiento de Clojure 1.3" . Google.com .
  116. Dipert, Alan (17 de abril de 2012). " [ ANUNCIO ] Clojure 1.4 lanzado" . Google.com .
  117. Halloway, Stuart (2013-03-01). "ANN: Clojure 1.5" . Google.com .
  118. Halloway, Stuart (10 de marzo de 2013). "Clojure 1.5.1" . Google.com .
  119. Miller, Alex (25-03-2014). " [ ANN ] Clojure 1.6" . Google.com .
  120. Miller, Alex (19 de enero de 2016). "Clojure 1.8 ya está disponible" . Clojure.org .
  121. Miller, Alex (2017-12-08). "Clojure 1.9 ya está disponible" . Clojure.org .
  122. Miller, Alex (17 de diciembre de 2018). "Lanzamiento de Clojure 1.10" . Clojure.org .
  123. Miller, Alex (2019-06-06). "Lanzamiento de Clojure 1.10.1" . Clojure.org .
  124. Miller, Alex (26-01-2021). "Lanzamiento de Clojure 1.10.2" . Clojure.org .
  125. Miller, Alex (2021-03-04). "Lanzamiento de Clojure 1.10.3" . Clojure.org .
  126. Miller, Alex (22 de marzo de 2022). "Lanzamiento de Clojure 1.11.0" . Clojure.org .
  127. Miller, Alex (2022-04-05). "Lanzamiento de Clojure 1.11.1" . Clojure.org .
  128. Miller, Alex (2024-03-08). "Lanzamiento de Clojure 1.11.2" . Clojure.org .
  129. Miller, Alex (05-09-2024). "Lanzamiento de Clojure 1.12.0" . Clojure.org .
  130. Miller, Alex (2025-06-02). "Clojure 1.12.1 lanzado" .
  131. Miller, Alex (25-08-2025). "Lanzamiento de Clojure 1.12.2" .
  132. Miller, Alex (25-09-2025). "Lanzamiento de Clojure 1.12.3" .

Lecturas adicionales

  • Sotnikov, Dmitri (2020). Desarrollo web con Clojure (3.ª  ed.). Pragmatic Bookshelf . ISBN 978-1-68050-682-2.
  • Olsen, Russ (2018). Getting Clojure . Pragmatic Bookshelf . ISBN 978-1-68050-300-5.
  • Miller, Alex; Halloway, Stuart; Bedra, Aaron (2018). Programación en Clojure (3.ª  ed.). Pragmatic Bookshelf . ISBN 978-1-68050-246-6.
  • Meier, Carin (2015). Living Clojure: Introducción y plan de formación para desarrolladores (1.ª  ed.). O'Reilly Media . ISBN 978-1-491-90904-1.
  • Rathore, Amit; Avila, Francis (2015). Clojure en acción (2.ª  ed.). Manning Publications . ISBN 978-1-61729-152-4.
  • Higginbotham, Daniel (2015). Clojure para los valientes y verdaderos . No Starch Press . ISBN 978-1-59327-591-4.
  • Gamble, Julian (2015). Recetas de Clojure . Pearson Publishing . ISBN 978-0-32192-773-6.
  • Vandgrift, Ben; Miller, Alex (2015). Clojure Aplicado . Pragmatic Bookshelf . ISBN 978-1-68050-074-5.
  • Rochester, Eric (2015). Clojure Data Analysis Cookbook (2.ª  ed.). Packt Publishing . ISBN 978-1-78439-029-7.
  • Fogus, Michael; Houser, Chris (2014). The Joy of Clojure (2.ª  ed.). Manning Publications . ISBN 978-1-617291-41-8Archivado del original el 23/10/2018 . Consultado el 05/11/2018 .
  • Kelker, Ryan (2013). Clojure para lenguajes específicos de dominio . Packt Publishing . ISBN 978-1-78216-650-4.
  • Rochester, Eric (2014). Dominando el análisis de datos con Clojure . Packt Publishing . ISBN 978-1-78328-413-9.
  • Emerick, Chas; Carper, Brian; Grand, Christophe (19 de abril de 2012). Programación en Clojure . O'Reilly Media . ISBN 978-1-4493-9470-7.
  • VanderHart, Luke; Sierra, Stuart (7 de junio de 2010). Clojure práctico . Apress . ISBN 978-1-4302-7231-1.
  • Sitio web oficialEdita esto en Wikidata