Vous êtes sur la page 1sur 15

21/06/2019 10 razões porque você deve aprender Julia - boa audiência

10 razões porque você deve aprender


Julia
Gabriel Gauci Maistre Segue
27 de setembro de 2018 · 12 minutos de leitura

Mesmo que tenha uma indexação baseada em 1

O que é Julia?
Julia é uma linguagem razoavelmente moderna, desenvolvida em 2009
por Jeff Bezanson, Stefan Karpinski , Viral B. Shah e Alan
Edelman.quem teve a ideia de projetar uma linguagem livre, de alto
nível e rápida. A linguagem foi oficialmente revelada ao mundo em
2012, quando a equipe lançou um site com uma postagem no blog
explicando a missão do idioma. Quando perguntado por que eles
nomearam a língua "Julia", Alan Edelman rejeitou o pensamento de
que foi nomeado após o fractal, mas alegou que só surgiu em uma
conversa aleatória anos atrás, quando alguém sugeriu arbitrariamente
que "Julia" seria uma boa nome para uma linguagem de programação.
Quando perguntado por que eles criaram Julia, eles alegaram que eles
vieram de diferentes origens de linguagem de programação, e amavam
todos eles. Mas eles eram gananciosos e queriam mais.

Queremos uma linguagem que seja de código aberto, com uma licença
liberal. Queremos a velocidade do C com o dinamismo do Ruby. Queremos
uma linguagem que seja homoicônica, com macros verdadeiras como Lisp,
mas com uma notação matemática óbvia e familiar como a do Matlab.
Queremos algo tão utilizável para programação geral como o Python, tão

https://blog.goodaudience.com/10-reasons-why-you-should-learn-julia-d786ac29c6ca 1/15
21/06/2019 10 razões porque você deve aprender Julia - boa audiência

fácil para estatísticas quanto o R, tão natural para o processamento de


strings como o Perl, tão poderoso para a álgebra linear quanto o Matlab,
tão bom em colar programas como o shell. Algo que é simples de aprender,
mas mantém os hackers mais sérios felizes. Queremos isso interativo e
queremos compilá-lo. - julialang.org

Nós realmente precisamos de outro


idioma?
Bem, sim. Porque você pergunta?

As linguagens de programação são usadas para resolver vários


problemas do mundo real, mas não há uma linguagem que possa
resolvê-las todas, exigindo abordagens específicas. Alguns são
eficientes e têm mais vantagens para usar sobre os outros. Se dermos
uma olhada em C, por exemplo, C foi a linguagem mais poderosa que
havia. Todos pensavam que C seria a linguagem para acabar com todas
as outras linguagens, mas então surgiu a necessidade de uma
linguagem que pudesse ser usada para representar problemas do
mundo real através de conceitos de Programação Orientada a Objetos
(Object Oriented Programming - OOP), que é como C ++ nasceu.
Então, por que Java foi inventado então? As pessoas precisavam de algo
tão poderoso quanto o C ++, mas um pouco mais fácil de usar.

Tabela periódica de linguagens de programação

Nunca haverá a linguagem perfeita. As linguagens de programação


nunca serão um produto acabado, à medida que o mundo evolui e as

https://blog.goodaudience.com/10-reasons-why-you-should-learn-julia-d786ac29c6ca 2/15
21/06/2019 10 razões porque você deve aprender Julia - boa audiência

necessidades específicas mudam, também as linguagens de


programação.

Aqui estão 10 razões pelas quais


1 - É incrivelmente rápido direto da caixa
Julia foi projetada desde o início com alto desempenho em mente, sem
ter que sacrificar a facilidade de uso como coleta de lixo, que é um
compromisso comum em linguagens como C ++. As aplicações Julia
podem compilar para código nativo eficiente para múltiplas
plataformas graças ao compilador LLVM .

Compiladores podem ser extremamente eficientes quando você lhes diz


exatamente o que fazer com seu código. Tome C, por exemplo, uma
linguagem que exige que você defina explicitamente os tipos de suas
variáveis e o que você planeja fazer com elas, como realizar uma adição
simples. Como a CPU possui hardware dedicado para adição de
aritmética, ela sabe exatamente o que fazer e faz isso extremamente
bem e rapidamente.

Agora pegue uma linguagem interpretada como o Python, por


