Mais 2 Linguagens para Inteligência Artificial: Julia e Scala

Em um artigo anterior, apresentamos 3 Linguagens para Inteligência Artificial: Java, Python, R. O ranking relativo destas linguagens não mudou: em janeiro de 2021, segundo o índice TIOBE, Java é a segunda linguagem de programação mais popular, tendo perdido no último ano a liderança para C; Python continua na terceira colocação neste último período; e R subiu da posição 18 para a 9. Este ranking não faz distinção por área de aplicação, mas na comunidade de Inteligência Artificial, duas outras linguagens têm recebido uma certa atenção recentemente: Julia, na posição 23 do ranking, e Scala, na posição 34. Este artigo vai tratar sobre estas duas linguagens.

Primeiro, entretanto, é preciso lembrar que dificilmente uma linguagem vai ser perfeita universalmente. Os objetivos do programador contam muito na hora de escolher a linguagem mais adequada. Seja por facilidade de implementação, seja por velocidade, seja pela quantidade de bibliotecas disponíveis, seja por popularidade – que geralmente vem junto com uma ampla comunidade de suporte -, ou outros fatores, algumas opções de linguagem se destacam na hora da consideração.

Vamos, então, às características destas duas linguagens, destacando onde elas superam as alternativas mais utilizadas.

Julia

JuliaLang Logo

Neste último ano, a linguagem Julia passou da posição 47 para 23 no ranking TIOBE, o que lhe coloca numa posição de destaque. Anunciada em 2012, ela foi desenvolvida desde o início tendo como objetivo alta performance. Apesar de ser adequada para tarefas genéricas de computação, ela realmente se sobressai na análise numérica e ciência computacional, tendo velocidade comparável à da linguagem C, que é considerada o padrão ouro neste quesito.

Para entregar velocidades superiores, o código escrito em Julia é compilado no regime just-in-time (JIT), ao invés de ser interpretado. Ela também oferece uma interface para uso iterativo, permitindo ver o resultado de cada linha de código em tempo real. A sintaxe é similar à do Python, mais próxima da linguagem natural, mas ainda assim expressiva e poderosa. Como foi desenvolvida pensando em cálculos matemáticos, sua sintaxe é amigável a esta disciplina, incluindo os símbolos e as operações mais comuns. Ela combina os benefícios da tipagem estática e dinâmica; é possível tanto especificar os tipos das variáveis como deixar para que a própria linguagem faça a definição na hora que uma nova variável tem um valor associado a ela. A Julia também suporta metaprogramação, ou seja, um programa em Julia é capa de gerar outros programas na mesma linguagem.

Em quesito de memória, a Julia faz esta administração automaticamente, sem ser necessária a intervenção do usuário. A paralelização das operações é outro ponto forte, sendo mais refinada que alguns de seus concorrentes. Ela já possui seu próprio administrador de pacotes, facilitando a criação e distribuição de bibliotecas próprias, e um debuggador completo, facilitando a inspeção de cada etapa da execução.

Uma vantagem interessante é que a linguagem Julia pode interagir diretamente com bibliotecas externas escritas em C, Fortran e Python, permitindo inclusive o compartilhamento de dados. No caso da interação com Python, a execução certamente perde em desempenho, mas ganha com a quantidade muito maior de bibliotecas disponíveis nesta segunda linguagem.

Por fim, a linguagem Julia já tem ferramentas para visualização de dados, operações em datasets multidimensionais e ferramentas robustas para Deep Learning.

Scala

Scala Programming Language

A linguagem Scala foi criada em 2003. Construída em cima de Java, ela foi desenvolvida justamente para oferecer algumas soluções para esta sua linguagem de origem, mantendo com ela uma grande facilidade de interação. Ela tem encontrado aplicação em áreas diversas como programação para a web e machine learning.

Dada sua relação íntima com Java, a linguagem Scala permite o acesso a este ambiente, que já se encontra em uso extensivo por empresas no setor comercial. Sua sintaxe também é fácil de entender, tornando mais fácil programar e ler código. Ela possui muitos atributos funcionais melhorados para comparação de texto, incorporando funções dentro de definições de classe.

Mas o melhor atributo da linguagem Scala é a capacidade de realizar computação paralela, seja concorrente ou sincronizada, com conjuntos de dados extensos. Aliado ao fato de que ela combina programação orientada por objetos com programação funcional, isso faz dela especialmente útil para o processamento de big data. Tanto que Scala é a linguagem principal por trás do framework mais popular para processamento distribuído de big data, o Apache Spark. A tipagem é estática, o que neste caso permite maior controle e melhor desempenho sobre as operações realizadas pelo código.

Tendo quase 20 anos de vida, a Scala já possui muitas bibliotecas para aumentar sua funcionalidade, e a comunidade já é considerável, oferecendo amplo suporte.


Neste artigo, apresentamos duas linguagens de programação que, ainda que não sejam tão populares quanto Python ou R, vêm ganhando importância na comunidade de machine learning, dada sua melhor adequação para algumas etapas específicas do processo de geração de inteligência artificial. A própria área tem uma grande maleabilidade, descobrindo ou criando novas necessidades de tempos em tempos, o que pode fazer com que estas, outras ou mesmo novas linguagens ganhem ainda mais destaque no futuro. O importante é sempre estar ciente de que existem outras opções disponíveis, e às vezes é muito mais prático aprender uma nova linguagem – ainda mais que, em algum nível, elas sempre mantêm algumas similaridades – do que tentar adequar um método àquelas onde somos proficientes.

Sobre o autor

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.