SlideShare ist ein Scribd-Unternehmen logo
1 von 21
Clojure
              Java y Lisp, unidos


        Alejandro Serrano Mena
alejandro.serranom@estudiante.uam.es


        Ciclo de Lenguajes Funcionales
Marzo-Mayo 2010, Escuela Polit´cnica Superior, UAM
                              e
¿Qu´ es Clojure?
   e               El lenguaje   Secuencias   Macros   Memoria Software Transaccional (STM)   Integraci´n con Java
                                                                                                       o




Contenido

       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
¿Qu´ es Clojure?
   e               El lenguaje   Secuencias   Macros   Memoria Software Transaccional (STM)   Integraci´n con Java
                                                                                                       o




Un primer acercamiento




       Un dialecto moderno de Lisp que
        corre bajo la plataforma Java, con
       un ojo puesto en la concurrencia
¿Qu´ es Clojure?
   e               El lenguaje   Secuencias   Macros   Memoria Software Transaccional (STM)   Integraci´n con Java
                                                                                                       o




Algunas 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’’)))
¿Qu´ es Clojure?
   e               El lenguaje   Secuencias   Macros   Memoria Software Transaccional (STM)   Integraci´n con Java
                                                                                                       o




Algunas 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
¿Qu´ es Clojure?
   e               El lenguaje   Secuencias   Macros   Memoria Software Transaccional (STM)    Integraci´n con Java
                                                                                                        o




Algunas 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
¿Qu´ es Clojure?
   e               El lenguaje   Secuencias   Macros   Memoria Software Transaccional (STM)   Integraci´n con Java
                                                                                                       o




Clojure 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 ´
¿Qu´ es Clojure?
   e               El lenguaje   Secuencias   Macros   Memoria Software Transaccional (STM)   Integraci´n con Java
                                                                                                       o




Programaci´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
¿Qu´ es Clojure?
   e               El lenguaje   Secuencias   Macros   Memoria Software Transaccional (STM)   Integraci´n con Java
                                                                                                       o




Contenido

       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
¿Qu´ es Clojure?
   e                El lenguaje   Secuencias   Macros   Memoria Software Transaccional (STM)   Integraci´n con Java
                                                                                                        o

Primeras “escapadas” a Java


Traducci´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)
¿Qu´ es Clojure?
   e               El lenguaje   Secuencias   Macros   Memoria Software Transaccional (STM)   Integraci´n con Java
                                                                                                       o




Contenido

       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
¿Qu´ es Clojure?
   e                El lenguaje    Secuencias   Macros   Memoria Software Transaccional (STM)   Integraci´n con Java
                                                                                                         o

Trabajo con funciones


Tipos 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)
¿Qu´ es Clojure?
   e                 El lenguaje   Secuencias   Macros    Memoria Software Transaccional (STM)   Integraci´n con Java
                                                                                                          o

Consultando 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 )
¿Qu´ es Clojure?
   e               El lenguaje   Secuencias   Macros   Memoria Software Transaccional (STM)   Integraci´n con Java
                                                                                                       o




Contenido

       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
¿Qu´ es Clojure?
   e               El lenguaje   Secuencias   Macros   Memoria Software Transaccional (STM)   Integraci´n con Java
                                                                                                       o




Contenido

       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
¿Qu´ es Clojure?
   e               El lenguaje   Secuencias   Macros   Memoria Software Transaccional (STM)   Integraci´n con Java
                                                                                                       o




Contenido

       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
¿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
¿Qu´ es Clojure?
   e               El lenguaje   Secuencias   Macros   Memoria Software Transaccional (STM)   Integraci´n con Java
                                                                                                       o




Referencias
       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
¿Qu´ es Clojure?
   e               El lenguaje   Secuencias   Macros   Memoria Software Transaccional (STM)   Integraci´n con Java
                                                                                                       o




                                     ¿Preguntas?
¿Qu´ es Clojure?
   e               El lenguaje   Secuencias   Macros   Memoria Software Transaccional (STM)   Integraci´n con Java
                                                                                                       o




                                 ¡Muchas gracias!
¿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/

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (19)

Tema 12 hilos en java por gio
Tema 12   hilos en java por gioTema 12   hilos en java por gio
Tema 12 hilos en java por gio
 
Clase 2/4 Curso Introducción a Python 2012
Clase 2/4 Curso Introducción a Python 2012Clase 2/4 Curso Introducción a Python 2012
Clase 2/4 Curso Introducción a Python 2012
 
Programando en java
Programando en javaProgramando en java
Programando en java
 
Lp13
Lp13Lp13
Lp13
 
Administración de memoria en java
Administración de memoria en javaAdministración de memoria en java
Administración de memoria en java
 
Diseño formal de máquinas virtuales Java
Diseño formal de máquinas virtuales JavaDiseño formal de máquinas virtuales Java
Diseño formal de máquinas virtuales Java
 
