Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introduction to Clojure

Introduction to Clojure

Spanish version

Julian Espinel

March 01, 2014
Tweet

More Decks by Julian Espinel

Other Decks in Programming

Transcript

  1. Agenda 1. ¿Qué es Clojure? 2. Conceptos básicos 3. ¿Por

    qué aprender Clojure? 4. ¿Qué necesito para programar? 5. Sintaxis del lenguaje 6. API REST en Clojure 7. Parte final 8. Fuentes
  2. Agenda 1. ¿Qué es Clojure? 2. Conceptos básicos 3. ¿Por

    qué aprender Clojure? 4. ¿Qué necesito para programar? 5. Sintaxis del lenguaje 6. API REST en Clojure 7. Parte final 8. Fuentes
  3. 1. ¿Qué es Clojure? 1. Lenguaje de programación Permite side

    effects (acceso a la base de datos, consumo de servicios externos, etc.) Idealmente se debe programar sin side effects. Ejemplo función impura.
  4. Agenda 1. ¿Qué es Clojure? 2. Conceptos básicos 3. ¿Por

    qué aprender Clojure? 4. ¿Qué necesito para programar? 5. Sintaxis del lenguaje 6. API REST en Clojure 7. Parte final 8. Fuentes
  5. 2. Conceptos básicos (Resumen) • Estructuras de datos inmutables. (Se

    pueden compartir entre threads). • Funciones como elementos de primer orden. • “Construcciones” propias del lenguaje para el manejo de concurrencia.
  6. Agenda 1. ¿Qué es Clojure? 2. Conceptos básicos 3. ¿Por

    qué aprender Clojure? 4. ¿Qué necesito para programar? 5. Sintaxis del lenguaje 6. API REST en Clojure 7. Parte final 8. Fuentes
  7. 3. ¿Por qué aprender Clojure? “A language that doesn't affect

    the way you think about programming, is not worth knowing.” Alan Perlis.
  8. Agenda 1. ¿Qué es Clojure? 2. Conceptos básicos 3. ¿Por

    qué aprender Clojure? 4. ¿Qué necesito para programar? 5. Sintaxis del lenguaje 6. API REST en Clojure 7. Parte final 8. Fuentes
  9. Agenda 1. ¿Qué es Clojure? 2. Conceptos básicos 3. ¿Por

    qué aprender Clojure? 4. ¿Qué necesito para programar? 5. Sintaxis del lenguaje 6. API REST en Clojure 7. Parte final 8. Fuentes
  10. 5. Sintaxis del lenguaje 1. Expresiones S: “Code as data”

    2. Prefix notation (+ 1 2) (+ 1 2 3 4 5) -> 3 -> 15
  11. 5. Sintaxis del lenguaje 3. Packages Namespaces (ns bog.jvm.meetup) ¿Cómo

    declaro una clase? ¿Cómo declaro una variable? ¿Cómo declaro un método?
  12. 5. Sintaxis del lenguaje 4. Clases Estructuras de datos mapas

    {:key value} (assoc {} :key1 “value1” :key2 “value2”) -> {:key1 “value1” :key2 “value2”}
  13. 5. Sintaxis del lenguaje 5. Variables Valores inmutables (def nombre-valor

    valor) (def hello-world “Hello world”) hello-world -> Hello world
  14. 5. Sintaxis del lenguaje 5. Valores inmutables (def basic-map {})

    (def hello-world “Hello world”) (assoc basic-map :message hello-world) -> {:message “Hello world”}
  15. 5. Sintaxis del lenguaje 6. Métodos Funciones a. Declarar una

    función: (defn nombre-funcion “documentacion” [lista-de-parametros] cuerpo-funcion)
  16. Agenda 1. ¿Qué es Clojure? 2. Conceptos básicos 3. ¿Por

    qué aprender Clojure? 4. ¿Qué necesito para programar? 5. Sintaxis del lenguaje 6. API REST en Clojure 7. Parte final 8. Fuentes
  17. 6. API REST en Clojure 3. Estructura del código back-end

    Servicios Estructuras de datos Persistencia Infraestructura
  18. 6. API REST en Clojure 5. Nombramiento de archivos Mejores

    prácticas de Clojure: a. minusculas b. palabras separadas por - ej: horario-api.clj, citas-api.clj
  19. 6. API REST en Clojure 5. Nombramiento de archivos horario-api.clj

    -> horario_api.clj Interoperabilidad con Java
  20. Agenda 1. ¿Qué es Clojure? 2. Conceptos básicos 3. ¿Por

    qué aprender Clojure? 4. ¿Qué necesito para programar? 5. Sintaxis del lenguaje 6. API REST en Clojure 7. Parte final 8. Fuentes
  21. Agenda 1. ¿Qué es Clojure? 2. Conceptos básicos 3. ¿Por

    qué aprender Clojure? 4. ¿Qué necesito para programar? 5. Sintaxis del lenguaje 6. API REST en Clojure 7. Parte final 8. Fuentes
  22. 8. Fuentes 1. http://clojure.org 2. http://clojure-doc.org 3. http://clojuredocs.org/ 4. http://coding.smashingmagazine.com/2013/04/18/introduction-to-programming-type-systems

    5. http://blogs.perl.org/users/ovid/2010/08/what-to-know-before-debating-type-systems.html 6. http://www.lispcast.com/static-vs-dynamic-typing 7. http://gigasquidsoftware.com/blog/2014/02/01/hitchhikers-guide-to-clojure/ 8. http://christophermaier.name/blog/2011/07/07/writing-elegant-clojure-code-using-higher-order- functions 9. http://blakesmith.me/2012/05/25/understanding-clojure-concurrency-part-2.html 10. http://www.cs.yale.edu/quotes.html 11. http://en.wikipedia.org/wiki/Piet_Mondrian 12. http://clojure.org/rationale