¿Que Es Clojure?
Clojure es un lenguaje de programación de
propósito general dialecto de Lisp. Hace un énfasis especial en el paradigma
funcional, con el objetivo (entre otros) de eliminar la complejidad asociada a
la programación concurrente. Clojure puede ser ejecutado sobre la Máquina
Virtual de Java y la máquina virtual de la plataforma .NET, así como compilado
a JavaScript.
-Principios
Rich Hickey describe el desarrollo de
Clojure como la búsqueda de un lenguaje que no pudo encontrar: un lisp
funcional por defecto, integrado sobre un entorno robusto en lugar de ser su
propia plataforma, y con la programación concurrente en mente.
Asimismo, en principio se rechaza la
orientación a objetos, ofreciendo un enfoque en el que los programas se
expresan como la aplicación de funciones sobre datos, más que como la
interacción entre entidades mutables que mezclan representación de datos, y
comportamiento. Por otra parte, características tales como instanciabilidad,
polimorfismo e interfaces son efectivamente parte del lenguaje.
-Sintaxis
Como el resto de la familia Lisp, la
sintaxis de Clojure está construida sobre expresiones simbólicas que son
convertidas en estructuras de datos por un lector antes de ser compiladas. Las
expresiones se caracterizan por estar delimitadas por paréntesis, y por su
notación prefija, por la que se llama al primer miembro de cada lista como función,
pasándole el resto de miembros como argumentos.
Esta peculiaridad, extraña para los
habituados a los lenguajes más populares basados en la sintaxis del lenguaje de
programación C es la base de su flexibilidad. Estructuras de datos tales como
mapas, conjuntos y vectores tienen una expresión literal; no requieren
transformación alguna a la hora de incorporarse al árbol sintáctico generado
por el compilador. Clojure es un Lisp-1 y no está particularmente diseñado para
ser compatible con otros lisps.
-Macros
Un macro es un fragmento de código que
acepta como argumentos otras expresiones, sin evaluar, transformándolas
previamente a su evaluación. Esto permite la aparición de "programas que
crean programas": incorporaciones al lenguaje -estructuras de control de
flujo- o creación de un lenguaje específico del dominio. Posibilidades en
principio no alcanzables en otras familias de lenguajes sin recurrir al
desarrollo de un compilador.
El sistema de macros de Clojure es muy
similar al de Common Lisp con la excepción de que la versión de Clojure de la
comilla inversa (llamada "comilla sintáctica") cualifica los símbolos
con el espacio de nombres al que pertenece. Así se ayuda a prevenir la captura
no intencionada ya que están prohibidos los bindings con nombres cualificados.
Es posible forzar la expansión de una macro que las capture pero debe hacerse
explícitamente. Clojure prohíbe también re-enlazar nombres globales en otros
espacios de nombres que hayan sido importados en el actual. Otra característica de la comilla
sintáctica es que permite un sistema de templating, en el que se puede
especificar qué miembros de una lista deben evaluarse mediante los operadores
unquote (~) y unquote-splice (~@), dando a lugar a macros más concisas y
manejables.
-Características del lenguaje
- Desarrollo dinámico con una consola de evaluación (en inglés, REPL: read eval print loop).
- Representación de funciones como valores, y preferencia por la recursión y el uso de higher order functions sobre de la iteración basada en efectos secundarios.
- Números de precisión arbitraria, y representación literal de fracciones, generadas en las divisiones no enteras.
- Secuencias con evaluación perezosa (los elementos de la secuencia no se computan hasta que son necesarios, lo que permite representar conjuntos infinitos en potencia).
- Sistema integrado de estructuras de datos persistentes e inmutables.
- Control del estado (conjunto de valores que puede adquirir una entidad en el tiempo) en situaciones de concurrencia a través de sistemas transaccionales, de agentes y mediante bindings locales.
- Interacción con java: al compilarse a bytecode de la JVM, las aplicaciones escritas en Clojure pueden ser fácilmente integradas en servidores de aplicaciones u otros entornos Java con escasa complejidad adicional. Se implementan por defecto todas las interfaces posibles a nivel de clases, estructuras de datos y concurrencia para minimizar los esfuerzos requeridos para conseguir esta portabilidad.
-Ejemplos
Hola mundo. Nótese que dada la naturaleza
del REPL, no es necesaria una orden de impresión.

