terça-feira, 25 de agosto de 2009

Clojure and the Clouds!

Depois de muito tempo sem poder postar, devido a programação compulsiva, estudos e algumas pesquisas passo para dar uma palavra acerca do Clojure!


IDÉIAS DE ECOSSITEMA PARA A CLOUD COMPUTING
(1-LINGUAGENS F
UNCIONAIS)

1.1 CLOJURE



Baseada no velho e "concorrente" Lisp, a linguagem Clojure é compilada diretamente para bytecode Java, e tem como plataforma de execução a JVM que é muito robusta, fazendo uso de tecnologias como JIT e GC Paralelo alem de outras oluções brilhantes que facilitam a vida de quem migra para o paradigma funcional:

  • Multimethods(Polimorfismo)
  • Estrutura de Dados Imutaveis ex: REF's
  • Metaprogramação extendida do LISP
  • STM ex:Agentes

Alem disso a comunidade e muito amigavel e existem muitas bibliotecas que ja englobam tecnologias de vanguarda como:

Otimas para alta performance e paralelismo no tratamento de grandes quantidades de dados estas bibliotecas fazem com que o Clojure seja ideal para a Web2.0 e a futura Web 3.0.

Alem de novas tecnologias existem alguns frameworks interessantes como o Compojure, voltado para Web, baseado na API Sevlet do Java, usando o padrao REST para as rotas, sendo totalmente adaptavel, devido a grande capacidade atribuida pela metaprogramação(macros), utilizando recursos e tecnicas presentes em muitos frameworks web modernos(Django,Rails,Grails,Symphony,VRaptor).

Clojure resgata conceitos sobre concorrencia ja resolvidos nos anos 50 quando JohnMcCarthy, criador do LISP usou a linguagem em pesquisas com inteligencia artificial, tendo inclusive cunhado o termo "Cloud Computing" ou "Provedor de Serviços" baseado na abstração dos sistemas de distribuição eletrico e hidraulico em cidades .

Podemos dizer que Clojure, juntamente com Scala e Erlang são as linguagens cuja classe define um novo paradigma chamado , POC(Programação Orientada a Concorrencia) e que são de suma importancia para a Cloud Computing.


Resumindo...


  • Linguagens como Clojure, CommonLisp, Haskell, geram codigo puramente funcional, que é mais plugavel e facil de testar!
  • Com Clojure você pode utilizar o pacote de concorrencia (JSR-166) de forma bem clara, inclusive englobando o padrão Fork/Join(Divisão e Conquista) ou utilizando Executores(Master/Slave).
  • Com Clojure você se beneficia de uma API explicita e mutavel para se adequar as suas necessidades de concorrencia e escalabilidade!

Links Interessantes: