Introducción a Clojure. Implementando un API REST

Documentos relacionados
INTRODUCCION PASCAL-FC

Universidad Central de Bayamón COLEGIO DE DESARROLLO EMPRESARIAL Y TECNOLOGIA. Número Estudiante:

Lenguaje de Programación: Go


Servicios Web. Andrés Pastorini. TRIA Tecnólogo Informático

Node.JS Raspberry Pi (RPi) 2015/05/08 Juan V. Capella

Big Data, MapReduce y. Hadoop. el ecosistema. Bases de Datos No Relacionales Instituto de Computación, FING, UdelaR 2016

Curso Java Web (JSP's/Servlets)

(Rich Internet Applications) (Aplicaciones de internet enriquecidas).

Curso de JavaServer Faces

Manual de turbo pascal

Fundamentos Programación Orientada a Objetos ( POO ) - Parte I Desarrollo de Software

Un servlet es una clase java que implementa la Servlet interface. Un servlet corre dentro de un contexto denominado Servlet engine.

Introducción a Java LSUB. 30 de enero de 2013 GSYC

Nuevas Perspectivas en Lenguajes de Programación: Teoría de Tipos y Seguridad de Tipos

Lenguaje Orientado por Objetos Simple, Poderoso y Fácil de aprender Robusto Interactivo Arquitectura neutral Interpretado y de alto desempeño

Java 7: Soporte a lenguajes dinámicos. Roberto Montero Miguel 01/11/2011 7

Vimar By-phone. Your home on your mobile phone.

IMPORTAR Y USAR CLASES DEL API DE JAVA. EJEMPLO CLASE MATH Y MÉTODO POW. CONSTRUCTORES PRIVADOS. (CU00647B)

TEMA 5. Otras arquitecturas distribuidas II. Objetos distribuidos y CORBA

CentralTECH JAVA SE 7 Desarrollo

PROGRAMACIÓN EN C#.NET Programación Orientada a Objetos en C# Ing. Bruno López Takeyas

Introducción a las Aplicaciones Web

Programación para Ingeniería Eléctrica

Herramienta CASE (Bouml)

Programación en Visual C# 6.0. Visual Studio 2015

Programa de actualización profesional ACTI.NET Desarrollo de aplicaciones locales y web con tecnología VB.NET

Elementos sintácticos de una JSP.

Programa de actualización profesional ACTI.NET Desarrollo de aplicaciones locales y web con tecnología VB.NET 2010

Los tipos de datos primitivos

Curso Programación Java JSE 7

Linux Avanzado: Redes y Servidores (Versión Ubuntu)

CONCEPTOS BÁSICOS PROGRAMACIÓN ORIENTADA A OBJETOS. Ing. Martha Tello

Programación Orientada A Aspectos:POA

Programación Java SE 7

UNIVERSIDAD DE OVIEDO

Programación en Java. Temario. David Contreras Bárcena

Objective C (Desarrollo con Apple)

RESTful 4 all. Diego Sapriza

Tutorial: Python + Soap Web Service. Daniel Montenegro Cordero

Taller: Desarrollo Rápido de Aplicaciones para Dispositivos Móviles Comptabiles con S60 Práctica 1

El lenguaje Python. Programación Declarativa Avanzada. Curso

CUP. Diseño de compiladores. Estructura del archivo CUP. Estructura del archivo CUP. Estructura del archivo CUP. Estructura del archivo CUP 20/04/2014

Bloque IV: Usos avanzados

Master en Java Certificación para Programadores

Desarrollo Software Gran Escala

Tema 1. Introducción a JAVA

Lección: Lenguaje de Programación JULIA

SISTEMAS DISTRIBUIDOS MÓDULO 9. Web Services en Sistemas Distribuidos. Arquitectura Orientada a Servicios

CAPITULO 3 ARQUITECTURA DE COMPONENTES GIS EN INTERNET

Diplomado Programming Java (JSE & JEE) with Oracle 10g

1. Generación automática de documentación (javadoc)

20483 Programación en C#

Servicios Web. Desarrollo de Aplicaciones Empresariales

C# para no Programadores

Capacitación Efectiva SOA y Web Services con Java

dit UPM Tema 3: Concurrencia /threads (python) Análisis y diseño de software José A. Mañas

Fundamentos de las tecnologías de la información

OMG - CORBA. Object Management Group. Common Object Request Broker (CORBA)

LABORATORIO DE CONTROL POR COMPUTADOR 4º - INGENIERIA DE TELECOMUNICACION

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

Servicios pensados para optimizar los procesos de comunicación de voz y SMS.

Características generales del lenguaje Java. María a Consuelo Franky

Programación Funcional Lisp-DrScheme Primera Parte. Dr. Oldemar Rodríguez Rojas Escuela de Informática Universidad de Nacional

SYLLABUS de la Asignatura. Programación INF1201

Semántica Denotacional

Tecnología de software para sistemas de tiempo real

Session: DB2 Workload Manager. Luis Reina Juliá IBM 22/11/2011

Lenguajes de marcado para presentación de Páginas web.

Algunas características de los lenguajes de programación orientados a objetos son:

Para crear un arreglo de cualquier tipo de elementos la sintaxis es:

5. Sentencias selectivas o condicionales

DISPOSITIVO DE CONTROL PARA REDES DE DISTRIBUCIÓN ELÉCTRICA RESUMEN DEL PROYECTO

Tema 9: Declaraciones de tipos y clases

Ubicación e historia

El teclado viene pre-cargado de fábrica pero es recomendable cargarlo completamente la primera vez que lo utilices.

FUNDAMENTOS DE INFORMÁTICA

HASH-MERGE vs Lookups.

PHP HypertextPreProcessor


Curso de Java Introducción a la Programación I

Sistema móvil para la seguridad personal en caso de accidentes presentados en la ciudad de Bogotá. Manual de Programador

1. ESTRUCTURA DE UN PROGRAMA PASCAL Todo programa escrito en lenguaje Pascal, del más simple al más complejo, tiene la siguiente estructura:

Transcripción:

Introducción a Clojure Implementando un API REST

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

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

1. Qué es Clojure? Piet Mondrian Composition II in Red, Blue, and Yellow 1930

1. Qué es Clojure? Rich Hickey Clojure programming language 2007

1. Qué es Clojure? 1. Lenguaje de programación

1. Qué es Clojure? 1. Lenguaje de programación

1. Qué es Clojure? 1. Lenguaje de programación Ejemplo función impura. Permite side effects (acceso a la base de datos, consumo de servicios externos, etc.) Idealmente se debe programar sin side effects.

1. Qué es Clojure? 1. Lenguaje de programación Ejemplo función pura.

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

2. Conceptos básicos 1. Paradigma programación funcional 2. Concepto: Code as data 3. Programación concurrente

2. Conceptos básicos Paradigma programación funcional 1. Estructuras de datos inmutables.

2. Conceptos básicos Paradigma programación funcional 2. Funciones como First-class citizens. (map inc [1 2 3 4 5]) -> (2 3 4 5 6)

2. Conceptos básicos Code as data

2. Conceptos básicos Programación concurrente

2. Conceptos básicos Programación concurrente 3. Refs (STM) 4. Futures 5. Promises

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.

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

3. Por qué aprender Clojure? A language that doesn't affect the way you think about programming, is not worth knowing. Alan Perlis.

3. Por qué aprender Clojure?

3. Por qué aprender Clojure?

3. Por qué aprender Clojure?

3. Por qué aprender Clojure? Piet Mondrian Composition II in Red, Blue, and Yellow 1930 Minimalismo

3. Por qué aprender Clojure? Clojure es un lenguaje minimalista Sintaxis: simple limitada consistente

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

4. Qué necesito para programar?

4. Qué necesito para programar? Leiningen Herramienta de automatización de proyectos escritos en Clojure.

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

5. Sintaxis del lenguaje Este es el lenguaje con muchos paréntesis? LISP: LISt Processing

5. Sintaxis del lenguaje 1. Expresiones S: Code as data 2. Prefix notation (+ 1 2) -> 3 (+ 1 2 3 4 5) -> 15

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?

5. Sintaxis del lenguaje 4. Clases Estructuras de datos mapas {:key value} (assoc {} :key1 value1 :key2 value2 ) -> {:key1 value1 :key2 value2 }

5. Sintaxis del lenguaje 4. Clases Estructuras de datos a. deftype b. defrecord c. reify

5. Sintaxis del lenguaje 4. Estructuras de datos clojure.core nil Char Numbers String

5. Sintaxis del lenguaje 4. Estructuras de datos clojure.core Set List Vector Map

5. Sintaxis del lenguaje 5. Variables Valores inmutables (def nombre-valor valor) (def hello-world Hello world ) hello-world -> Hello world

5. Sintaxis del lenguaje 5. Valores inmutables (def basic-map {}) (def hello-world Hello world ) (assoc basic-map :message hello-world) -> {:message Hello world }

5. Sintaxis del lenguaje 6. Métodos Funciones a. Declarar una función: (defn nombre-funcion documentacion [lista-de-parametros] cuerpo-funcion)

5. Sintaxis del lenguaje 6. Funciones b. Llamar una función: (nombre-funcion lista-de-parametros)

5. Sintaxis del lenguaje 6. Funciones

5. Sintaxis del lenguaje 6. Funciones Arity overloading Parámetros opcionales

5. Sintaxis del lenguaje Code as data (extra)

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

6. API REST en Clojure 1. REST El ejemplo es REST nivel 2

6. API REST en Clojure 2. Aplicación Directorio de servicios

6. API REST en Clojure 2. Aplicación Front-end Back-end HTTP request HTTP response

6. API REST en Clojure 3. Estructura del código back-end Infraestructura Servicios Estructuras de datos Persistencia

6. API REST en Clojure 4. Pruebas e integración continua Midje &

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

6. API REST en Clojure 5. Nombramiento de archivos horario-api.clj -> horario_api.clj Interoperabilidad con Java

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

7. Parte final

7. Parte final Recursos 1. Code: https://github.com/julianespinel/directory 2. Slides: https://speakerdeck.com/julianespinel

7. Parte final

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

8. Fuentes 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. http://clojure.org http://clojure-doc.org http://clojuredocs.org/ http://coding.smashingmagazine.com/2013/04/18/introduction-to-programming-type-systems http://blogs.perl.org/users/ovid/2010/08/what-to-know-before-debating-type-systems.html http://www.lispcast.com/static-vs-dynamic-typing http://gigasquidsoftware.com/blog/2014/02/01/hitchhikers-guide-to-clojure/ http://christophermaier.name/blog/2011/07/07/writing-elegant-clojure-code-using-higher-orderfunctions http://blakesmith.me/2012/05/25/understanding-clojure-concurrency-part-2.html http://www.cs.yale.edu/quotes.html http://en.wikipedia.org/wiki/piet_mondrian http://clojure.org/rationale

8. Fuentes 13. 14. 15. 16. 17. http://tech.puredanger.com/2010/02/09/clojure-4-private-functions/ http://clojure.org/functional_programming http://clojure.org/cheatsheet http://martinfowler.com/articles/richardsonmaturitymodel.html http://stackoverflow.com/questions/4420944/why-does-clojure-convert-dashes-in-names-tounderscores-in-the-filesystem