En este ejemplo diez hilos manipulan una
estructura de datos compartida, que consiste en cien vectores que contienen
diez números únicos al inicio secuenciales. Cada hilo elige dos posiciones
aleatorias en dos vectores aleatorios y los intercambia. Todos los cambios en
los vectores se hacen dentro de transacciones usando el sistema de memoria
transaccional por software de Clojure. Es por eso que incluso después de mil
iteraciones no se pierde ningún número.



Espero Les Guste Compañeros!
ResponderBorrarHola Gera!! Por lo que he leido puedo decir que este lenguaje de programación necesita la base o ayuda de otro tipo de lenguaje u programa para funcionar creo..
ResponderBorrarExcelente investigación, muy detallado, no deja nada que desear, todo se entendió perfectamente.
ResponderBorrarExcelente investigación, muy detallado, no deja nada que desear, todo se entendió perfectamente.
ResponderBorrarPuede ser ejecutado con Java, JavaScript por lo que leí ya que tiene diferentes funciones.
ResponderBorrarPor lo que leí he entendido que puede ser fácil de usar, y es muy semejante a Java, creo que sería interesante aprender a usarlo ya que tenemos indicios de programación, ¿por qué no intentar?
ResponderBorrarSe puede utilizar sobre Java y es muy fácil de utilizar
ResponderBorrarEs un lenguaje que se pueden utilizar varios programas para trabajar en diferentes funciones
ResponderBorrarPOR LO QUE LEI ES UN PROGRAMA PARECIDO A C++ QUE CREA ANIMACIONES PARA CONSOLA Y SE PUEDEUTILISAR CON JAVA
ResponderBorrarPorlo que pude entender este programa es para hacer paginas web y programas adaptandles codigos extras.
ResponderBorrarEs un lenguaje de programacion que funciona con java scrip y otros mas, este lenguaje tiene varias funciones.
ResponderBorrarEste comentario ha sido eliminado por el autor.
ResponderBorrarClojure esta ofreciendo un enfoque en el que los programas se expresan como la aplicación de funciones sobre datos, más que como la interacción entre entidades mutables que mezclan representación de datos, y comportamiento.
ResponderBorrarYo entiendo de este lenguaje que no se purede ejecutsr por si solo sino qe nesesita de una plataforma ya ablada como net para ejecutar. osea qe es de sir que este lenguaje es como desir html y css dnd css es este lenguaje y html es la plataforma.
ResponderBorrarSegún entiendo este programa es parecido en la forma de usa a HTML y css ya que se pueden usar otros códigos para editar la plataforma.
ResponderBorrarPor lo que veo clojure es un lenguaje, que se basa en el dialecto de propósito general en conceptos completamente fáciles para que uno los pueda entender mejor...?
ResponderBorrarSe puede utilizar mas programas para su edición
ResponderBorrarPodría ser un programa de complementación de Java al implementar una nueva manera de dar edición.
ResponderBorrares un lenguaje que necesita otros programas o lenguajes para que trabajen con el de la mano!
ResponderBorrarnunca he utilizado este lenguaje se ve que es muy dificil de utilizar, seria de practicarlo porque se ve interesante
ResponderBorrarEste es un lenguaje que puede ser utilizado complementariamente
ResponderBorrarClojure es un lenguaje de programación compilado de propósito general, con el objetivo de eliminar la complejidad asociada a la programación concurrente.
ResponderBorrarClojure puede ser ejecutado sobre la maquina virtual de java y tambien se puede compilar con javascript
ResponderBorrarClojure puede ser ejecutado sobre la maquina virtual de java y tambien se puede compilar con javascript
ResponderBorrarayuda a eliminar cosas complejas.
ResponderBorrarEste tiene relacion con java ya que se puede utilizar en el
ResponderBorrar