Your SlideShare is downloading. ×
Clojure              Java y Lisp, unidos        Alejandro Serrano Menaalejandro.serranom@estudiante.uam.es        Ciclo de...
¿Qu´ es Clojure?   e               El lenguaje   Secuencias   Macros   Memoria Software Transaccional (STM)   Integraci´n ...
¿Qu´ es Clojure?   e               El lenguaje   Secuencias   Macros   Memoria Software Transaccional (STM)   Integraci´n ...
¿Qu´ es Clojure?   e               El lenguaje   Secuencias   Macros   Memoria Software Transaccional (STM)   Integraci´n ...
¿Qu´ es Clojure?   e               El lenguaje   Secuencias   Macros   Memoria Software Transaccional (STM)   Integraci´n ...
¿Qu´ es Clojure?   e               El lenguaje   Secuencias   Macros   Memoria Software Transaccional (STM)    Integraci´n...
¿Qu´ es Clojure?   e               El lenguaje   Secuencias   Macros   Memoria Software Transaccional (STM)   Integraci´n ...
¿Qu´ es Clojure?   e               El lenguaje   Secuencias   Macros   Memoria Software Transaccional (STM)   Integraci´n ...
¿Qu´ es Clojure?   e               El lenguaje   Secuencias   Macros   Memoria Software Transaccional (STM)   Integraci´n ...
¿Qu´ es Clojure?   e                El lenguaje   Secuencias   Macros   Memoria Software Transaccional (STM)   Integraci´n...
¿Qu´ es Clojure?   e               El lenguaje   Secuencias   Macros   Memoria Software Transaccional (STM)   Integraci´n ...
¿Qu´ es Clojure?   e                El lenguaje    Secuencias   Macros   Memoria Software Transaccional (STM)   Integraci´...
¿Qu´ es Clojure?   e                 El lenguaje   Secuencias   Macros    Memoria Software Transaccional (STM)   Integraci...
¿Qu´ es Clojure?   e               El lenguaje   Secuencias   Macros   Memoria Software Transaccional (STM)   Integraci´n ...
¿Qu´ es Clojure?   e               El lenguaje   Secuencias   Macros   Memoria Software Transaccional (STM)   Integraci´n ...
¿Qu´ es Clojure?   e               El lenguaje   Secuencias   Macros   Memoria Software Transaccional (STM)   Integraci´n ...
¿Qu´ es Clojure?   e               El lenguaje   Secuencias   Macros   Memoria Software Transaccional (STM)   Integraci´n ...
¿Qu´ es Clojure?   e               El lenguaje   Secuencias   Macros   Memoria Software Transaccional (STM)   Integraci´n ...
¿Qu´ es Clojure?   e               El lenguaje   Secuencias   Macros   Memoria Software Transaccional (STM)   Integraci´n ...
¿Qu´ es Clojure?   e               El lenguaje   Secuencias   Macros   Memoria Software Transaccional (STM)   Integraci´n ...
¿Qu´ es Clojure?   e               El lenguaje   Secuencias   Macros   Memoria Software Transaccional (STM)   Integraci´n ...
Upcoming SlideShare
Loading in...5
×

Clojure: Java y Lisp, unidos

786

Published on

Presentación sobre Clojure dada en las Jornadas de Programación Funcional de la Asociación de Software Libre de la UAM

