Artigo publicado
Movido para outras linguagens.
Obrigado pelo prestigio Carlos!
Se alguem quiser trocar idéia sobre o assunto, só postar
[quote=jfaerman]Obrigado pelo prestigio Carlos!
Se alguem quiser trocar idéia sobre o assunto, só postar :)[/quote]
Parabéns pelo artigo. Minha impressão é que o Scala te oferece muito mais poder e flexibilidade, além do melhor dos dois mundos (functional programming and oo programming).
Só que esse poder vem com um custo alto de complexidade. Programar em scala e entender sua sintaxe não é algo simples. O que eu mais gosto em relacao ao Java é que a linguagem em si (sintaxe) é ridícula. Qualquer um entende. Acho que tirando generics, Java é a linguagem com a sintaxe mais simples e direta.
Agora Scala realmente manda bem na questão de concorrência. Mas vale lembrar que Java também suporta ACTORS, só que muito mais verbose => http://akka.io/
Scala é melhor que Java? Sem dúvida nenhuma. Muito mais poderosa e flexível. Mas isso vem com o custo da complexidade que não me agrada muito. Se um dia eu tiver a oportunidade (= tempo + motivacao) para aprender Scala ficarei muito feliz, mas até lá o bom e velho Java resolve as coisas muito bem.
Um ponto importante nessa questão de complexidade é que voce pode escrever o programa em Scala quase da mesma maneira que faria em Java.
Basta ignorar as funcionalidades normalmente chamadas de “complexas” ( vairancia e limites de tipos, programação funcional, etc)
Se fizer isso, muito provavelmente o programa vai ficar, na verdade mais simples do que a versão java.
Mas ai estaria perdendo o melhor da festa…
[quote=saoj][quote=jfaerman]Obrigado pelo prestigio Carlos!
Se alguem quiser trocar idéia sobre o assunto, só postar :)[/quote]
Parabéns pelo artigo. Minha impressão é que o Scala te oferece muito mais poder e flexibilidade, além do melhor dos dois mundos (functional programming and oo programming).
Só que esse poder vem com um custo alto de complexidade. Programar em scala e entender sua sintaxe não é algo simples. O que eu mais gosto em relacao ao Java é que a linguagem em si (sintaxe) é ridícula. Qualquer um entende. Acho que tirando generics, Java é a linguagem com a sintaxe mais simples e direta.
Agora Scala realmente manda bem na questão de concorrência. Mas vale lembrar que Java também suporta ACTORS, só que muito mais verbose => http://akka.io/
Scala é melhor que Java? Sem dúvida nenhuma. Muito mais poderosa e flexível. Mas isso vem com o custo da complexidade que não me agrada muito. Se um dia eu tiver a oportunidade (= tempo + motivacao) para aprender Scala ficarei muito feliz, mas até lá o bom e velho Java resolve as coisas muito bem.
[/quote]
Detalhe que o akka é escrito em Scala, mas os caras quiseram dar suporte ao java, claro java esta em todo lugar, scala esta começando a ganhar mercado ainda!
Dessas linguagens para JVM a que estou mais estudando e programando é o Groovy.
Essa linguagem é bem próxima do Java, por isso, preferi partir pra ela agora ao invés de Scala, e o Groovy é uma linguagem de script, Scala se não me engano, não. Portanto, é possível de dentro de uma aplicação Java rodar rotinas Groovy numa boa, com Scala, até onde li e vi isso não é possível.
Quando eu tiver mais tempo passarei a dar uma olhada em Scala, mas por enquanto, Groovy mesmo.
[quote=Grinvon]Dessas linguagens para JVM a que estou mais estudando e programando é o Groovy.
Essa linguagem é bem próxima do Java, por isso, preferi partir pra ela agora ao invés de Scala, e o Groovy é uma linguagem de script, Scala se não me engano, não. Portanto, é possível de dentro de uma aplicação Java rodar rotinas Groovy numa boa, com Scala, até onde li e vi isso não é possível.
Quando eu tiver mais tempo passarei a dar uma olhada em Scala, mas por enquanto, Groovy mesmo.[/quote]
Scala é muito compativel com java:
Chamar codigos e libs java a partir do Scala = 100% tranquilo e compativel
Chamar codigo Scala a partir do java = deve-se tomar alguns cuidados na hora de contruir o código em Scala, senão a coisa fica complicada no lado do java, mas da pra chamar tambem.
Em suma, é compativel nas duas direçoes, mais traquilo a partir do Scala.
A interoperabilidade Java <-> Scala é boa mesmo, mas não é sem complicações em ambas direções.
Ao chamar libs java a partir de Scala tem que cuidar com os tipos de dados diferentes e conversões implicitas, principalmente de Collections, e as coisas que não existem em Scala, como interfaces.
No artigo tem uma seção sobre isso (Scala e Java são interoperáveis?)
Assim como Groovy, Scala pode rodar tanto interpretado como script quanto como compilado.
Uma curiosidade (sem flames, pls) sobre isso é que o criador de Groovy disse que provavelmente não o teria feito se conhecesse Scala antes: https://groups.google.com/forum/#!topic/groovy-sydney/7zyOZMNZYsY
ok, acabei de ler o artigo, ta bacana, apenas alguns pontos:
SBT, até onde sei é Simple Build Tool e não Scala Build Tool, apesar de ser usado para scala somente
Compilação incremental, pois não é exatamente o que o SBT faz!?.
Se tu abrir o SBT e der um ~compile, ele ira compilar tudo e ficar esperando arquivos serem alterados, quando algum for, ele compila ele novamente, junte o JRebel e ja era, fica muito tranquilo desenvolver web app com o Lift por exemplo.
Enquanto as IDE não chegam num nivel maior de maturidade, acho o SBT indispensavel para desenvolvimento Scala.
Atualmente faço o seguinte para meus desenvolvimentos iniciais e estudo do Lift, uso SBT+JRebel como build e Intellij como IDE, na verdade o Intellij é usado apenas como editor, com todas suas opçoes de autocomplete e tudo mais que um excelente IDE possui, mas o codigo esta sendo constantemente compilado pelo SBT+JRebel. Ou seja, é codificar no Intellij e dar F5 no navegador, muito facil e pratico!
Eu sei, Fred. Estava falando de outra coisa, da possibilidade de scripting com Scala.
Mas é isso, Scala parece-me ser bastante poderosa, com o tempo, irei dar uma olhada melhor nela.
Opa, mto obrigado pela correção, arrumei no artigo.
Eu tenho usado mais o maven que o SBT, mas as duas ferramentas são boas, mas com forças e fraquezas distintas.
O que quis dizer é que quanto mais “incremental” o compilador, melhor.
O ideal seria termos algo como o JDT do eclipse, que é capaz de compilar no nível de métodos, mas o SBT ~compile realmente quebra bem o galho.
Muito bom o artigo sobre Scala… esclareceu algumas dúvidas.
Meu único problema com a linguagem é que não consigo ver que tipo de aplicações ela pode ser utilizada, e com tantos adeptos da linguagem criticando-a, inclusive desenvolvedores famosos na comunidade (como o criador do franewirk Lift que recentemente abandonou o barco) eu me pergunto se vale a pena mesmo aprender essa linguagem.
[quote=Botocudo]Muito bom o artigo sobre Scala… esclareceu algumas dúvidas.
Meu único problema com a linguagem é que não consigo ver que tipo de aplicações ela pode ser utilizada, e com tantos adeptos da linguagem criticando-a, inclusive desenvolvedores famosos na comunidade (como o criador do franewirk Lift que recentemente abandonou o barco) eu me pergunto se vale a pena mesmo aprender essa linguagem.[/quote]
Qualquer tipo de aplicação que voce queira, web, desktop com Swing tem gente desenvolvendo, até para android tem uns que estão usando Scala pra desenvolver.
Sobre o criador do Lift, não, ele não abandonou o barco, ele continua muito ativo na comunidade do lift e ainda é commiter, ele apenas deixou de ser o “ditador”(nas palavras dele) do projeto e esta mais focado em seu novo projeto o http://visi.io/, mas o lift continua firme e forte com varios commiters. Ele esta sim chateado com algumas coisas, acho que a retrocompatibilidade dos binarios do Scala é o principal se nao me engano, e a falta de foco por parte dos criadores da linguagem em sanar estas questões.
Mas esta questão é complicada, como o jfaerman disse o artigo, para evoluir rapido tem que quebrar algumas coisas, eu até li em algum lugar não lembro quem falou, se deveriam considerar Scala antes da 2.10 como um prototipo para a versão final 2.10, algo assim