Como anda a linguagem Scala?

Como anda a linguagem Scala?
alberto.souza
alberto.souza

Compartilhe

Sempre chega o momento de nos perguntarmos se uma linguagem que surgiu no mercado está no ponto certo para ser usada em nossos projetos reais. Aconteceu com todas, algumas já faz bastante tempo que nem nos lembramos mais dessa fase, como Java e até mesmo Ruby, linguagem que abrimos cursos presenciais bem antes de ter estourado de verdade. Óbvio que não estou querendo comprar o grau de maturidade da linguagem Scala com Java, mas já estamos num momento que ela demonstra força suficiente para não estar simplesmente de passagem.

icy-mountain

Primeiro ponto importante, existe uma empresa com interesses financeiros por trás da linguagem, a TypeSafe. Isso a primeira vista pode parecer meio ruim, uma opinião compartilhada por vários quando a Oracle assumiu os trabalhos em cima do Java. Só que por outro lado, o fato de querer ganhar em cima da tecnologia faz com que eles o tempo todo estejam se movimentando para melhorá-la. É o que está acontecendo com o Scala. A linguagem já está na versão 2.10 com várias features novas e a empresa mantém cursos sobre a linguagem pelo mundo todo. Outro detalhe bem importante é que eles perceberam que o público alvo é dividido entre os que querem fazer bibliotecas e os que querem apenas construir mais uma aplicação, então agora temos uma distinção bem forte entre API's para desenvolvedores de libs e  desenvolvedores de aplicações comerciais. Apenas para exemplificar, caso queira usar a parte de macros da linguagem, você é obrigado a dar um import para liberar. Abaixo segue um exemplo:

import scala.language.experimental.macros

Outra reclamação constante de quem começou com a linguagem um pouco antes era o fraco suporte das IDE's. Pois bem, eles vem fazendo um esforço constante para a melhoria e hoje temos o plugin para eclipse já na versão 3.0.x e já dando suporte a última versão da IDE, chamada de Kepler. O ambiente está muito melhor. Além de conseguirem dar suporte ao básico de uma boa IDE, o trabalho em cima do processo de compilação, outra reclamação constante, vem sendo atacado o tempo todo e o desenvolvimento tem sido bem menos dolorido. O build do projeto inteiro ainda é meio complicado, mas a compilação incremental melhorou bastante. Além disso ainda tem a JetBrains com a sua IDE IntelliJ dando um suporte muito bom também. Muita gente por exmeplo, optou pelo IntelliJ por conta de ter um suporte melhor que o Eclipse no inicio do desenvolvimento mas hoje, está bem competitivo e a gente aqui na Caelum vem utilizando o Eclipse nos projetos.

Os projetos escritos em cima da linguagem também são mutio importantes. Martin Odersky, o criador da linguagem e presidente da TypeSafe acredita que a linguagem não vai para frente sem um framework MVC forte. Baseado nisso,  ele chamou os mantenedores do Play, framework fortemente baseado nas ideias do Rails, para trabalhar na TypeSafe e reescrever todo o core do framework em Scala. Então hoje, a linguagem tem um framework com bastante destaque no mercado e com uma proposta diferente da maioria dos concorrentes do mundo Java. Além disso, ainda existe o Akka, um projeto fortemente recomendado para quem precisa fazer um sistema completamente baseado em troca de mensagens. Ele implementa muitas das ideias de concorrência vindas do Erlang e utiliza o sistema de atores para realizar essa implementação. Por sinal, o blog deles é muito interessante. Ter ferramentas como essas fazem bastante diferença, porque ninguém fica usando Java porque ela é uma linguagem maravilhosa, cheia de alternativas e sim porque o ecossistema ao redor da linguagem faz muita diferença. Mesma coisa vale para o Ruby, onde temos um caso em que o framework chega a ser mais famoso que a própria linguagem, não é a toa que vira e mexe vemos a frase: "Estou programando em Rails".

Um outro ponto, que é o lado forte e fraco do Java ao mesmo tempo, é o fluxo para aprovar melhorias na plataforma. As especificações são alvos de reclamações por atrasarem a evolução da linguagem, mas por outro lado garantem que não vai entrar qualquer coisa. É realmente uma discussão complicada. No Scala existe uma ideia parecida com a de especificações, porém com uma burocracia muito menor. As SIP's(Scala Improvement Process) servem basicamente como centralizadoras de ideias para  a linguagem, qualquer um pode submeter. A aprovação delas ainda está altamente ligada a TypeSafe. E o fato de ter essa burocracia mínima não faz com que a linguagem pare de evoluir, todos novos releases tiveram features inovadoras.

Os eventos também são uma boa maneira de espalhar a linguagem pelo mundo. E a linguagem já conta com o dela, o ScalaDays, que aconteceu no início de junho desse ano. E já  vem acontecendo existe a alguns anos. Mas a linguagem também está presente em muitos outros eventos do mundo, um exemplo é o JavaOne. Para ver um pouco mais siga este link. Além de divulgar a linguagem, é importante ter um bom material de apoio para os que estão começando. A lista de discussão da linguagem é bastante ativa e a TypeSafe escreveu um post compilando várias indicações de livros. Além disso, em São Paulo já tem o grupo de usuários da linguagem, o Scaladores. Ajuda não está faltando.

Uma última questão é onde usar a linguagem. Sempre é uma decisão difícil, afinal de contas caso a escolha seja ruim, provavelmente sua empresa vai sair perdendo dinheiro. A minha dica é: comece pequeno. Por exemplo, o jornal inglês The Guardian, começou migrando a parte de testes, como descrito aqui. O que para eles funcionou muito bem. Uma outra opção é pegar uma parte pequena do sistema que precise de alguma feature que já está bem evoluída no Scala. Por exemplo, você precisa trabalhar com tarefas assíncronas, paralelismo ou fazer muito uso de coleções numa regra qualquer. Isso pode ser feito de maneira mais simples usando o Scala do que o Java. Mesmo com a chegada do Java 8, vai ter muita funcionalidade que ainda não vai ser tão fácil de ser implementada. Caso a sua aplicação seja facilmente atendida pelo Java, não pense 2x, use Java e resolva. A linguagem é uma ferramenta para o seu dia-a-dia, a ideia é sempre tentar utiliza-la no melhor cenário.

Veja outros artigos sobre Inovação & Gestão