Pergunta

Alguém pode explicar as principais diferenças entre Scala, Groovy e Clojure. Eu sei que cada uma dessas compilações para ser executado na JVM, mas eu gostaria de uma simples comparação entre eles.

Foi útil?

Solução

Groovy é uma linguagem de tipagem dinâmica, cuja sintaxe é muito perto de Java, com uma série de melhorias de sintaxe que permitem código mais leve e menos clichê. Ele pode ser executado através de um intérprete, bem como a ser compilado, o que torna bom para prototipagem rápida, scripts e aprendendo linguagens dinâmicas sem ter que aprender uma nova sintaxe (supondo que você conhece Java). A partir do Groovy 2.0, também tem um apoio crescente estática compilação . Groovy suporta fechamentos e tem suporte para programação em um estilo um tanto funcional, embora ainda bastante longe da definição tradicional de programação funcional.

Clojure é um dialeto do Lisp com alguns recursos avançados, como Software Transactional Memória . Se você gosta de Lisp e gostaria de usar algo como isso sob a JVM, Clojure é para você. É possivelmente a língua mais funcional execução no JVM, e certamente o mais famoso. Além disso, ele tem uma ênfase mais forte na imutabilidade do que outros dialetos Lisp, que leva-lo mais perto do coração de entusiastas de linguagem funcional.

Scala é uma linguagem totalmente orientada a objetos, mais do que Java, com um dos mais avançados sistemas do tipo acessível em línguas não-pesquisa, e, certamente, o sistema de tipo avançado mais na JVM. Ele também combina muitos conceitos e características das linguagens funcionais, sem comprometer a orientação a objetos, mas o seu compromisso sobre características de linguagem funcional adiar alguns entusiastas do último.

Groovy tem boa aceitação e um framework web popular em Grails. Ele também alimenta o sistema de compilação Gradle, que está se tornando uma alternativa popular para Maven. Eu, pessoalmente, acho que é uma língua com utilidade limitada, especialmente no que Jython e JRuby começar a fazer incursões na JVM-terra, em comparação com os outros.

Clojure, mesmo descontando algumas características muito interessantes, tem um apelo forte apenas por ser um dialeto Lisp na JVM. Pode limitar a sua popularidade, concedido, mas espero que ele terá leal comunidade em torno dele por um longo tempo.

Scala pode competir diretamente com Java, e dar-lhe um funcionamento para seu dinheiro em quase todos os aspectos. Ele não pode competir em popularidade no momento, é claro, e a falta de um forte apoio corporativo pode dificultar a sua aceitação em ambientes corporativos. É também uma linguagem muito mais dinâmico do que Java, no sentido de como os evolui de linguagem. Do ponto de vista da linguagem, que é uma coisa boa. A partir da perspectiva dos usuários que planeja ter milhares de linhas de código escrito nele, não é assim.

Como a divulgação final, eu estou muito familiarizado com Scala, e só familiarizado com os outros dois.

Outras dicas

Scala

Scala evoluiu a partir de uma linguagem funcional pura conhecido como Funnel e representa uma implementação de sala limpa de quase toda a sintaxe do Java, diferindo apenas em uma clara melhoria poderia ser feito ou onde ele iria comprometer a natureza funcional da língua. Essas diferenças incluem objetos únicos em vez de métodos estáticos e inferência de tipos.

Grande parte deste foi baseada no trabalho antes de Martin Odersky com a Pizza idioma. O OO / integração FP vai muito além de meras fechamentos e levou à língua que está sendo descrito como pós-funcional.

Apesar disso, é o mais próximo de Java de várias maneiras. Principalmente devido a uma combinação de suporte OO e tipagem estática, mas também devido a uma meta explícita no design de linguagem que deve integrar muito bem com Java.

Groovy

Groovy aborda explicitamente duas das maiores críticas do Java por

  • sendo digitado de forma dinâmica, o que remove um monte de clichê e
  • acrescentando tampas para o idioma.

É talvez sintaticamente mais próximo a Java, não oferecendo algumas das construções funcionais mais ricos que Clojure e Scala fornecem, mas ainda oferecendo uma melhoria evolutiva definitiva -. Especialmente para escrever programas script do syle

Groovy tem o forte apoio comercial das três línguas, principalmente via SpringSource.

Clojure

Clojure é uma linguagem funcional na família LISP, também é digitado dinamicamente.

Recursos como suporte STM dar-lhe algum do melhor suporte a simultaneidade out-of-the-box, enquanto Scala requer uma biblioteca de 3-parte, como Akka para duplicar este.

Sintaticamente, é também o mais distante das três línguas de código típico Java.

Eu também tenho que divulgar que eu estou mais familiarizado com Scala:)

Eu nunca tive tempo para brincar com Clojure. Mas para scala vs groovy, este é palavras de James Strachan - Groovy criador

"Embora minha dica embora para a substituição de longo prazo de javac é Scala. Estou muito impressionado com ele! Posso dizer honestamente se alguém tivesse me mostrado Programação em Scala livro de Martin Odersky, Lex Spoon & Bill Venners em 2003 eu provavelmente nunca criou Groovy ".

Você pode ler a história toda aqui

Eles podem ser diferenciados com o local onde eles estão vindo ou que os desenvolvedores estão dirigidas principalmente.

Groovy é um pouco como a versão de scripts de Java. Muito tempo programadores Java se sentir em casa quando a construção ágil aplicações apoiadas por grandes arquiteturas. Groovy on Grails é, como o nome sugere semelhante ao framework Rails. Para as pessoas que não querem se preocupar com detalhamento de Java o tempo todo.

Scala é uma linguagem orientada a objetos e programação funcional e programadores Ruby ou Python pode se sentir mais perto de um presente. Ele emprega um monte de boas idéias comuns encontrados nestas linguagens de programação.

Clojure é um dialeto da linguagem de programação Lisp modo Lisp, Scheme ou Haskell desenvolvedores podem sentir-se em casa durante o desenvolvimento com essa linguagem.

Estou lendo os Pragmatic Programmers livro "Groovy Recipes: Lubrificação das rodas de Java" por Scott Davis, Copyright 2008 e impresso em abril do mesmo ano.

É um pouco fora da data, mas o livro deixa claro que Groovy é, literalmente, uma extensão do Java. Eu posso escrever o código Java que funciona exatamente como Java e renomeie o arquivo * .groovy e funciona bem. De acordo com o livro, o inverso é verdadeiro, se eu incluir as bibliotecas necessárias. Até agora, a experimentação parece confirmam isto.

Obviamente, a sintaxe são completamente diferentes (Groovy é mais próximo a Java), mas suponho que não é o que você está pedindo.

Se você está interessado em usá-los para o script de um aplicativo Java, Scala provavelmente não é uma boa escolha, pois há nenhuma maneira fácil de avaliar -lo de Java, enquanto Groovy é especialmente adequado para o efeito.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top