Pular para o conteúdo principal
InicioBlogJulia

A ascensão da Julia - vale a pena aprender em 2023?

Vale a pena aprender Julia em 2023? Para responder a essa pergunta, examinaremos a linguagem principal, seus recursos, estatísticas de crescimento e como ela se sai em relação aos concorrentes.
abr. de 2024  · 14 min leer

Quando se trata de linguagens de programação para ciência de dados, o Python reina supremo. E, embora o Python esteja ultrapassando o R na maioria das frentes, o R está mantendo seu lugar entre as 15 principais linguagens de programação no índice TIOBE de maio, que acompanha a popularidade das linguagens de programação. De fato, o crescimento percentual do uso do R foi muito maior do que o de linguagens titãs como JavaScript, Java, C e PHP no último ano.

Combinados, Python e R dominam o mundo dos dados, lançando uma sombra sobre linguagens semelhantes.

No entanto, um idioma se destacou do grupo e está se movendo lentamente em direção à luz. Essa linguagem é a Julia. Apesar de sua pouca idade, os entusiastas da Julia já a estão chamando de "linguagem do futuro" da ciência de dados e da IA. Para ver se eles estão certos, vamos dar uma olhada em algumas métricas de adoção da Julia, que foram extraídas do boletim anual da Julia sobre estatísticas de crescimento.

De acordo com o site oficial, o Julia foi baixado mais de 40 milhões de vezes, e foi baixado três vezes mais em 2021 do que nos últimos três anos juntos. A linguagem principal e seus pacotes registrados acumularam um total de 250 mil estrelas no Github, 13 vezes mais do que essa soma há seis anos. Somente o repositório do GitHub da Julia permanece firme com 39,1 mil estrelas, 4,9 mil bifurcações e 3,3 mil problemas.

O número de pacotes registrados para a Julia chegou a mais de 9.100 este ano, mais de dez vezes mais pacotes do que havia há seis anos. Quanto à sua classificação entre todos os outros idiomas, o índice TIOBE de abril de 2023 o coloca na 31ª posição, seis posições abaixo do ano passado.

O índice TIOBE real de Julia é de 0,30%, o que significa que, em todas as consultas relacionadas à linguagem de programação nos mecanismos de pesquisa, o nome de Julia apareceu 0,30% das vezes.

Esses números são impressionantes, considerando que a primeira versão estável do Julia foi lançada em 2018. Mas será que esses números significam que Julia se tornará tão popular quanto Python ou R em um futuro próximo? Vale a pena aprender agora? Antes de respondermos a essas perguntas, vamos dar uma olhada mais de perto no idioma em si.

O que é Julia?

Julia é uma linguagem de computação científica que foi anunciada pela primeira vez em 2012. Os quatro fundadores que a escreveram, Jeff Bezanson, Stefan Karpinski, Alan Edelman e Viral B. Shah, tinham diferentes formações, mas compartilhavam a apreciação do poder coletivo de todas as outras linguagens de programação.

Para que a Julia se tornasse a melhor das linguagens mais poderosas, os fundadores definiram uma visão específica para a linguagem. Em uma postagem de blog explicando por que criaram o Julia, eles afirmam que o Julia deve ser:

  • Código aberto
  • Tão rápido quanto C
  • Tão dinâmico quanto o Ruby
  • Homoicônico, ou seja, tratar o código como dados
  • Semelhante ao Matlab na notação matemática
  • Lisp-like em macros
  • Tão geral quanto Python
  • Tão amigável às estatísticas quanto o R
  • Tão natural quanto o Perl para processamento de strings
  • Tão avançado quanto o Matlab para álgebra linear
  • Distribuição semelhante à do Hadoop

Essas ambições fora do comum eram, bem, ambiciosas. No entanto, quando o Julia 1.0.0 foi lançado em 2018, eles já haviam cumprido 90% das promessas que haviam feito seis anos antes.

Julia se destaca em certos aspectos da programação que nenhuma linguagem comum faz. Por exemplo, o Python sacrifica a velocidade para ser flexível e tipado dinamicamente, enquanto linguagens como C, C++ e Java são estritamente estáticas e rígidas para serem rápidas no tempo de execução. Quanto à Julia, o idioma é lido como o inglês, é totalmente dinâmico e ainda é um dos idiomas mais rápidos da história.

Esses benefícios já levaram a aplicativos fascinantes para a linguagem. O Instituto Nacional de Pesquisas Espaciais (INPE) usa o Julia para planejar missões espaciais, por exemplo, enquanto a Administração Federal de Aviação (FAA) está usando a linguagem para desenvolver um sistema de prevenção de colisões de última geração.

Equipes de dados usando Julia