exemplo. Você dá ao interpretador duas variáveis para adicionar juntas,
mas a CPU não tem nenhum conceito de variáveis. Isso significa que a
CPU deve aguardar instruções do interpretador para descobrir o que
essas duas variáveis contêm. Uma vez que isso tenha sido descoberto, o
próximo passo seria selecionar a operação correta. Se eles forem
inteiros, execute a adição de inteiros, se eles forem flutuantes, execute
a adição de ponto flutuante, se eles forem inteiros e flutuantes,
converta o inteiro em um ponto flutuante e, em seguida, execute uma
adição de ponto flutuante. O intérprete tem que passar por esse
processo toda vez que uma operação é chamada em uma variável. Isso
é o que torna o Python tão lento comparado a linguagens como C.

Agora vamos nos concentrar em Julia. Se C e Python estão em outras


extremidades do espectro, Julia fica bem no meio. O compilador de
Julia não precisa saber de antemão que tipo de variável você está
tentando usar, mas planeja com inteligência antecipadamente sempre
que você chamar uma função. Quando uma função é chamada em
Julia, os argumentos já são conhecidos. O compilador de Julia usa esse
conhecimento para descobrir as instruções exatas da CPU necessárias
para os argumentos específicos, observando a função. Depois que as
instruções exatas são mapeadas, Julia pode executá-las rapidamente. É
por isso que chamar uma função em Julia leva muito tempo pela

https://blog.goodaudience.com/10-reasons-why-you-should-learn-julia-d786ac29c6ca 3/15
21/06/2019 10 razões porque você deve aprender Julia - boa audiência

primeira vez. Durante este período de tempo, o compilador de Julia


estaria descobrindo todos os tipos de variáveis que estão sendo usados
e os compila em instruções de CPU rápidas e precisas. Isto significa que
quando a mesma função é chamada repetidamente,

2 - Resolve o problema das duas línguas


A indústria é atualmente atormentada pelo que é chamado de
"problema em duas línguas". Normalmente, os desenvolvedores
primeiro prototipam seu aplicativo usando uma linguagem dinâmica
lenta e, em seguida, o reescrevem usando uma linguagem estática
rápida para produção.

Decidimos resolver o “problema das duas línguas” em 2009. Muito do


nosso progresso na computação paralela foi frustrado pelo fato de que,
enquanto os usuários estão programando em uma linguagem de alto nível
como R e Python, as partes críticas de desempenho tem que ser reescrito em
C / C ++ para desempenho. Isso é extremamente ineficiente, porque
apresenta erro humano e desperdício de esforços, reduz o tempo de
comercialização e permite que os concorrentes pulem à frente. Esse
problema de duas linguagens dificulta não só pesquisadores, mas também
quantos cientistas, cientistas de dados e engenheiros da indústria. - Viral
Shah, co-fundador da Julia Computing

Na verdade, muitas empresas têm brincado com os idiomas internos


tentando fazer o que Julia faz exatamente por esse motivo, mas ter uma
linguagem de código aberto baseada na melhor tecnologia de
compiladores é muito melhor.

3 - Excelencia em computação técnica


Projetado com a ciência de dados em mente, Julia se destaca em
computação numérica com uma sintaxe excelente para matemática,
com suporte para muitos tipos de dados numéricos e oferecendo
paralelismo pronto para uso, mas mais tarde. O envio múltiplo de Julia
é um ajuste natural para definir tipos de dados numéricos e tipo array.

O REPL Julia (Read / Evaluate / Print / Loop) fornece fácil acesso a


caracteres especiais , como caracteres alfabéticos gregos, índices e
símbolos matemáticos especiais. Se você digitar uma barra invertida,
poderá digitar uma seqüência de caracteres (geralmente a seqüência
LATEX equivalente) para inserir o caractere correspondente. Isso é
ótimo, pois permite que os desenvolvedores simplesmente obtenham
alguma equação e digitem diretamente nela. Por exemplo, se você
digitar:

https://blog.goodaudience.com/10-reasons-why-you-should-learn-julia-d786ac29c6ca 4/15
21/06/2019 10 razões porque você deve aprender Julia - boa audiência

julia> \ sqrt <TAB>

Julia substitui o \ sqrt por um símbolo de raiz quadrada:

julia> √

Alguns outros exemplos:

• \ Gamma

• mercurio

• grau

• \ cdot ⋅

• \ in ∈

4 - É composable
Os pacotes de Julia funcionam naturalmente bem juntos. Isso é graças à
composição da função da linguagem, que facilita a transmissão de duas
ou mais funções como argumentos. Julia tem um operador de
composição de funções dedicado ( ∘ ) para conseguir isso.

Por exemplo, as funções sqrt() e + podem ser compostas assim:

julia> (sqrt ∘ +) (3, 5)


