Tem havido ultimamente, muita discussão sobre linguagens de programação utilizadas em Data Science. Python e R são as mais populares entre os Cientistas de Dados, enquanto o Java tem sido a linguagem usada para aplicativos e desenvolvimento sobre Hadoop. Mas existem outras opções que merecem ser consideradas. Uma destas opções é a linguagem Scala (Scalable Language), que vem crescendo recentemente e apesar de algumas limitações, é uma boa linguagem para criar uma plataforma de computação estatística eficiente e escalável. Com o crescimento de frameworks de Big Data, como Apache Spark e Apache Kafka, estamos vendo a adoção da linguagem Scala ganhando espaço entre os projetos de Big Data e Ciência de Dados. De certa forma, a escolha de uma linguagem de programação para Data Science é bastante pessoal e existem vantagens e desvantagens em todas elas (clique aqui para ler o post com a comparação entre R e Python). Mas vamos falar um pouco sobre a Scala (página oficial aqui).
Scala é uma linguagem de programação para aplicações de software em geral, que combina os paradigmas de programação orientada a objetos e funcional, utilizando uma sintaxe concisa que é totalmente compatível com Java e é executado na JVM (máquina virtual Java). A linguagem foi originalmente desenvolvida por Martin Odersky cerca de 15 anos atrás, muito antes de surgir o conceito de Big Data. Os defensores da linguagem costumam citar a sua velocidade e expressividade como principais vantagens sobre outras linguagens de uso geral. Isso permite que programas escritos em Scala sejam concisos e, portanto, menor em tamanho do que outras linguagens de programação. Muitas das decisões de design do Scala foram inspiradas pelas críticas às deficiências do Java. A linguagem tem sido fortemente adotada pelas empresas de mídia social, tais como Foursquare e Twitter, que em 2009 migrou de Ruby para Scala na maioria de seus sistemas de back-end. Vale mencionar ainda, que empresas como LinkedIn, The Guardian e até mesmo a Sony, usam Scala em sua infraestrutura.
Um dos grandes atrativos da linguagem, que é percebido logo de cara por programadores que já tenham experiência em outras linguagens orientadas a objetos, é a quantidade de código gerado. O tamanho de código é normalmente reduzido pela metade ou a um terço em relação a uma aplicação Java equivalente.
Mas uma das grandes vantagens em utilizar Scala em projetos de Big Data (que envolvam o Spark), é a possibilidade de trabalhar todas as camadas na mesma linguagem. Isso traz diversas vantagens, tais como: maior velocidade de processamento, suporte para novas funcionalidades de forma instantânea (Spark é escrito é Scala) e melhor compreensão do funcionamento do Spark, permitindo extrair o máximo da ferramenta.
Scala tem uma grande variedade de bibliotecas. Abaixo, algumas das principais bibliotecas Scala para uso em análise de dados:
Saddle – biblioteca de manipulação de dados de alta performance para Scala (similar ao Pandas para Python), que permite a utilização de estrutura de dados dimensionais.
MLlib – framework de Machine Learning.
Apache Zeppelin – Scala e Spark Notebook (similar ao iPython Notebook).
Spire – biblioteca numérica para Scala, criada para ser genérica, rápida e precisa.
Algebird – álgebra abstrata. Esta biblioteca tem como objetivo a construção de sistemas de agregação.
Axle – biblioteca open source para computação científica.
Chalk – biblioteca para processamento de linguagem natural.
Breeze – biblioteca para processamento numérico e álgebra linear.
Factorie – toolkit para modelagem probabilística.
Squants – API para medidas de unidade e análise dimensional.
PredictionIO – framework open source de Machine Learning, para desenvolvedores e Cientistas de Dados.
Figaro – linguagem de programação probabilística.
Scalding – biblioteca para especificação de jobs Hadoop e MapReduce.
Epic – framework para análise preditiva.
Puck – processador de linguagem natural.
ScalaNLP – suíte de bibliotecas de Machine Learning que inclui o Breeze, Epic e Puck.
Caso tenha interesse em conhecer um pouco mais a Scala ou mesmo experimentar, você pode fazer o download do IDE aqui.
A linguagem de programação Scala permite criar uma base sólida para construir uma plataforma de computação estatística escalável e eficiente. Embora R e Python sejam as linguagens mais utilizadas em Ciência de Dados, vale a pena conhecer um pouco mais sobre outras opções para o desenvolvimento de algoritmos. Espera-se que no longo prazo, Scala possa se tornar uma estrutura completa para estatísticas e Data Science.
David Matos
Muito bom esse conteúdo tava procurando algo da linguagem scala.