Não se trata apenas de engenharia aeroespacial - as empresas farmacêuticas também estão desenvolvendo com a Julia. A Pfizer acelerou 175 vezes a simulação de tratamentos para insuficiência cardíaca usando modelos executados no Julia. A AstraZeneca usa redes neurais bayesianas com os pacotes Flux.jl e Turing.jl Julia para prever a toxicidade de medicamentos. Você pode saber mais sobre o uso do Julia em um artigo separado. 

O Julia está sendo ensinado em algumas das instituições mais prestigiadas do mundo, como MIT, Stanford, Cornell, UC Berkeley, Brown, Tokyo Metropolitan University, entre outras. Aqui estão algumas das empresas reconhecidas mundialmente que estão se desenvolvendo no Julia.

  • Intel
  • Disney
  • Amazon
  • Capital One
  • KPMG
  • Google
  • Microsoft
  • NASA
  • IBM

lista de empresas que usam o julia

Empresas que usam o Julia atualmente

O que torna a Julia única?

Há muitas qualidades do Julia que o tornam uma linguagem única. Aqui está uma lista de recursos não exaustivos que tornam o aprendizado da Julia atraente. 

1. Velocidade

Falei bastante sobre sua velocidade surpreendente. Mas a que velocidade estamos realmente falando?

Os pesquisadores do Apache Point Observatory começaram a fazer imagens de todos os objetos visíveis em um raio de 35% dos céus em 1998. Eles chamaram o projeto de Celeste e adquiriram um conjunto de dados de 500 milhões de estrelas e galáxias. Durante 16 anos, a catalogação dessas imagens foi uma tarefa tediosa e trabalhosa.

Entre na Julia. 

Em 2014, uma equipe de cientistas e programadores agregou 178 TB de dados de imagens e produziu estimativas pontuais de 188 milhões de estrelas e galáxias em apenas 14,6 minutos.

Essa façanha científica e de programação foi possível graças à execução do Julia no supercomputador Cori, que atingiu um desempenho máximo de 1,54 petaflops (10¹⁵ operações por segundo) em 1,3 milhão de threads em 9300 nós. Assim, Julia se tornou a quarta linguagem a atingir desempenho de petaflops, depois de C, C++ e Fortran. 

2. Syntax

Outra forma de destaque do Julia é sua sintaxe, que representa a linguagem de uma forma que antes era considerada impossível. Antes do lançamento do Julia, a computação científica era feita principalmente em outras linguagens de digitação dinâmica, como Python ou R. Como os cálculos eram feitos por físicos, biólogos e especialistas em finanças que não eram desenvolvedores experientes, esses especialistas preferiam uma sintaxe mais simples, mesmo que isso custasse a perda de velocidade de computação.

Julia também é tipada dinamicamente, o que a torna muito simples de aprender e escrever, mas, por ser uma linguagem compilada, consegue ser tão rápida quanto linguagens tipadas estaticamente, como C ou Fortran.

3. Despacho múltiplo

Outra vantagem, embora não seja nova na programação, é o envio múltiplo. Sem ser muito técnico, o envio múltiplo refere-se à capacidade de uma função de se comportar de forma diferente com base nos tipos de seus argumentos. Aqui está um exemplo de como isso pode ser útil:

function _add_str(str1, str2)
   str1 * str2
end

function _add_int(int1, int2)
   int1 + int2
end

add(item1::String, item2::String) = _add_str(item1, item2)
add(item1::Int64, item2::Int64) = _add_int(item1, item2)
[OUT]: add (generic function with 2 methods)
add(4, 5)
[OUT]: 9
add("Julia ", "is awesome!")
[OUT]: "Julia is awesome!"

Se você notou, acabei de implementar o operador + plus no Python, que se comporta de forma diferente conforme os tipos de entrada mudam. A beleza do exemplo acima é que você pode ativar o recurso de envio múltiplo do Julia em praticamente qualquer função que desejar e fazer com que ela se comporte de forma diferente com diferentes entradas.

Essas são algumas das coisas maravilhosas sobre a Julia. Agora, vamos compará-lo com o Python.

Julia vs. Python, uma comparação detalhada

Nesta seção, tentarei descrever as diferenças entre Julia e Python. Embora as comparações sejam feitas principalmente entre Julia e Python, elas também se aplicam ao R, pois o Python tem desempenho superior ou semelhante ao do R em muitos desses aspectos.

1. Velocidade

Vamos dar uma olhada na diferença de velocidade primeiro, pois os amantes de Julia sempre se gabam da velocidade de seu idioma. Mediremos o tempo necessário para encontrar a derivada de uma função no pacote Flux.jl do Julia em comparação com o GradientTape do Tensorflow no Python.