Published in: Technology, News & Politics
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
786
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Clojure: Java y Lisp, unidos"

  1. 1. Clojure Java y Lisp, unidos Alejandro Serrano Menaalejandro.serranom@estudiante.uam.es Ciclo de Lenguajes FuncionalesMarzo-Mayo 2010, Escuela Polit´cnica Superior, UAM e
  2. 2. ¿Qu´ es Clojure? e El lenguaje Secuencias Macros Memoria Software Transaccional (STM) Integraci´n con Java oContenido 1 ¿Qu´ es Clojure? e 2 El lenguaje El REPL Primeras “escapadas” a Java 3 Secuencias Trabajo con funciones Consultando un map Evaluaci´n vaga o 4 Macros 5 Memoria Software Transaccional (STM) 6 Integraci´n con Java o
  3. 3. ¿Qu´ es Clojure? e El lenguaje Secuencias Macros Memoria Software Transaccional (STM) Integraci´n con Java oUn primer acercamiento Un dialecto moderno de Lisp que corre bajo la plataforma Java, con un ojo puesto en la concurrencia
  4. 4. ¿Qu´ es Clojure? e El lenguaje Secuencias Macros Memoria Software Transaccional (STM) Integraci´n con Java oAlgunas caracter´ ısticas de Lisp Sintaxis casi inexistente, basada en par´ntesis e (defun ejemplo (t) (cond ((> t 3) (print ‘‘Hola’’)) (t (print ‘‘Adios’’)))) Clojure la limpia bastante Evitando en muchos casos los par´ntesis e Introduciendo otros s´ ımbolos visualmente distintos (defn ejemplo [t] (cond (> t 3) (print ‘‘Hola’’) :else (print ‘‘Adios’’)))
  5. 5. ¿Qu´ es Clojure? e El lenguaje Secuencias Macros Memoria Software Transaccional (STM) Integraci´n con Java oAlgunas caracter´ ısticas de Lisp La lista es la unidad b´sica de funcionamiento a De hecho, la celda cons En Clojure se cambia por la secuencia, que es una interfaz gen´rica para listas, conjuntos, vectores. . . e
  6. 6. ¿Qu´ es Clojure? e El lenguaje Secuencias Macros Memoria Software Transaccional (STM) Integraci´n con Java oAlgunas caracter´ ısticas de Lisp Es homoic´nico o Datos y programas se describen del mismo modo Permite escribir macros, es decir, extender el lenguaje de forma sencilla
  7. 7. ¿Qu´ es Clojure? e El lenguaje Secuencias Macros Memoria Software Transaccional (STM) Integraci´n con Java oClojure y Java Clojure corre en la misma m´quina virtual que Java a Podemos usar todas las clases que nos ofrece la librer´ est´ndar ıa a de Java, y todas aquellas a las que estemos acostumbrado de nuestro trabajo con ese lenguaje La mayor parte de las herramientas (JUnit, Ant. . . ) tambi´n e sirven para Clojure Tambi´n podemos crear nuevos elementos que se puedan usar e dentro de c´digo Java o En general, los proyectos tendr´n una parte en Java y otra en a Clojure, us´ndose cada lenguaje all´ donde sea m´s util a ı a ´
  8. 8. ¿Qu´ es Clojure? e El lenguaje Secuencias Macros Memoria Software Transaccional (STM) Integraci´n con Java oProgramaci´n funcional o Clojure est´ pensado para ser usado funcionalmente (aunque a tambi´n puede usarse de forma estructurada ´ OO) e o Permite pasar funciones como argumentos y tenerlas como valor de retorno Usa estructuras de datos inmutables En vez de usar funciones que cambien el estado de un objeto, tendremos funciones que crean nuevos datos a partir de otros Permiten una mejor aproximaci´n a la concurrencia, como ve- o remos en la parte de STM
  9. 9. ¿Qu´ es Clojure? e El lenguaje Secuencias Macros Memoria Software Transaccional (STM) Integraci´n con Java oContenido 1 ¿Qu´ es Clojure? e 2 El lenguaje El REPL Primeras “escapadas” a Java 3 Secuencias Trabajo con funciones Consultando un map Evaluaci´n vaga o 4 Macros 5 Memoria Software Transaccional (STM) 6 Integraci´n con Java o
  10. 10. ¿Qu´ es Clojure? e El lenguaje Secuencias Macros Memoria Software Transaccional (STM) Integraci´n con Java oPrimeras “escapadas” a JavaTraducci´n Java-Clojure o Java Clojure import ns.Clase1 (import ’(ns Clase Clase2)) import ns.Clase2 new Clase(arg1, arg2...) (Clase. arg1 arg2 ...) (new Clase arg1 arg2 ...) obj.metodo(arg1, arg2, ...) (metodo. obj arg1 arg2 ...) (. obj metodo arg1 arg2 ...) Clase.estatico(arg1, arg2, ...) (Clase/estatico arg1 arg2 ...) obj.metodo1().metodo2().metodo3() (.. obj metodo1 metodo2 metodo3)
  11. 11. ¿Qu´ es Clojure? e El lenguaje Secuencias Macros Memoria Software Transaccional (STM) Integraci´n con Java oContenido 1 ¿Qu´ es Clojure? e 2 El lenguaje El REPL Primeras “escapadas” a Java 3 Secuencias Trabajo con funciones Consultando un map Evaluaci´n vaga o 4 Macros 5 Memoria Software Transaccional (STM) 6 Integraci´n con Java o
  12. 12. ¿Qu´ es Clojure? e El lenguaje Secuencias Macros Memoria Software Transaccional (STM) Integraci´n con Java oTrabajo con funcionesTipos de secuencias Sintaxis Constructores Lista ( e1 e2 e3 ) (list e1 e2 e3) Vector [ e1 e2 e3 ] (vector e1 e2 e3) (vec lista-elementos) Conjunto #{ e1 e2 e3 } (hash-set e1 e2 e3) (set lista-elementos) Diccionario { c1 v1, c2 v2 } (hash-map c1 v1 c2 v2)
  13. 13. ¿Qu´ es Clojure? e El lenguaje Secuencias Macros Memoria Software Transaccional (STM) Integraci´n con Java oConsultando un map´Algebra relacional y Clojure Operaci´n o SQL Clojure Uni´n, ∪ o - (union conj1 conj2 ) Diferencia, - (difference conj1 conj2 ) Producto, × - (for [x conj1 y conj2 ] ...) Renombrado, ρ AS (rename conj {:antigua :nueva }) Proyecci´n, π o SELECT (project conj [:clave1 :clave2 ...]) Selecci´n, σ o WHERE (select predicado conj) Reuni´n natural, ⊲⊳ o JOIN (join conj1 conj2 )
  14. 14. ¿Qu´ es Clojure? e El lenguaje Secuencias Macros Memoria Software Transaccional (STM) Integraci´n con Java oContenido 1 ¿Qu´ es Clojure? e 2 El lenguaje El REPL Primeras “escapadas” a Java 3 Secuencias Trabajo con funciones Consultando un map Evaluaci´n vaga o 4 Macros 5 Memoria Software Transaccional (STM) 6 Integraci´n con Java o
  15. 15. ¿Qu´ es Clojure? e El lenguaje Secuencias Macros Memoria Software Transaccional (STM) Integraci´n con Java oContenido 1 ¿Qu´ es Clojure? e 2 El lenguaje El REPL Primeras “escapadas” a Java 3 Secuencias Trabajo con funciones Consultando un map Evaluaci´n vaga o 4 Macros 5 Memoria Software Transaccional (STM) 6 Integraci´n con Java o
  16. 16. ¿Qu´ es Clojure? e El lenguaje Secuencias Macros Memoria Software Transaccional (STM) Integraci´n con Java oContenido 1 ¿Qu´ es Clojure? e 2 El lenguaje El REPL Primeras “escapadas” a Java 3 Secuencias Trabajo con funciones Consultando un map Evaluaci´n vaga o 4 Macros 5 Memoria Software Transaccional (STM) 6 Integraci´n con Java o
  17. 17. ¿Qu´ es Clojure? e El lenguaje Secuencias Macros Memoria Software Transaccional (STM) Integraci´n con Java o¿Qu´ nos hemos dejado? e Multim´todos e Expresiones regulares (#‘‘w+’’, re-seq) Tests unitarios (deftest) Optimizaciones a la recursi´n (trampoline) o Mucho m´s sobre listas vagas (lazy-seq) a Algo m´s sobre macros (~@, manipulaci´n del c´digo) a o o Trabajo con XML (clojure.xml.parse) Librer´ librer´ y m´s librer´ ıas, ıas a ıas
  18. 18. ¿Qu´ es Clojure? e El lenguaje Secuencias Macros Memoria Software Transaccional (STM) Integraci´n con Java oReferencias Sitios web Web oficial: http://clojure.org Blog de Cosmin Stejerean: http://onclojure.com Plug-ins para IDEs Counterclockwise (Eclipse): http://code.google.com/p/counterclockwise Enclojure (NetBeans): http://www.enclojure.org Emacs: http://github.com/jochu/clojure-mode VimClojure: http://kotka.de/projects/clojure/vimclojure.html Libros Programming Clojure por Stuart Halloway, The Pragmatic Bookshelf
  19. 19. ¿Qu´ es Clojure? e El lenguaje Secuencias Macros Memoria Software Transaccional (STM) Integraci´n con Java o ¿Preguntas?
  20. 20. ¿Qu´ es Clojure? e El lenguaje Secuencias Macros Memoria Software Transaccional (STM) Integraci´n con Java o ¡Muchas gracias!
  21. 21. ¿Qu´ es Clojure? e El lenguaje Secuencias Macros Memoria Software Transaccional (STM) Integraci´n con Java o Esta presentaci´n fue tipografiada usando el paquete Beamer de o LTEXy el programa Texmaker A Esta obra se encuentra bajo los t´rminos de la licencia Creative e Commons 3.0 Reconocimiento - No Comercial - Compartir Igual http://creativecommons.org/licenses/by-nc-sa/3.0/es/

×