Me deparei com uma pergunta de 2012 que teve uma discussão muito boa sobre Julia como uma alternativa ao R / Python para vários tipos de trabalho estatístico.
Aqui está a pergunta original de 2012 sobre a promessa de Julia
Infelizmente, Julia era muito nova na época e os kits de ferramentas necessários para o trabalho estatístico eram um tanto primitivos. Os bugs estavam sendo resolvidos. As distribuições eram difíceis de instalar. Et cetera.
Alguém fez um comentário muito apropriado sobre essa pergunta:
Dito isto, serão necessários cinco anos para que esta pergunta possa ser respondida em retrospectiva. No momento, Julia não possui os seguintes aspectos críticos de um sistema de programação estatística que poderia competir com o R para usuários do dia-a-dia:
Isso foi em 2012. Agora que já passaram 2015 e três anos, eu me perguntava como as pessoas pensam que Julia se saiu.
Existe um corpo mais rico de experiência com a própria linguagem e o ecossistema geral da Julia? Eu adoraria saber.
Especificamente:
- Você aconselharia novos usuários de ferramentas estatísticas a aprender Julia sobre R?
- Em que tipo de casos de uso de Estatísticas você aconselharia alguém a usar Julia?
- Se R é lento em uma determinada tarefa, faz sentido mudar para Julia ou Python?
Nota: publicado pela primeira vez em 14 de junho de 2015.
Respostas:
Mudei para Julia, e aqui estão minhas razões pragmáticas:
Dito isto, eu ainda amo muito o Rstudio, mas o novo Juno on Atom é muito bom. Quando ele não está mais em desenvolvimento pesado e é estável, posso vê-lo melhor que o Rstudio devido à facilidade dos plugins (exemplo: ele possui um bom plugin para adaptação às telas hidpi). Então, acho que Julia é uma boa linguagem para aprender agora. Até agora, funcionou bem para mim. YMMV.
fonte
Eu acho que "aprender X sobre Y" não é o caminho certo para formular a pergunta. De fato, você pode aprender (pelo menos o básico de) ambos e decidir a ferramenta certa, dependendo da tarefa concreta em questão. E como Julia herdou a maior parte de sua sintaxe e conceitos de outras linguagens, será muito fácil compreendê-lo (assim como o Python, embora não tenha certeza de que o mesmo possa ser dito sobre R).
Então, qual idioma é mais adequado para qual tarefa? Com base na minha experiência com essas ferramentas, eu as classificaria da seguinte maneira:
Para uma pesquisa estatística pura que pode ser feita com o REPL e alguns scripts, R parece ser a escolha perfeita. Ele foi projetado especificamente para estatística, possui o histórico mais longo de ferramentas e provavelmente o maior conjunto de bibliotecas estatísticas.
Se você deseja integrar estatísticas (ou, por exemplo, aprendizado de máquina) ao sistema de produção , o Python parece ser uma alternativa muito melhor: como uma linguagem de programação de uso geral, ele possui uma incrível pilha da web, ligações à maioria das APIs e bibliotecas literalmente para tudo, desde a demolição da web até a criação de jogos em 3D .
Algoritmos de alto desempenho são muito mais fáceis de escrever em Julia . Se você só precisar usar ou combinar bibliotecas existentes como SciKit Learn ou e1071 suportado por C / C ++, ficará bem com Python e R. Mas quando se trata de back-end rápido, Julia se torna mais econômica: Python ou R e não requer conhecimento adicional de C / C ++. Como exemplo, o Mocha.jl é reimplementado no framework de aprendizado profundo Julia , Caffe , originalmente escrito em C ++ com um wrapper em Python.
Além disso, não esqueça que algumas bibliotecas estão disponíveis apenas em alguns idiomas. Por exemplo, apenas o Python possui um ecossistema maduro para a visão computacional, alguns algoritmos de correspondência de formas e de transformação são implementados apenas em Julia e ouvi falar de alguns pacotes exclusivos para estatísticas em medicina na R.
fonte
Problemas intensivos de alta dimensão e computação.
Multiprocessamento. Os recursos paralelos de nó único de Julia (
@spawnat
) são muito mais convenientes do que aqueles em python. Por exemplo, em python, você não pode usar um mapa para reduzir o pool de multiprocessamento no REPL e todas as funções que você deseja paralelizar exigem muito clichê.Computação em cluster. O
ClusterManagers
pacote de Julia permite que você use um cluster de computação quase como faria em uma única máquina com vários núcleos. [Eu estou brincando de fazer isso parecer mais com scripts no ClusterUtils ]Memoria compartilhada. Os
SharedArray
objetos de Julia são superiores aos objetos de memória compartilhada equivalentes em python.PyCall
módulo de Julia fornece acesso ao ecossistema python sem wrappers - por exemplo, eu uso isso parapylab
. Há algo semelhante para R, mas eu não tentei. Também existeccall
para bibliotecas C / Fortran.GPU. Os wrappers CUDA de Julia são muito mais desenvolvidos do que aqueles em python (os Rs eram quase inexistentes quando eu verifiquei). Eu suspeito que isso continuará a ser o caso por causa de quão mais fácil é chamar bibliotecas externas em Julia do que em python.
Ecossistema. O
Pkg
módulo usa o github como back-end. Acredito que isso terá um grande impacto na manutenção de longo prazo dos módulos Julia, pois torna muito mais simples oferecer correções ou que os proprietários passem a responsabilidade.Escrever código rápido para grandes problemas dependerá cada vez mais da computação paralela. Python é inerentemente paralelo hostil (GIL), e o multiprocessamento nativo em R é AFAIK inexistente. Julia não exige que você desça para C para escrever código de desempenho, mantendo grande parte da sensação de python / R / Matlab.
A principal desvantagem para Julia proveniente de python / R é a falta de documentação fora da funcionalidade principal. python é muito maduro, e o que você não consegue encontrar nos documentos geralmente está no stackoverflow. O sistema de documentação de R é muito bom em comparação.
Sim, se você ajustar os casos de uso na parte (b). Se o seu caso de uso envolver muito trabalho heterogêneo
fonte