Começaremos com o Tensorflow:

import time

import tensorflow as tf
start = time.time()
x = tf.Variable(5.0)

with tf.GradientTape() as tape:
   y = 3 * x ** 3 + 4 * x ** 2 + 6 * x + 5

   # dy_dx = 9x^2 + 8x + 6
   dy_dx = tape.gradient(y, x)

print(time.time() - start)
[OUT]: 0.003016233444213867

São necessários cerca de 0,003 segundos para encontrar a derivada de x. Vamos ver a mesma operação em Julia:

Ambos os exemplos foram executados em uma máquina local (processador AMD Ryzen 9 3900x de 12 núcleos, NVIDIA RTX 2060 SUPER 8GB VRAM)

Na primeira vez que executamos o gradiente, o Julia o compila em aproximadamente 0,002 segundos, o que já é mais rápido que o Tensorflow. Na próxima vez que o executarmos, a avaliação será aproximadamente 450 vezes mais rápida. Teste de velocidade - verifique!

2. Syntax

Agora, vamos falar sobre a sintaxe. Muitos afirmam que o código Julia é mais parecido com o inglês; ele é mais expressivo e mais limpo do que o Python, especialmente para computação científica. Vamos ver isso em ação. 

O primeiro exemplo é a escrita de expressões matemáticas - você pode escrever polinômios como no MATLAB:

x = 5
3x^2 + 5x + 4
[OUT]: 104
(x + 5)x
[OUT]: 50

Há também expressões de curto-circuito que simplificam bastante as condicionais, a partir disso:

x = 73; y = 37

if x > y
   println("$x is higher than $y")
end
[OUT]: 73 is higher than 37

Para esse exemplo simplificado:

x > y && println("$x is higher than $y")
[OUT]: 73 is higher than 37

Há também outras diferenças úteis entre o Python nativo e o Julia nativo. Por exemplo, as matrizes no Julia são, por padrão, consideradas vetores e matrizes, e qualquer função executada nelas será vetorizada, eliminando a necessidade de loops desnecessários. Apesar disso, Python ainda é uma das linguagens de programação mais fáceis de aprender para a ciência de dados. 

3. Popularidade e ecossistema de pacotes

No entanto, nem todos estão prontos para embarcar no trem da Julia. Falei sobre as estatísticas de crescimento da Julia na introdução. Por si só, eles parecem bastante impressionantes, mas quando comparados com os do Python, ainda há um longo caminho a percorrer.

O Python está no topo da classificação do TIOBE com um índice de 12,74%, em comparação com os 0,64% do Julia. Existem pacotes Python completos, como o TensorFlow ou o PyTorch, que têm muito mais força do que o Julia como linguagem.

O ecossistema de ciência de dados e aprendizado de máquina do Python é mais extenso e maduro. Enquanto Julia tem mais de 7 mil pacotes registrados, Python tem mais de 110 mil. Esses números significam que Julia tem um longo caminho para se tornar a melhor linguagem de uso geral, embora possa ter vantagens distintas sobre o Python nativo em muitos aspectos.

Embora o Python seja menor do que ele em tamanho, uma vantagem para os programadores do Julia é que eles têm uma oportunidade muito maior de aprimorar a linguagem e deixar sua marca nas muitas disciplinas em crescimento no ecossistema do Julia. Além disso, para começar a contribuir com o Julia, não é necessário ter anos de experiência ou dominar vários idiomas. As bibliotecas escritas em Julia são escritas exclusivamente em Julia, sem nenhuma contribuição de outras linguagens. Aqui está um exemplo do repositório Flux.jl:

flux.jl github

Em comparação, você precisa dominar não apenas o Python, mas também outras linguagens, como C++, C, GO, etc., e como todas elas interagem para começar a entender o código de pacotes críticos do Python.

tensorflow e keras github

Se você quiser chamar outras linguagens como Python no Julia, pacotes como Pycall facilitam isso. Aqui está o pacote em ação:

using Pkg

Pkg.add(PackageSpec(name="PyCall", rev="master"))
Pkg.build("PyCall")
using PyCall

plt = pyimport("matplotlib.pyplot")

x = range(0; stop=2*pi, length=1000)
y = sin.(3*x + 4*cos.(2*x));

plt.plot(x, y, color="red", linewidth=2.0, linestyle="--")
plt.show()

Há pacotes Julia semelhantes disponíveis para chamar outras linguagens, como RCall, MATLAB.jl, entre outros.

4. Recursos de aprendizado

