Na segunda situação, a história por trás muda um pouco. Você é uma pessoa que não só sabe programar, como também, provavelmente, vive disso. Você tem familiaridade com uma ou mais linguagens de programação e deve transitar bem entre elas. Você ouviu falar sobre “ciência de dados” e quer surfar essa onda. Você começou a aprender a fazer coisas em numpy
, a manipular DataFrames
em pandas
e como plotar em matplotlib
. Ou talvez você tenha aprendido tudo isso em R usando tidyverse e tibbles
, data.frames
, %>%
(pipes) e geom_*
…
Então, por alguém ou por algum lugar, você ouviu falar dessa nova linguagem chamada “Julia.” Por que se importar? Você já domina Python ou R e consegue fazer tudo que precisa. Bom, vamos analisar alguns possíveis cenários.
Alguma vez você já fez em Python ou R:
Algo que não tenha conseguido alcançar a performance necessária? Então, em Julia, minutos no Python ou R se transformam em segundos3. Nós separamos o Section 2.4 para exemplificar casos de sucesso em Julia tanto na academia quanto no mercado.
Tentou algo diferente das convenções numpy
/dplyr
e descobriu que o código estava lento e provavelmente precisaria de magia4 para torná-lo mais rápido? Em Julia, você pode fazer seu próprio código customizado sem perder desempenho.
Precisou debugar um código e de repente se viu lendo código fonte em Fortran ou C/C++, sem ter ideia alguma do que fazer? Em Julia, você lê apenas códigos de Julia, não é preciso programar em outra linguagem para tornar a original mais rápida. Isso é chamado o “problema das duas linguagens” (see Section 2.3.2). É também o caso quando “você tem uma ideia interessante e tenta contribuir com um pacote open source, mas desiste porque quase tudo não está nem em Python, nem em R, mas em C/C++ ou Fortran”5.
Quis usar uma estrutura de dados definida em outro pacote e descobriu que não ia funcionar e que você precisaria construir uma interface6. Julia permite que usuários compartilhem e reutilizem códigos de diferentes pacotes com facilidade. A maior parte dos tipos e funções definidas pelos usuários de Julia, funcionam de imediato7 e alguns usuários ficam maravilhados ao descobrir como seus pacotes estão sendo usados por outras bibliotecas, das mais diversas formas, algo que nunca poderiam ter imaginado. Temos alguns exemplos em Section 2.3.3.
Precisou de uma melhor gestão de projetos, com controle rígido de versões e dependências, de fácil usabilidade e replicável? Julia tem uma solução de gestão de projetos incrível e um ótimo gerenciador de pacotes. Diferentemente dos gerenciadores de pacotes tradicionais, que instalam e gerenciam um único conjunto global de pacotes, o gerenciador de pacotes de Julia é projetado em torno de “ambientes”: conjuntos independentes de pacotes que podem ser locais para um projeto individual ou compartilhados entre projetos. Cada projeto mantém, independentemente, seu próprio conjunto de versões de pacotes.
Se nós chamamos a sua atenção expondo situações familiares ou mesmo plausíveis, talvez você se interesse em aprender um pouco mais sobre Julia.
Vamos começar!
3. e até em milésimos de segundo.↩︎
4. numba
, ou mesmo o Rcpp
ou o cython
?↩︎
5. dê uma olhada em algumas bibliotecas de aprendizado profundo no GitHub e você descobrirá que Python é apenas 25%-33% do código fonte delas.↩︎
6. esse é um problema do ecossistema Python e, ainda que o R não sofra tanto com isso, também não é tão eficaz.↩︎
7. ou com pouquíssimo esforço.↩︎