quinta-feira, 11 de dezembro de 2008

CLOJURE






Introdução

Clojure foi desenvolvido por Rich Hickey, ábil programador e arquiteto tendo trabalhado em uma série de projetos com diversas tecnologias, incluindo LISP.

Então, o Clojure é uma linguagem dinamica com alvo na JVM que combina a forma de uso e a produtividade das linguagens scripts contando com um eficiente e robusto suporte a concorrencia (MULTITHREADED). Clojure é uma linguagem compilada, gerando bytecode para a JVM, mas ainda assim se mantem totalmente dinamico.Toda caracteristica suportada pelo Clojure tambem o é a nivel de execução (RUNTIME). Clojure possui fácil acesso aos mais diversos frameworks em Java(senão todos!!), com dicas de tipo opcionais e inferência de tipo, certificando que as chamadas ao Java não permitam reflexão. Clojure é um dialeto LISP e compartilha com o LISP a filosofia de codigo-como-dados e um poderoso sistema de macros.

Predominantemente o Clojure é uma linguagem funcional, e possui um rico conjunto de estruturas de dados que são imutáveis e persistentes.

Quando um estado mutável é necessario, Clojure oferece uma MEMÓRIA TRANSACIONAL DE SOFTWARE (STM), e um Agente de sistema reativo que garante limpeza, correteza em designs multitarefa. Clojure é uma combinação de facilidades de forma elegante, poderosa, pratica e claro, divertida de usar.

Apesar da JVM não possuir suporte á tail recursion stack, o Clojure possui um construtor de looping funcional utlizando recur/loop.

As estruturas de dados persistentes imutaveis funcionam de modo transacional, de forma que as novas versões assim como as antigas fiquem disponiveis mesmo após mudanças.A coleção desta forma tem sua performance garantida, alem de ser totalmente thread safe e ser pratica(ou seja, muito mais rapida que O(logn)!


Existem 5 caracteristicas fundamentais desta nova linguagem:
  • Novo dialeto LISP, não é igual a COMMON LISP ou SCHEME
  • Linguagem Funcional(ênfase em imutabilidade)
  • Suporte a alta concorrencia(coordenação de estado a nivel de linguagem
  • Design feito para a JVM(roda nativamente!)
Novo LISP
  • Tipagem e compilação dinamicas
  • Console Interativo(REPL-ReadEvalProgrammingLoop)
  • Load/Edit do codigo em programas rodando
  • Nucleo Reduzido
  • Sequencias
  • Abstração de sintaxe(Macros)
  • Não é OO
Tipos de Dados Atomicos
  • Inteiros com precisão arbitraria -1234567898765
  • Doubles 1.234
  • Bigdecimals 1.234M
  • Racionais 22/7
  • String "William"
  • Chars \a \b \c
  • Simbolos will java
  • Palavras chave :nuke :hiroshima
  • Booleans true false
  • Null nil
  • Expressões Regulares #"a*b"

Para mais informações:

Marcadores:

0 Comentários:

Postar um comentário

Assinar Postar comentários [Atom]

<< Página inicial