Infelizmente, embora o Python e o R tenham uma grande quantidade de materiais didáticos fáceis de usar para iniciantes, há uma escassez de recursos semelhantes para aprender Julia. A falta de guias, cursos e livros gratuitos e pagos sobre Julia é um dos motivos pelos quais ela ainda não é adotada em massa, pois os desenvolvedores detestam aprender sobre uma nova linguagem lendo os documentos.

Como o número de recursos educacionais sobre um determinado tópico geralmente está relacionado à sua demanda de pesquisa, podemos consultar o Google Trends para obter dados sobre isso:

popularidade dos recursos de aprendizagem julia vs python

Esse gráfico mostra que a popularidade do Python é significativamente maior do que a do Julia.

Há também um suporte muito maior da comunidade para Python e R do que para Julia. Podemos confirmar isso observando o número de perguntas marcadas no StackOverflow para cada idioma:

exemplos de perguntas do stackoverflow julia

exemplos de perguntas do stackoverflow r

exemplos de perguntas do stackoverflow python

O Python está definitivamente à frente de ambas as linguagens, mas a acessibilidade dos materiais de treinamento e o suporte da comunidade para Julia estão crescendo junto com sua adoção. 

Vale a pena aprender com a Julia em 2023?

Então, chegou a hora da pergunta de um milhão de dólares: vale a pena aprender Julia em 2023?

Pesando os prós e os contras do idioma, a resposta seria "Sim!". Seria apenas uma questão de quando.

A maioria dos cientistas de dados diria que você não deve aprender Julia nos estágios iniciais de sua jornada de ciência de dados e aprendizado de máquina. Quase 100% de todas as funções de dados listam Python ou R como requisitos, e optar por aprender Julia em vez deles no início de sua carreira pode ser um erro grave. Hoje em dia, as habilidades e ferramentas necessárias para um trabalho com dados já são tão vastas que seria necessário um grande investimento de tempo para se tornar um ativo em uma função. Distrair-se com a Julia pode afastá-lo de um trabalho remunerado e atrasar sua carreira.

Um ótimo momento para começar a aprender Julia é quando você já domina o R ou o Python e consegue resolver problemas de negócios com suas bibliotecas. A Julia seria um ótimo complemento para sua caixa de ferramentas nesse estágio, pois você estaria bem equipado para utilizar todas as vantagens e poderes que a linguagem pode oferecer.

Entretanto, alguns especialistas têm uma visão completamente radical sobre o aprendizado da Julia. Como Ari Joury afirma em seu post, a Julia pode ser seu bilhete de ouro para o futuro se você aprender cedo e aprender bem. O autor cita o exemplo da própria IA, pois era um campo de nicho há 30-40 anos, mas as pessoas que a adotaram nos anos 90 agora são muito procuradas. 

O tempo dirá se o mesmo acontecerá com Julia, pois Julia pode ser a única coisa que você pode colocar em seu currículo para realmente se destacar entre as pitonisas. A decisão é sua. Você pode saber mais sobre aprendizado de máquina com o Julia e sobre como passar do MATLAB para o Julia em nossos artigos separados. 

Temas
Relacionado

blog

Como aprender Python do zero em 2024: um guia especializado

Descubra como aprender Python, suas aplicações e a demanda por competências em Python. Comece sua jornada em Python hoje mesmo ​com nosso guia detalhado.
Matt Crabtree's photo

Matt Crabtree

19 min

blog

Mais de 60 projetos Python para todos os níveis de conhecimento

60 ideias de projetos de ciência de dados que os cientistas de dados podem usar para criar um portfólio sólido, independentemente de sua especialização.
Bekhruz Tuychiev's photo

Bekhruz Tuychiev

16 min

tutorial

Como comentar um bloco de código em Python

O uso de comentários é fundamental para trabalhar efetivamente com Python. Neste breve tutorial, aprenda a comentar um bloco de código em Python.
Adel Nehme's photo

Adel Nehme

3 min

tutorial

Como aparar uma cadeia de caracteres em Python: Três métodos diferentes

Aprenda os fundamentos do corte de caracteres à esquerda e à direita de uma string em Python.
Adel Nehme's photo

Adel Nehme

5 min

tutorial

Declaração de caso de troca do Python: Um guia para iniciantes

Explore o match-case do Python: um guia sobre sua sintaxe, aplicativos em ciência de dados, ML e uma análise comparativa com o switch-case tradicional.
Matt Crabtree's photo

Matt Crabtree

5 min

tutorial

Tutorial de Python

Em Python, tudo é objeto. Números, cadeias de caracteres (strings), DataFrames, e até mesmo funções são objetos. Especificamente, qualquer coisa que você usa no Python tem uma classe, um modelo associado por trás.
DataCamp Team's photo

DataCamp Team

3 min

See MoreSee More