Librerias java
Librerias javaLibrerias java
Librerias java
 
Clase 3/4 Curso Introducción a Python 2012
Clase 3/4 Curso Introducción a Python 2012Clase 3/4 Curso Introducción a Python 2012
Clase 3/4 Curso Introducción a Python 2012
 
Thread 02
Thread 02Thread 02
Thread 02
 
Utp sirn_sl2 la rna perceptron
 Utp sirn_sl2 la rna perceptron Utp sirn_sl2 la rna perceptron
Utp sirn_sl2 la rna perceptron
 
Thread 01
Thread 01Thread 01
Thread 01
 
Utp sirn_sl4 la rna perceptron
 Utp sirn_sl4 la rna perceptron Utp sirn_sl4 la rna perceptron
Utp sirn_sl4 la rna perceptron
 
GUIA 1 HILOS Y PROCESOS
GUIA 1 HILOS Y PROCESOSGUIA 1 HILOS Y PROCESOS
GUIA 1 HILOS Y PROCESOS
 
Rn
RnRn
Rn
 
Programación multihebra en java
Programación multihebra en javaProgramación multihebra en java
Programación multihebra en java
 
LibreríAs De Java
LibreríAs De JavaLibreríAs De Java
LibreríAs De Java
 
Lenguaje de programación Ruby
Lenguaje de programación RubyLenguaje de programación Ruby
Lenguaje de programación Ruby
 
Ruby es un lenguaje de programación interpretado
Ruby es un lenguaje de programación interpretadoRuby es un lenguaje de programación interpretado
Ruby es un lenguaje de programación interpretado
 
Aic multiproc
Aic multiprocAic multiproc
Aic multiproc
 

Andere mochten auch

Programacion en java
Programacion en javaProgramacion en java
Programacion en javaANGELA FREIRE
 
Fase 5 ciclo for
Fase 5 ciclo forFase 5 ciclo for
Fase 5 ciclo forluisoctis
 
Trabajo práctico sobre Clojure, Evaluación de un Lenguaje de Programación
Trabajo práctico sobre Clojure, Evaluación de un Lenguaje de ProgramaciónTrabajo práctico sobre Clojure, Evaluación de un Lenguaje de Programación
Trabajo práctico sobre Clojure, Evaluación de un Lenguaje de ProgramaciónEmmanuel Fontán
 
Introduction to Clojure
Introduction to ClojureIntroduction to Clojure
Introduction to ClojureRenzo Borgatti
 
Introduction to Clojure and why it's hot for Sart-Ups
Introduction to Clojure and why it's hot for Sart-UpsIntroduction to Clojure and why it's hot for Sart-Ups
Introduction to Clojure and why it's hot for Sart-Upsedlich
 
Certificación java 6 cap 5
Certificación java 6 cap 5Certificación java 6 cap 5
Certificación java 6 cap 5srBichoRaro
 
Flujo de un programa Java (I)
Flujo de un programa Java (I)Flujo de un programa Java (I)
Flujo de un programa Java (I)alvaro gonzalez
 
86535551 ciclo-de-vida-jsf
86535551 ciclo-de-vida-jsf86535551 ciclo-de-vida-jsf
86535551 ciclo-de-vida-jsfpablo lopez
 
Ciclos Java - NetsBeans - Algoritmia
Ciclos Java - NetsBeans - AlgoritmiaCiclos Java - NetsBeans - Algoritmia
Ciclos Java - NetsBeans - AlgoritmiaDaniel Gómez
 
Plataforma de programación Java
Plataforma de programación JavaPlataforma de programación Java
Plataforma de programación JavaAntonio Contreras
 
Sentencias de control en java
Sentencias de control en javaSentencias de control en java
Sentencias de control en javaLorenna Glez
 
Functional programming in clojure
Functional programming in clojureFunctional programming in clojure
Functional programming in clojureJuan-Manuel Gimeno
 
ProgramacióN En Java Variables Y Ciclos
ProgramacióN En Java Variables Y CiclosProgramacióN En Java Variables Y Ciclos
ProgramacióN En Java Variables Y CiclosAndres Garcia
 
Captura de datos y mensajes Interfaz - JAVA
Captura de datos y mensajes Interfaz - JAVACaptura de datos y mensajes Interfaz - JAVA
Captura de datos y mensajes Interfaz - JAVAJose Diaz Silva
 
Java script(diapositivas)
Java script(diapositivas) Java script(diapositivas)
Java script(diapositivas) Roberto Mejia
 

Andere mochten auch (20)

Programacion en java
Programacion en javaProgramacion en java
Programacion en java
 
Fase 5 ciclo for
Fase 5 ciclo forFase 5 ciclo for
Fase 5 ciclo for
 