(sqrt ∘ +) (3, 5)

que adiciona os números primeiro e depois encontra a raiz quadrada.

Este exemplo compõe três funções.

julia> map (primeiro ∘ inverter ∘ maiúsculas, dividir ("você


pode compor funções como esta"))
Array de 6 elementos {Char, 1}:
'U'
'N'
'E'
'S'

https://blog.goodaudience.com/10-reasons-why-you-should-learn-julia-d786ac29c6ca 5/15
21/06/2019 10 razões porque você deve aprender Julia - boa audiência

'E'
'S'

Este foi apenas um exemplo básico, mas Julia facilita a comunicação


entre os pacotes. Matrizes de quantidades unitárias, ou colunas de
tabela de dados de moedas e cores, apenas funcionam - e com bom
desempenho.

5 - Faz paralelo muito bem


Os dados ficaram tão grandes que se tornou impraticável executar
aplicativos em um único computador. Atualmente todo mundo está
computando big data em vários nós em um cluster para diminuir o
tempo de execução executando tarefas em paralelo, mas infelizmente
muitas linguagens nunca foram projetadas para isso.

Tome Python, por exemplo, seu interpretador não faz paralelo muito
bem como foi projetado com a suposição principal de que um script
Python individual é serial com um único segmento de execução. O
interpretador faz uso do que é chamado de Global Interpreter Lock
(GIL) que garante que apenas uma única linha de um script Python
possa ser interpretada por vez, evitando assim a corrupção de memória
causada por vários segmentos tentando ler, gravar ou excluir memória
paralelo.

Existem maneiras de curso em torno desta questão, como o uso da


faísca ligações Python PySpark , porém não tão simples como seria de
esperar. O PySpark não executará seu código Python, mas usará um
pacote chamado Py4J que permitirá que o Spark se comunique entre o
interpretador Python e a Java Virtual Machine (JVM) . Isso ocorre
porque o Spark é construído sobre o Scala, que é executado na JVM.
Isso cria uma camada de abstração entre o seu código e a execução
desse código. Um dos principais problemas com isso é que, embora
você possa escrever código Python, o Spark pode retornar erros em
Java no código que você nunca teria escrito.

Julia foi projetada para o paralelismo a partir do zero e fornece


primitivas internas para computação paralela em todos os níveis:
paralelismo de nível de instrução , multi-threading e computação
distribuída . O projeto Celeste.jl alcançou 1,5 PetaFLOP / s no
supercomputador Cori no NERSC usando 650.000 núcleos.

O compilador Julia também pode gerar código nativo para vários


aceleradores de hardware, como GPUs e Xeon Phis. Pacotes como

https://blog.goodaudience.com/10-reasons-why-you-should-learn-julia-d786ac29c6ca 6/15
21/06/2019 10 razões porque você deve aprender Julia - boa audiência

DistributedArrays.jl e Dagger.jl fornecem níveis mais altos de abstração


para o paralelismo.

6 - É codebase é escrito inteiramente em Julia


Está certo. Esse é um recurso mais significativo em comparação com os
idiomas dinâmicos típicos. Se você pode desenvolver aplicativos em
Julia, então você também pode contribuir para Julia. Se você precisar
espiar embaixo do capô e ver o que está acontecendo, você não
encontrará código C como faria com o Python.

Por ser uma linguagem interpretada, o Python pode ser extremamente


lento em comparação com linguagens mais antigas , como C / C ++ e
até mesmo as mais novas, como o Go. No entanto, ao longo dos anos,
muitos pacotes Python foram otimizados para serem executados na
velocidade C. Isso pode parecer ótimo no começo, mas não quando
você considera os trade-offs que foram levados para isso.

Python permite que os desenvolvedores adicionem extensões C. Isso é


ótimo para quando você tem cálculos que podem acontecer várias
vezes, permitindo que mais otimizações sejam feitas, uma vez que tais
extensões C podem ser compiladas e, portanto, executadas muito mais
rapidamente. Os desenvolvedores podem escrever seu código em C ++
e chamá-lo de dentro do seu código Python, dando-lhes um enorme
aumento de desempenho.

No entanto, isso tira a beleza do Python. Python é suposto ser um


simples de usar, fácil de ler a linguagem. Adicionar C / C ++ à mistura
destrói isso, portanto, é melhor usar apenas o C / C ++.

Numpy é escrito mais em C / C ++ do que em Python

No entanto, Julia resolve esse problema, já que ele pode ser tão rápido
quanto o C / C ++, sem a necessidade de fazer tais compensações. A
linguagem central impõe muito pouco; O Julia Base e a biblioteca
padrão são escritos em Julia, incluindo operações primitivas como a
aritmética inteira.

7 - Bom atendimento de chamadas para outros


idiomas

https://blog.goodaudience.com/10-reasons-why-you-should-learn-julia-d786ac29c6ca 7/15
21/06/2019 10 razões porque você deve aprender Julia - boa audiência

Embora a maioria das coisas possa ser feita em Julia, se você quiser
usar bibliotecas que já foram escritas em C e Fortran, Julia facilita o
processo de maneira simples e eficiente. Julia foi projetada com uma
filosofia “sem clichê” em mente, onde as funções podem ser chamadas
diretamente de Julia sem qualquer código “cola”, geração de código ou
compilação, mesmo a partir do prompt interativo. Isso é feito usando o
ccall de Julia sintaxe , que se parece com uma chamada de função
comum.

O suporte a chamadas externas da Julia não para por aqui. Julia


também pode interagir com C ++ , Python , R , Java e muitas outras
linguagens, tornando possível até mesmo compartilhar dados entre os
dois idiomas. O Julia também pode ser incorporado em outros
programas por meio de sua API de incorporação . Especificamente,
aplicativos Python podem chamar Julia usando PyJulia . Os programas
de R podem fazer o mesmo com o JuliaCall de R , que é demonstrado
chamando MixedModels.jl de R .

8 - É dinâmico e fácil de entender


Existem dois tipos de linguagens de programação, linguagens estáticas
nas quais é necessário ter um tipo computável antes da execução do
programa e linguagens dinâmicas onde nada é conhecido sobre tipos
até o tempo de execução, quando os valores reais manipulados pelo
programa estão disponíveis .

O sistema de tipos de Julia é dinâmico, mas ganha algumas das


vantagens dos sistemas de tipo estático, tornando possível indicar que
determinados valores são de tipos específicos. Isso pode ser de grande
ajuda na geração de código eficiente, mas, ainda mais importante,
permite que o despacho de métodos nos tipos de argumentos de função
seja profundamente integrado à linguagem.

O comportamento padrão em Julia quando os tipos são omitidos é


permitir que os valores sejam de qualquer tipo. Assim, pode-se escrever
muitas funções úteis de Julia sem nunca explicitamente usar tipos.
Quando a expressividade adicional é necessária, no entanto, é fácil
introduzir gradualmente as anotações de tipo explícito em código "sem
tipo". A adição de anotações tem três finalidades principais: aproveitar
o poderoso mecanismo de envio múltiplo da Julia, melhorar a
legibilidade humana e detectar erros do programador.

9 - É opcionalmente digitado
Julia tem uma rica linguagem de tipos de dados descritivos, e
declarações de tipo podem ser usadas para esclarecer e solidificar

https://blog.goodaudience.com/10-reasons-why-you-should-learn-julia-d786ac29c6ca 8/15
21/06/2019 10 razões porque você deve aprender Julia - boa audiência

aplicativos.

Você pode definir funções com argumentos opcionais, para que a


função possa usar padrões sensatos se valores específicos não forem
fornecidos. Você fornece um símbolo e valor padrão na lista de
argumentos:

julia> função xyzpos (x, y, z = 0)


println ("$ x, $ y, $ z")
end
xyzpos (função genérica com 2 métodos)

E quando você chama essa função, se você não fornecer um terceiro


valor, a variável z padronizada como 0 e usa esse valor dentro da
função.

julia> xyzpos (1,2)


1, 2, 0
julia> xyzpos (1,2,3)
1, 2, 3

10 - Pode fazer programação de propósito geral


Embora Julia seja projetada como uma linguagem técnica primeiro,
isso não significa que ela não possa ser usada para outras coisas. Assim
como o Python, o Julia também pode ser usado para escrever softwares
na mais ampla variedade de domínios de aplicativos. Isso ocorre
porque Julia não inclui construções de linguagem projetadas para
serem usadas em um domínio de aplicativo específico. Julia permite
que você escreva UIs , compile estaticamente seu código ou até mesmo
implemente-o em um servidor da web . Ele também possui recursos
poderosos semelhantes a shell para gerenciar outros processos . Ele
fornece macros semelhantes a Lisp e outras metaprogramações
facilidades de . A biblioteca padrão também fornece E / S assíncrona,
controle de processo, criação de log, criação de perfil e muito mais.

Julia usa o despacho múltiplo como um paradigma, facilitando a


expressão de muitos padrões de programação funcional e orientada a
objetos. Isso permite que os desenvolvedores alterem o comportamento
de funções com base no estado de tempo de execução de mais de um
dos seus argumentos. Isso é semelhante ao despacho único em que uma
chamada de função ou método é despachada dinamicamente com base

https://blog.goodaudience.com/10-reasons-why-you-should-learn-julia-d786ac29c6ca 9/15
21/06/2019 10 razões porque você deve aprender Julia - boa audiência

no tipo derivado real do objeto no qual o método foi chamado. O


despacho múltiplo leva um passo adiante ao rotear o despacho
dinâmico para a função ou método de implementação usando as
características combinadas de um ou mais argumentos.

Julia também vem com um incrível gerenciador de pacotes que é


projetado em torno de “ambientes” ao invés de um único conjunto
global de pacotes como gerenciadores de pacotes tradicionais. Em
Julia, os pacotes podem ser locais para um projeto individual ou
compartilhados e selecionados por nome. Os ambientes são mantidos
em um arquivo de manifesto, contendo o conjunto exato de pacotes e
versões de que um aplicativo específico precisa. Se você já tentou
executar código que você não usou há algum tempo e descobriu que
não é possível fazer nada porque você atualizou ou desinstalou alguns
dos pacotes que o seu projeto estava usando, você entenderá por que
essa abordagem é necessária. Graças a esses ambientes, cada aplicativo
mantém seu próprio conjunto independente de versões de pacotes. Isso
melhora muito a reprodutibilidade, permitindo que os desenvolvedores
verifiquem um projeto em um novo sistema,

Bônus - atingiu 1.0


Isso é ótimo, porque isso significa que a linguagem atingiu um estado
de "totalmente cozido", e os contribuidores centrais da Julia
prometeram um compromisso com a estabilidade da linguagem API, o
que significa que o código escrito para executar a Julia 1.0 continuará a
funcionar em Julia 1.1. 1.2, etc. Isso significa que os desenvolvedores
de idiomas centrais e a comunidade podem se concentrar em pacotes,
ferramentas e novos recursos criados com base nessa base sólida.

Para onde ir daqui


JuliaBox permite aos desenvolvedores prototipar seu código Julia nos
notebooks da Jupyter diretamente no navegador. JuliaBox é a escolha
número um para as universidades que ensinam Julia, uma vez que os
alunos podem começar a usar Julia em segundos, sem necessidade de
instalação.

O JuliaBox funciona continuamente desde janeiro de 2015 em


www.juliabox.com e encantou mais de 50.000 usuários. Ele fornece a
popular interface de notebook Jupyter para executar Julia. Muitos pacotes
comuns do Julia, como aqueles incluídos no JuliaPro, estão disponíveis por
padrão e outros pacotes podem ser instalados pelos usuários. JuliaBox é
extremamente popular para ensinar Julia. Está disponível gratuitamente
para uso limitado hoje. - juliabox.com

https://blog.goodaudience.com/10-reasons-why-you-should-learn-julia-d786ac29c6ca 10/15
21/06/2019 10 razões porque você deve aprender Julia - boa audiência

JuliaBox inclui uma série de tutoriais introdutórios para você começar


a trabalhar com a linguagem, mas também vai um passo além e inclui
tutoriais avançados para você se familiarizar com as capacidades da
linguagem.

Começando tutoriais sobre JuliaBox

S g Up to Get 00
Raven Tokens!
Raven is a decentralized and distributed deep-learning
training protocol. Providing cost-efficient and faster
training of deep neural networks.

Email

Sign up

I agree to leave and submit this information, which


will be collected and used according to Upscribe's
i li
Conecte-se com a equipe Raven no Telegram

https://blog.goodaudience.com/10-reasons-why-you-should-learn-julia-d786ac29c6ca 11/15
21/06/2019 10 razões porque você deve aprender Julia - boa audiência

https://blog.goodaudience.com/10-reasons-why-you-should-learn-julia-d786ac29c6ca 12/15
21/06/2019 10 razões porque você deve aprender Julia - boa audiência

https://blog.goodaudience.com/10-reasons-why-you-should-learn-julia-d786ac29c6ca 13/15
21/06/2019 10 razões porque você deve aprender Julia - boa audiência

https://blog.goodaudience.com/10-reasons-why-you-should-learn-julia-d786ac29c6ca 14/15
21/06/2019 10 razões porque você deve aprender Julia - boa audiência

https://blog.goodaudience.com/10-reasons-why-you-should-learn-julia-d786ac29c6ca 15/15

Vous aimerez peut-être aussi