36
1 POR QUE SUA PRÓXIMA APLICAÇÃO WEB DEVE SER EM CLOJURE? Eduardo Aquiles Radanovitsck - @eduaquiles

Por que sua próxima aplicação web deve ser em Clojure?

Embed Size (px)

Citation preview

Page 1: Por que sua próxima aplicação web deve ser em Clojure?

1

POR QUE SUA PRÓXIMA APLICAÇÃO WEB DEVE SER EM CLOJURE?

Eduardo Aquiles Radanovitsck - @eduaquiles

Page 2: Por que sua próxima aplicação web deve ser em Clojure?

2

Minha jornada até agora...

Page 3: Por que sua próxima aplicação web deve ser em Clojure?

3

QUEM SOU EU?Desenvolvedor & consultor na TW desde 2010

Java, C#, Clojure, JavaScript

EUA, Ecuador, Escócia

Page 4: Por que sua próxima aplicação web deve ser em Clojure?

4

AGENDA Convencer pelo menos um de vocês a usar Clojure no próximo projeto

...e que Clojure conquiste o mundo (amanhã à noite)

Page 5: Por que sua próxima aplicação web deve ser em Clojure?

5

AGENDA Sintaxe REPL Testes Dados Funções Imutabilidade JVM WEB

Page 6: Por que sua próxima aplicação web deve ser em Clojure?

println “Hello, TDC!”)(

Page 7: Por que sua próxima aplicação web deve ser em Clojure?

7

SINTAXE

Lista de símbolos onde o primeiro é invocado

passando o resto como argumento

Page 8: Por que sua próxima aplicação web deve ser em Clojure?

(* 2 3 4) => 24

((fn [n] (* 2 n)) 2) => 4

(map inc [1 2 3]) => (2 3 4)

Page 9: Por que sua próxima aplicação web deve ser em Clojure?

9

REPLRead-eval-print loop

(interpretador)Experimentação com a linguagem => feedback

rápido

Page 10: Por que sua próxima aplicação web deve ser em Clojure?

» lein repl

user=> (def foo 2)#'user/foo

user=> (foo)ClassCastException java.lang.Long cannot be cast to clojure.lang.IFn user/eval1265

user=> foo2

Page 11: Por que sua próxima aplicação web deve ser em Clojure?

11

TESTES

Testes são tão intrínsicos na linguagem que estão

na biblioteca padrão

Page 12: Por que sua próxima aplicação web deve ser em Clojure?

(require '[clojure.test :refer :all])

(deftest sum (is (= 5 (+ 2 3))))

(run-tests)

Testing user

Ran 1 tests containing 1 assertions.0 failures, 0 errors.{:test 1, :pass 1, :fail 0, :error 0, :type :summary}

Page 13: Por que sua próxima aplicação web deve ser em Clojure?

13

DADOS

entidades lógicas

Page 14: Por que sua próxima aplicação web deve ser em Clojure?

;apresentador{:nome “Eduardo”}

;apresentador atualizado{:nome “Eduardo Aquiles” :idade 28}

;cotação do dolar últimos dias[3.49 3.57 3.54]

Page 15: Por que sua próxima aplicação web deve ser em Clojure?

15

Dados usam estruturas da linguagem e são

explícitos para tornar fácil a argumentação em

cima deles

Page 16: Por que sua próxima aplicação web deve ser em Clojure?

16

FUNÇÕES

Operações em cima de dados

Valores entram, valor sai

Page 17: Por que sua próxima aplicação web deve ser em Clojure?

(defn modulo [valor](if (> 0 valor)

(* -1 valor)valor

))

(deftest test-modulo(is (= 2 (modulo -2)))(is (= 2 (modulo 2))))

{:test 1, :pass 2, :fail 0, :error 0, :type :summary}

Page 18: Por que sua próxima aplicação web deve ser em Clojure?

18

Simplicidade

Page 19: Por que sua próxima aplicação web deve ser em Clojure?

19

IMUTABILIDADE

Ou… como remover uma classe inteira de defeitos

do seu sistema

Page 20: Por que sua próxima aplicação web deve ser em Clojure?

(def my-vec [1 2 3])

(conj my-vec 4) => [1 2 3 4]

my-vec => [1 2 3]

Page 21: Por que sua próxima aplicação web deve ser em Clojure?

21

Estruturas de dados persistentes

Favorece concorrência

Page 22: Por que sua próxima aplicação web deve ser em Clojure?

22

Defeitos envolvendo mutabilidade são

complexos e custosos para se corrigir

Page 23: Por que sua próxima aplicação web deve ser em Clojure?

23

Linguagem permite mutabilidade, mas torna

ato explícito

Page 24: Por que sua próxima aplicação web deve ser em Clojure?

24

JVM

VM como plataforma

Page 25: Por que sua próxima aplicação web deve ser em Clojure?

25

GC

tipos

Interop (java >>> C)

Page 26: Por que sua próxima aplicação web deve ser em Clojure?

(java.lang.Math/pow 2 3) => 8.0

Page 27: Por que sua próxima aplicação web deve ser em Clojure?

27

RESUMINDO...

Page 28: Por que sua próxima aplicação web deve ser em Clojure?

28

Sintaxe – bastante simples: listas para todos os lados REPL – experimentação e rápido feedback Testes – não preciso escolher um framework Dados – uso a melhor estrutura de dados que a própria linguagem já

oferece Funções – simplicidade Imutabilidade – menos bugs, mais concorrência JVM – acesso à classes do Java e bibliotecas

Page 29: Por que sua próxima aplicação web deve ser em Clojure?

29

E O QUE ISSO AJUDA COM UMA APLICAÇÃO WEB?

Page 30: Por que sua próxima aplicação web deve ser em Clojure?

30

JVM altamente otimizada, diversas ferramentas para monitoramento,

além de servidores HTTP disponíveis

Page 31: Por que sua próxima aplicação web deve ser em Clojure?

31

Imutabilidade por padrão significa que

interação entre requisições será menor

ou zero

Page 32: Por que sua próxima aplicação web deve ser em Clojure?

32

banco de dados →transformação →

apresentação na tela

Fluxo se encaixa no modelo funcional

Page 33: Por que sua próxima aplicação web deve ser em Clojure?

33

Maioria das vezes estamos movendo dados

de uma lado para o outro – realmente

preciso criar um tipo?

Page 34: Por que sua próxima aplicação web deve ser em Clojure?

34

slide obrigatório sobre ClojureScript

Page 35: Por que sua próxima aplicação web deve ser em Clojure?

35

POR QUE NÃO?

Page 36: Por que sua próxima aplicação web deve ser em Clojure?

36

OBRIGADO!Eduardo Aquiles Radanovitsck

@[email protected]

[email protected]