Mais diversão com Scala

[Novo endereço: leandrosilva.com.br.]

Uma das coisas que mais tenho estudado ultimamente é a integração entre linguagens de programação – principalmente com Java -, de maneira a extrair o melhor de cada uma delas, o mais transparentemente possível. Scala, tal como JRuby, tem me proporcionado isso de maneira fantástica.

Scala tem total integração com Java, uma de suas plataforma host (a outra é o Microsoft .Net Framework). Assim, pode-se usar classes e interfaces de bibliotecas Java de forma natural. Vejamos um exemplo bem simples:


import java.util.{Date, Locale}
import java.text.SimpleDateFormat

object ExibeDataFormatada {
  def main(args: Array[String]) {
    val now = new Date
    val formatter = new SimpleDateFormat(
      "EEEE, dd 'de' MMMM 'de' yyyy")

    // método com apenas um parâmetro podem ser invocados
    // com sintaxe infix
    println(formatter format now)
  }
}

Este código, certamente, é bem familiar para qualquer programador Java. O que ele faz é:

1. Importar as classes Date e Locale do pacote java.util, bem como a classe SimpleDateFormat do pacote java.text;
2. Criar um objeto ExibeDataFormatada, que é um pequeno aplicativo Scala, e definir um método main, dentro do qual o aplicativo executará;
3. Criar dois val‘s (valores imutáveis): now para a data atual do sistema, e formatter para formatar nossa data atual;
4. Invocar o método format do objeto formatter, passando-lhe como parâmetro now, que é a data atual.

(Se quiser rodar esse código, veja este post.)

Você deve ter notado que Scala trabalha com classes Java de maneira totalmente natural. Na verdade, muitas classes Scala fazem wrap de classes Java e as melhoram – como as classes com prefixo Rich.

Este foi um exemplo muito simples mesmo, mas creio que já deu para você ver que coisas muito sofisticadas também podem ser feitas com a mesma naturalidade.

Acredito que a integração entre linhagens é o que pode alavancar muitos projetos de requisitos complexos e totalmente heterogêneos. Porque sempre há algo que se pode fazer melhor e mais barato em uma linguagem do que em outra. Só é preciso tomar cuidado para não acabar criando uma Torre de Babel.

E você, o que pensa disso?

2 Respostas para “Mais diversão com Scala

  1. Gosto de idéia da integração das linguagens,cada uma se encaixando num contexto que mais lhe convier o que possibilita uma solução mais ótima.
    Mas aí vem a pergunta : não vai ficar mais complexo e heterogêneo o sistema ?Como gerir isso ? Não vai sair mais caro ?

  2. Sim, é claro que existe a possibilidade de virar Torre de Babel, uma bagunça de linguagens pra lá e pra cá tão grande que ninguém se entenda no projeto. Mas isso se resolve com bons programadores, maduros, que sabem fazer as escolhas certas, nas horas certas.

    Há linguagens que são melhores em algumas coisas, outras, em outras coisas. Fazendo uma analogia: “Martelo não é bom pra tudo, às vezes é preciso usar uma marreta, e outras vezes, uma britadeira”.

    Se você tem bons programadores em seu time, que conhecem bem, por exemplo, Java, Ruby e Scala, e você der a eles liberdade pra usar cada uma delas nos cenários e situações onde elas melhor se aplicam, você vai ter ganhos, e não prejuizos.

    Agora, se você tem um programador que só conhece Java, ele vai tentar resolver tudo com Java. E como nem tudo se resolve bem com Java, muito provavelmente, seu programador vai gastar mais tempo e, consequentemente, mais dinheiro de seu projeto.

    Isso sem falar, nos ótimos frameworks escritos em Java que podem, por exemplo, serem usados em JRuby, ou Scala, ou Groovy, ou Jython, ou…

    Em linhas [bem] gerais, é isso que penso sobre programação poliglota. Tem sido uma área de estudo pra mim, e pretendo ainda postar mais sobre o assunto.🙂

    Abraço!

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s