Trabajo práctico sobre Clojure, Evaluación de un Lenguaje de Programación
Trabajo práctico sobre Clojure, Evaluación de un Lenguaje de ProgramaciónTrabajo práctico sobre Clojure, Evaluación de un Lenguaje de Programación
Trabajo práctico sobre Clojure, Evaluación de un Lenguaje de Programación
 
Clojure
ClojureClojure
Clojure
 
Introduction to Clojure
Introduction to ClojureIntroduction to Clojure
Introduction to Clojure
 
Introduction to Clojure and why it's hot for Sart-Ups
Introduction to Clojure and why it's hot for Sart-UpsIntroduction to Clojure and why it's hot for Sart-Ups
Introduction to Clojure and why it's hot for Sart-Ups
 
Ciclos
CiclosCiclos
Ciclos
 
Certificación java 6 cap 5
Certificación java 6 cap 5Certificación java 6 cap 5
Certificación java 6 cap 5
 
While do while
While do whileWhile do while
While do while
 
Flujo de un programa Java (I)
Flujo de un programa Java (I)Flujo de un programa Java (I)
Flujo de un programa Java (I)
 
Modulo 1
Modulo 1Modulo 1
Modulo 1
 
86535551 ciclo-de-vida-jsf
86535551 ciclo-de-vida-jsf86535551 ciclo-de-vida-jsf
86535551 ciclo-de-vida-jsf
 
Ciclos Java - NetsBeans - Algoritmia
Ciclos Java - NetsBeans - AlgoritmiaCiclos Java - NetsBeans - Algoritmia
Ciclos Java - NetsBeans - Algoritmia
 
Plataforma de programación Java
Plataforma de programación JavaPlataforma de programación Java
Plataforma de programación Java
 
Curso java
Curso javaCurso java
Curso java
 
Sentencias de control en java
Sentencias de control en javaSentencias de control en java
Sentencias de control en java
 
Functional programming in clojure
Functional programming in clojureFunctional programming in clojure
Functional programming in clojure
 
ProgramacióN En Java Variables Y Ciclos
ProgramacióN En Java Variables Y CiclosProgramacióN En Java Variables Y Ciclos
ProgramacióN En Java Variables Y Ciclos
 
Captura de datos y mensajes Interfaz - JAVA
Captura de datos y mensajes Interfaz - JAVACaptura de datos y mensajes Interfaz - JAVA
Captura de datos y mensajes Interfaz - JAVA
 
Java script(diapositivas)
Java script(diapositivas) Java script(diapositivas)
Java script(diapositivas)
 

Ähnlich wie Clojure: Java y Lisp unidos

Introducción a java
Introducción a javaIntroducción a java
Introducción a javawaldinelly
 
Manual.curso.de.java.desde.cero
Manual.curso.de.java.desde.ceroManual.curso.de.java.desde.cero
Manual.curso.de.java.desde.ceroLalo Pérez
 
Java desde 0 pre
Java desde 0 preJava desde 0 pre
Java desde 0 prejtk1
 
Java desde 0 pre
Java desde 0 preJava desde 0 pre
Java desde 0 prejtk1
 
Presentacion de ruby
Presentacion de rubyPresentacion de ruby
Presentacion de rubyKarlytozdj
 
Fundamentos u3 v1
Fundamentos u3 v1Fundamentos u3 v1
Fundamentos u3 v1Lubas Pc
 
Java desde 0
Java desde 0Java desde 0
Java desde 0Saviotec
 
Cartilla de-java-basico-actualizado
Cartilla de-java-basico-actualizadoCartilla de-java-basico-actualizado
Cartilla de-java-basico-actualizadoRobert Wolf
 
Conceptos Fundamentales de POO
Conceptos Fundamentales de POOConceptos Fundamentales de POO
Conceptos Fundamentales de POOsena
 
Clase n°1 java
Clase n°1 javaClase n°1 java
Clase n°1 javajbersosa
 
CUESTIONARIO JAVA
CUESTIONARIO JAVACUESTIONARIO JAVA
CUESTIONARIO JAVAjesanchez5
 
Manual de-java
Manual de-javaManual de-java
Manual de-javaeliseorm
 

Ähnlich wie Clojure: Java y Lisp unidos (20)

Introducción a java
Introducción a javaIntroducción a java
Introducción a java
 
C1 java introduccion
C1 java introduccionC1 java introduccion
C1 java introduccion
 
C1 java introduccion
C1 java introduccionC1 java introduccion
C1 java introduccion
 
Manual.curso.de.java.desde.cero
Manual.curso.de.java.desde.ceroManual.curso.de.java.desde.cero
Manual.curso.de.java.desde.cero
 
Java desde 0 pre
Java desde 0 preJava desde 0 pre
Java desde 0 pre
 
