Parece que a maioria das línguas tem algum número de bibliotecas de computação científica disponíveis.
- Python tem
Scipy
Rust
temSciRust
C++
tem vários incluindoViennaCL
eArmadillo
Java
temJava Numerics
eColt
, assim como várias outras
Sem mencionar idiomas como R
e Julia
projetados explicitamente para computação científica.
Com tantas opções, como você escolhe o melhor idioma para uma tarefa? Além disso, quais idiomas terão o melhor desempenho? Python
e R
parece ter a maior tração no espaço, mas logicamente uma linguagem compilada parece ser uma escolha melhor. E alguma coisa irá superar Fortran
? Idiomas compilados adicionais tendem a ter aceleração de GPU, enquanto idiomas interpretados gostam R
e Python
não. O que devo levar em consideração ao escolher um idioma e quais idiomas oferecem o melhor equilíbrio entre utilidade e desempenho? Também existem idiomas com recursos significativos de computação científica que eu perdi?
fonte
Respostas:
Essa é uma pergunta bastante massiva, portanto, não pretende ser uma resposta completa, mas espero que isso possa ajudar a informar a prática geral sobre como determinar a melhor ferramenta para o trabalho quando se trata de ciência de dados. Geralmente, tenho uma lista relativamente curta de qualificações que procuro quando se trata de qualquer ferramenta neste espaço. Em nenhuma ordem específica, eles são:
Julia
realmente brilham.python
muito à frente da maioria dos outros idiomas.haskell
é uma dor notória eJulia
é preenchida com muitas dores de arquitetura de código como resultado de ser uma linguagem tão jovem.Há muitos artigos por aí sobre desempenho e escalabilidade, mas, em geral, você verá um diferencial de desempenho de talvez 5 a 10 vezes entre os idiomas, o que pode ou não ser importante, dependendo da sua aplicação específica. No que diz respeito à aceleração da GPU,
cudamat
é uma maneira realmente perfeita de fazê-lo funcionarpython
, e acuda
biblioteca em geral tornou a aceleração da GPU muito mais acessível do que costumava ser.As duas principais métricas que utilizo para a comunidade e a flexibilidade são examinar o gerenciador de pacotes do idioma e as questões de idioma em um site como o SO. Se houver um grande número de perguntas e respostas de alta qualidade, é um bom sinal de que a comunidade está ativa. O número de pacotes e a atividade geral nesses pacotes também podem ser um bom proxy para essa métrica.
Quanto à facilidade de uso, acredito firmemente que a única maneira de realmente saber é configurá-lo por conta própria. Há muita superstição em torno de muitas ferramentas de ciência de dados, especificamente coisas como bancos de dados e arquitetura de computação distribuída, mas não há como realmente saber se algo é fácil ou difícil de configurar e implantar sem apenas criar você mesmo.
fonte
Scala
eGo
vale a pena mencionar.A melhor linguagem depende do que você deseja fazer. Primeira observação: não se limite a um idioma. Aprender um novo idioma é sempre uma coisa boa, mas em algum momento você precisará escolher. As facilidades oferecidas pelo próprio idioma são uma coisa óbvia a ser levada em consideração, mas, na minha opinião, as seguintes são mais importantes:
Estou ciente de que a maioria dos meus argumentos favorece idiomas estabelecidos. Isso é da perspectiva de "faça as coisas".
Dito isto, eu pessoalmente acredito que é muito melhor se tornar proficiente em um idioma de baixo nível e um idioma de alto nível:
fonte
Primeiro, você precisa decidir o que deseja fazer e, em seguida, procurar a ferramenta certa para essa tarefa.
Uma abordagem muito geral é usar R nas primeiras versões e verificar se sua abordagem está correta. Falta um pouco de velocidade, mas possui comandos e bibliotecas de complementos muito poderosos, que você pode experimentar quase tudo: http://www.r-project.org/
A segunda ideia é que, se você quiser entender os algoritmos por trás das bibliotecas, poderá dar uma olhada nas Receitas Numéricas. Eles estão disponíveis para diferentes idiomas e são gratuitos para o aprendizado. Se você quiser usá-los em produtos comerciais, precisará adquirir uma licença: http://en.wikipedia.org/wiki/Numerical_Recipes
Na maioria das vezes, o desempenho não é o problema, mas a localização dos algoritmos e parâmetros corretos para eles; portanto, é importante ter uma linguagem de script rápida em vez de um programa monstro que primeiro precise compilar 10 minutos antes de calcular dois números e colocar o resultado.
E uma grande vantagem do uso do R é que ele possui funções ou bibliotecas integradas para quase qualquer tipo de diagrama que você possa precisar para visualizar seus dados.
Se você possui uma versão funcional, é quase fácil portá-la para qualquer outro idioma que julgue ser de melhor desempenho.
fonte