Il semble que la plupart des langues disposent d'un certain nombre de bibliothèques de calcul scientifique.
- Python a
Scipy
Rust
aSciRust
C++
a plusieurs, y comprisViennaCL
etArmadillo
Java
aJava Numerics
etColt
ainsi que plusieurs autres
Sans parler des langages comme R
et Julia
conçus explicitement pour le calcul scientifique.
Avec autant d'options, comment choisissez-vous la meilleure langue pour une tâche? De plus, quelles langues seront les plus performantes? Python
et R
semblent avoir le plus de traction dans l'espace, mais logiquement, un langage compilé semble être un meilleur choix. Et est-ce que quelque chose surpassera jamais Fortran
? De plus, les langues compilées ont tendance à avoir une accélération GPU, tandis que les langues interprétées aiment R
et Python
non. Que dois-je prendre en compte lors du choix d'une langue et quelles langues offrent le meilleur équilibre entre utilité et performances? Y a-t-il également des langages avec des ressources informatiques scientifiques importantes que j'ai ratés?
la source
Réponses:
C'est une question assez massive, donc ce n'est pas censé être une réponse complète, mais j'espère que cela peut aider à éclairer la pratique générale autour de la détermination du meilleur outil pour le travail en matière de science des données. Généralement, j'ai une liste relativement courte de qualifications que je recherche en ce qui concerne n'importe quel outil dans cet espace. Dans aucun ordre particulier, ils sont:
Julia
vraiment brillent.python
se place très en avance sur la plupart des autres langues.haskell
est une douleur notoire, etJulia
est rempli de beaucoup de douleurs d'architectures de code du fait d'être un langage si jeune.Il existe une tonne d'articles sur les performances et l'évolutivité, mais en général, vous envisagez un écart de performances de 5 à 10 fois entre les langues, qui peut ou non avoir une importance en fonction de votre application spécifique. En ce qui concerne l'accélération GPU,
cudamat
c'est un moyen vraiment transparent de le faire fonctionnerpython
, et lacuda
bibliothèque en général a rendu l'accélération GPU beaucoup plus accessible qu'elle ne l'était auparavant.Les deux principales mesures que j'utilise pour la communauté et la flexibilité sont de regarder le gestionnaire de packages de la langue et les questions de langue sur un site comme SO. S'il y a un grand nombre de questions et réponses de haute qualité, c'est un bon signe que la communauté est active. Le nombre de packages et l'activité générale sur ces packages peuvent également être un bon proxy pour cette métrique.
En ce qui concerne la facilité d'utilisation, je suis fermement convaincu que la seule façon de le savoir est de le configurer vous-même. Il y a beaucoup de superstition autour de nombreux outils de science des données, en particulier des choses comme les bases de données et l'architecture informatique distribuée, mais il n'y a aucun moyen de vraiment savoir si quelque chose est facile ou difficile à configurer et à déployer sans simplement le construire vous-même.
la source
Scala
etGo
méritent d'être mentionnés.La meilleure langue dépend de ce que vous voulez faire. Première remarque: ne vous limitez pas à une seule langue. Apprendre une nouvelle langue est toujours une bonne chose, mais à un moment donné, vous devrez choisir. Les facilités offertes par la langue elle-même sont une chose évidente à prendre en compte, mais à mon avis, les éléments suivants sont plus importants:
Je suis conscient que la plupart de mes remarques sont en faveur des langues établies. C'est dans une perspective de «faire avancer les choses».
Cela dit, je pense personnellement qu'il vaut beaucoup mieux devenir compétent dans une langue de bas niveau et une langue de haut niveau:
la source
Vous devez d'abord décider ce que vous voulez faire, puis chercher le bon outil pour cette tâche.
Une approche très générale consiste à utiliser R pour les premières versions et à voir si votre approche est correcte. Il manque un peu de vitesse, mais possède des commandes et des bibliothèques d'addons très puissantes, que vous pouvez essayer presque n'importe quoi avec: http://www.r-project.org/
La deuxième idée est que si vous voulez comprendre les algorithmes derrière les bibliothèques, vous voudrez peut-être jeter un œil aux recettes numériques. Ils sont disponibles pour différentes langues et peuvent être utilisés gratuitement pour l'apprentissage. Si vous souhaitez les utiliser dans des produits commerciaux, vous devez acheter une licence: http://en.wikipedia.org/wiki/Numerical_Recipes
La plupart du temps, les performances ne seront pas le problème, mais trouver les bons algorithmes et paramètres pour eux, il est donc important d'avoir un langage de script rapide au lieu d'un programme monstre qui doit d'abord compiler 10 minutes avant de calculer deux nombres et de mettre le résultat.
Et un grand avantage de l'utilisation de R est qu'il a des fonctions ou des bibliothèques intégrées pour presque tout type de diagramme dont vous pourriez avoir besoin pour visualiser vos données.
Si vous disposez alors d'une version fonctionnelle, il est presque facile de la porter dans n'importe quelle autre langue que vous jugez plus performante.
la source