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:
- Desempenho : basicamente se resume à rapidez com que a linguagem faz a multiplicação de matrizes, pois essa é mais ou menos a tarefa mais importante na ciência de dados.
- Escalabilidade : pelo menos para mim, pessoalmente, isso se resume à facilidade de criar um sistema distribuído. É um lugar onde línguas como
Julia
realmente brilham.
- Comunidade : em qualquer idioma, você está realmente procurando por uma comunidade ativa que possa ajudá-lo quando você ficar parado usando a ferramenta que estiver usando. É aqui que se situa
python
muito à frente da maioria dos outros idiomas.
- Flexibilidade : Nada é pior do que ser limitado pelo idioma que você usa. Isso não acontece com muita frequência, mas tentar representar estruturas de gráfico
haskell
é uma dor notória e Julia
é preenchida com muitas dores de arquitetura de código como resultado de ser uma linguagem tão jovem.
- Facilidade de uso : se você quiser usar algo em um ambiente maior, verifique se a instalação é simples e pode ser automatizada. Nada é pior do que ter que configurar uma construção refinada em meia dúzia de máquinas.
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 funcionar python
, e a cuda
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.