Java desde 0 pre
Java desde 0 preJava desde 0 pre
Java desde 0 pre
 
Presentacion de ruby
Presentacion de rubyPresentacion de ruby
Presentacion de ruby
 
Fundamentos u3 v1
Fundamentos u3 v1Fundamentos u3 v1
Fundamentos u3 v1
 
Java
Java Java
Java
 
Java desde 0
Java desde 0Java desde 0
Java desde 0
 
Lenguaje Java
Lenguaje JavaLenguaje Java
Lenguaje Java
 
Cartilla de-java-basico-actualizado
Cartilla de-java-basico-actualizadoCartilla de-java-basico-actualizado
Cartilla de-java-basico-actualizado
 
Conceptos Fundamentales de POO
Conceptos Fundamentales de POOConceptos Fundamentales de POO
Conceptos Fundamentales de POO
 
Manual de-java
Manual de-javaManual de-java
Manual de-java
 
Clase n°1 java
Clase n°1 javaClase n°1 java
Clase n°1 java
 
CUESTIONARIO JAVA
CUESTIONARIO JAVACUESTIONARIO JAVA
CUESTIONARIO JAVA
 
Que es java
Que es javaQue es java
Que es java
 
Que es java
Que es javaQue es java
Que es java
 
Que es java
Que es javaQue es java
Que es java
 
Manual de-java
Manual de-javaManual de-java
Manual de-java
 

Kürzlich hochgeladen

POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 

Kürzlich hochgeladen (13)

POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 

Clojure: Java y Lisp unidos

  • 1. Clojure Java y Lisp, unidos Alejandro Serrano Mena alejandro.serranom@estudiante.uam.es Ciclo de Lenguajes Funcionales Marzo-Mayo 2010, Escuela Polit´cnica Superior, UAM e
  • 2. ¿Qu´ es Clojure? e El lenguaje Secuencias Macros Memoria Software Transaccional (STM) Integraci´n con Java o Contenido 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. ¿Qu´ es Clojure? e El lenguaje Secuencias Macros Memoria Software Transaccional (STM) Integraci´n con Java o Un primer acercamiento Un dialecto moderno de Lisp que corre bajo la plataforma Java, con un ojo puesto en la concurrencia
  • 4. ¿Qu´ es Clojure? e El lenguaje Secuencias Macros Memoria Software Transaccional (STM) Integraci´n con Java o Algunas 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. ¿Qu´ es Clojure? e El lenguaje Secuencias Macros Memoria Software Transaccional (STM) Integraci´n con Java o Algunas 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. ¿Qu´ es Clojure? e El lenguaje Secuencias Macros Memoria Software Transaccional (STM) Integraci´n con Java o Algunas 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. ¿Qu´ es Clojure? e El lenguaje Secuencias Macros Memoria Software Transaccional (STM) Integraci´n con Java o Clojure 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. ¿Qu´ es Clojure? e El lenguaje Secuencias Macros Memoria Software Transaccional (STM) Integraci´n con Java o Programaci´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. ¿Qu´ es Clojure? e El lenguaje Secuencias Macros Memoria Software Transaccional (STM) Integraci´n con Java o Contenido 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. ¿Qu´ es Clojure? e El lenguaje Secuencias Macros Memoria Software Transaccional (STM) Integraci´n con Java o Primeras “escapadas” a Java Traducci´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. ¿Qu´ es Clojure? e El lenguaje Secuencias Macros Memoria Software Transaccional (STM) Integraci´n con Java o Contenido 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. ¿Qu´ es Clojure? e El lenguaje Secuencias Macros Memoria Software Transaccional (STM) Integraci´n con Java o Trabajo con funciones Tipos 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. ¿Qu´ es Clojure? e El lenguaje Secuencias Macros Memoria Software Transaccional (STM) Integraci´n con Java o Consultando 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. ¿Qu´ es Clojure? e El lenguaje Secuencias Macros Memoria Software Transaccional (STM) Integraci´n con Java o Contenido 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. ¿Qu´ es Clojure? e El lenguaje Secuencias Macros Memoria Software Transaccional (STM) Integraci´n con Java o Contenido 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. ¿Qu´ es Clojure? e El lenguaje Secuencias Macros Memoria Software Transaccional (STM) Integraci´n con Java o Contenido 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. ¿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. ¿Qu´ es Clojure? e El lenguaje Secuencias Macros Memoria Software Transaccional (STM) Integraci´n con Java o Referencias 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. ¿Qu´ es Clojure? e El lenguaje Secuencias Macros Memoria Software Transaccional (STM) Integraci´n con Java o ¿Preguntas?
  • 20. ¿Qu´ es Clojure? e El lenguaje Secuencias Macros Memoria Software Transaccional (STM) Integraci´n con Java o ¡Muchas gracias!
  • 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/