Documente Academic
Documente Profesional
Documente Cultură
Teorica 1
T HE C LOJURE WAY
Periodo 2017-II
The Clojure Way
holacaracola
holacaracola
Índice
Índice 1
1. Clojure 2
2. Conceptos y Caracterı́stica 2
2.1. Programación Funcional . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.1.1. Programación puramente funcional . . . . . . . . . . . . . . . 3
2.1.2. Enfoque de Clojure . . . . . . . . . . . . . . . . . . . . . . . . 4
3. Inmutabilidad 4
5. Conclusiones 9
Bibliografı́a 10
The Clojure Way
holacaracola
1. 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.
El enfoque de Clojure way reúne un conjunto de conceptos y caracterı́sticas para
cumplir con estos objetivos.
2. Conceptos y Caracterı́stica
2.1. Programación Funcional
Una caracterı́stica clave de Clojure es que es un lenguaje funcional. El paradig-
ma funcional se basa en que hay dos formas de diseñar un programa: Una forma es
hacerlo tan simple que obviamente no haya deficiencias, y la otra es hacerlo tan com-
plicado que no haya deficiencias obvias. Esto se asocia a la programación funcional
e imperativo respectivamente .
Los lenguajes imperativos realizan tareas complejas ejecutando un gran número
de instrucciones, que modifican secuencialmente un estado de programa hasta que
se logra un resultado deseado. Los lenguajes funcionales logran el mismo objetivo a
través de la composición de funciones anidadas, pasando el resultado de una función
como parámetro a la siguiente. Al componer y encadenar las llamadas de función,
junto con la recursión (una función que se llama a sı́ mismo), un programa funcional
puede expresar cualquier tarea posible que una computadora sea capaz de realizar.
Todo un programa puede ser visto como una sola función, definida en términos de
funciones más pequeñas.Dando una estructura de anidamiento y todos los datos
se manejan a través de parámetros de función y valores de retorno Come vemos
en la figura1 . Esto hace que todo el programa pueda ser entendido solo haciendo
un seguimiento de las funciones que lo componen sin tener que hacer un análisis
profundo del programa esta simplicidad hace el código transparente para la detección
de errores.
holacaracola Página 2
The Clojure Way
holacaracola
Estado es cualquier dato que almacene el programa que posiblemente pueda ser
cambiado por más de una pieza de código. Es peligroso porque si el comportamiento
del código depende de una parte del estado, es imposible analizar lo que podrı́a hacer
sin tener en cuenta todos los valores posibles de ese estado, ası́ como cualquier otra
parte del programa que pudiera modificar ese estado. Este problema se magnifica
exponencialmente en programas paralelos, donde no siempre es fácil saber hasta qué
código de pedido se ejecutará. Es casi imposible predecir qué podrı́a ser un estado
dado.
Los efectos secundarios son cualquier cosa que una función hace cuando se eje-
cuta, además de simplemente devolver un valor. Si cambia el estado del programa,
escribe en un disco duro, o realiza cualquier tipo de IO, ha ejecutado un efecto
secundario.Por supuesto, los efectos secundarios son necesarios para un programa
para interactuar con cualquier cosa, incluido el usuario. Pero también hacen una
función mucho más difı́cil de entender y reutilizar en diferentes contextos.Por lo que
se consideran como males necesarios, y los programadores funcionales hacen todo lo
posible para utilizarlos lo menos posible.
Las funciones puras tienen una serie de ventajas:
Son notablemente fáciles de paralelizar. Dado que cada función es una unidad
distinta, encapsulada.
holacaracola Página 3
The Clojure Way
holacaracola
Todo el estado del programa está contenido en estructuras seguras para hilos,
respaldadas por el inventario planificado de las caracterı́sticas de gestión de
concurrencia de Clojure. Esto asegura que con un mı́nimo absoluto de esfuerzo,
el estado del programa es siempre seguro y consistente. Las actualizaciones al
estado son explı́citas y atómicas y claramente identificables.
3. Inmutabilidad
Clojure alienta el estilo puramente funcional proporcionando un conjunto capaz
y de alto rendimiento de estructuras de datos inmutables.
Las estructuras de datos inmutables son, como su nombre indica, estructuras
de datos que no pueden cambiar. Se crean con un valor o contenido especı́fico, que
permanecen constantes durante todo el ciclo de vida del objeto.
Esto garantiza que el objeto se puede utilizar libremente en múltiples lugares,
desde múltiples hilos, sin temor a las condiciones de carrera ni a otros conflictos.
Si un objeto es de sólo lectura, siempre se puede leer de forma segura e inmediata
desde cualquier punto del programa.
Pero entonces ¿Qué pasa si la lógica del programa requiere que el valor de una
estructura de datos cambie? Clojure resuelve esto donde en lugar de modificar la
estructura de datos existente (causando todo tipo de efectos potencialmente dañados
para otras partes del programa que lo utilizan), la estructura se copia con los cambios
en su lugar vemos el la figura 3 y 4. El objeto antiguo permanece exactamente
holacaracola Página 4
The Clojure Way
holacaracola
holacaracola Página 5
The Clojure Way
holacaracola
holacaracola Página 6
The Clojure Way
holacaracola
holacaracola Página 7
The Clojure Way
holacaracola
holacaracola Página 8
The Clojure Way
holacaracola
5. Conclusiones
Clojure way usa el enfoque funcional , inmutabilidad y gestión de los estados
para para dar una entorno de programación mucho mas fácil sobre todo en la
complejidad de la concurrencia solucionando el mismo entorno para de esta.
holacaracola Página 9
The Clojure Way
holacaracola
Bibliografı́a
[A] Paul Butcher Seven Concurrency Models in Seven Weeks1 (2014), pp. 85-113.
[Au] Michael Fogus ,Chris Houser The Joy of Clojure, 61, (2011), pp. 4-10.
holacaracola Página 10