Je suis tombé sur une question de 2012 qui avait une très bonne discussion sur Julia comme alternative à R / Python pour différents types de travaux statistiques.
Voici la question originale de 2012 sur la promesse de Julia
Malheureusement, Julia était très nouvelle à l'époque et les boîtes à outils nécessaires pour le travail statistique étaient quelque peu primitives. Les bugs étaient en cours de résolution. Les distributions étaient difficiles à installer. Etc.
Quelqu'un a fait un commentaire très pertinent sur cette question:
Cela dit, il faudra 5 ans avant de pouvoir répondre à cette question avec le recul. À l'heure actuelle, Julia n'a pas les aspects critiques suivants d'un système de programmation statistique qui pourrait rivaliser avec R pour les utilisateurs quotidiens:
C'était en 2012. Maintenant que nous sommes en 2015 et que trois ans se sont écoulés, je me demandais comment les gens pensaient que Julia avait fait?
Existe-t-il une expérience plus riche avec la langue elle-même et l'écosystème Julia global? J'aimerais bien savoir.
Plus précisément:
- Conseilleriez-vous à de nouveaux utilisateurs d'outils statistiques d'apprendre Julia sur R?
- Dans quel type d'utilisation de Statistics conseilleriez-vous à quelqu'un d'utiliser Julia?
- Si R est lent à une certaine tâche, est-il judicieux de passer à Julia ou Python?
Remarque: Publié pour la première fois le 14 juin 2015.
Réponses:
Je suis passé à Julia, et voici mes raisons pragmatiques:
Cela dit, j'aime toujours beaucoup Rstudio, mais le nouveau Juno sur Atom est vraiment sympa. Quand il n'est plus en développement lourd et est stable, je peux le voir comme meilleur que Rstudio en raison de la facilité des plugins (exemple: il a un bon plugin pour s'adapter aux écrans hidpi). Je pense donc que Julia est une bonne langue à apprendre maintenant. Jusqu'à présent, cela a bien fonctionné pour moi. YMMV.
la source
Je pense que "apprendre X sur Y" n'est pas la bonne façon de formuler la question. En fait, vous pouvez apprendre (au moins les bases de) les deux et décider du bon outil en fonction de la tâche concrète à accomplir. Et comme Julia a hérité la plupart de sa syntaxe et de ses concepts d'autres langages, il devrait être très facile de le saisir (ainsi que Python, bien que je ne sois pas sûr que l'on puisse en dire autant de R).
Quelle langue est donc la mieux adaptée à quelle tâche? Sur la base de mon expérience avec ces outils, je les évaluerais comme suit:
Pour la recherche statistique pure qui peut être effectuée avec REPL et quelques scripts, R semble être le choix parfait. Il est spécialement conçu pour les statistiques, possède la plus longue histoire d'outils et probablement le plus grand ensemble de bibliothèques statistiques.
Si vous souhaitez intégrer des statistiques (ou, par exemple, l'apprentissage automatique) dans le système de production , Python semble être une bien meilleure alternative: en tant que langage de programmation à usage général, il possède une pile Web impressionnante, des liaisons à la plupart des API et des bibliothèques littéralement pour tout, de la mise au rebut du Web à la création de jeux 3D .
Les algorithmes hautes performances sont beaucoup plus faciles à écrire dans Julia . Si vous avez seulement besoin d'utiliser ou de combiner des bibliothèques existantes comme SciKit Learn ou e1071 soutenu par C / C ++, vous serez bien avec Python et R. Mais quand il s'agit de backend rapide lui-même, Julia devient un véritable gain de temps: c'est beaucoup plus rapide que Python ou R et ne nécessite pas de connaissances supplémentaires en C / C ++. Par exemple, Mocha.jl réimplémente dans le cadre pur d'apprentissage en profondeur Julia Caffe , écrit à l'origine en C ++ avec un wrapper en Python.
N'oubliez pas non plus que certaines bibliothèques ne sont disponibles que dans certaines langues. Par exemple, seul Python a un écosystème mature pour la vision par ordinateur, certains algorithmes de correspondance de forme et de transformation sont implémentés uniquement dans Julia et j'ai entendu parler de packages uniques pour les statistiques en médecine dans R.
la source
Problèmes de grande dimension et de calcul intensif.
Multiprocessing. Les capacités parallèles à nœud unique de Julia (
@spawnat
) sont beaucoup plus pratiques que celles en python. Par exemple, en python, vous ne pouvez pas utiliser un pool de multiprocesseurs de réduction de carte sur le REPL et chaque fonction que vous souhaitez paralléliser nécessite beaucoup de passe-partout.Informatique en grappe. Le
ClusterManagers
package de Julia vous permet d'utiliser un cluster de calcul presque comme vous le feriez pour une seule machine avec plusieurs cœurs. [J'ai joué pour que cela ressemble plus à un script dans ClusterUtils ]La memoire partagée. Les
SharedArray
objets de Julia sont supérieurs aux objets de mémoire partagée équivalents en python.PyCall
module de Julia vous donne accès à l'écosystème python sans wrappers - par exemple, je l'utilise pourpylab
. Il y a quelque chose de similaire pour R, mais je ne l'ai pas essayé. Il y en a aussiccall
pour les bibliothèques C / Fortran.GPU. Les wrappers CUDA de Julia sont beaucoup plus développés que ceux en python (les R étaient presque inexistants lorsque j'ai vérifié). Je soupçonne que cela continuera d'être le cas en raison de la facilité avec laquelle il est possible d'appeler des bibliothèques externes en Julia qu'en python.
Écosystème. Le
Pkg
module utilise github comme backend. Je crois que cela aura un grand impact sur la maintenabilité à long terme des modules Julia car cela rendra beaucoup plus simple d'offrir des correctifs ou aux propriétaires de transmettre la responsabilité.L'écriture de code rapide pour les gros problèmes dépendra de plus en plus du calcul parallèle. Python est intrinsèquement hostile en parallèle (GIL), et le multitraitement natif dans R est AFAIK inexistant. Julia ne vous oblige pas à descendre en C pour écrire du code performant, tout en conservant une grande partie de la sensation de python / R / Matlab.
Le principal inconvénient de Julia provenant de python / R est le manque de documentation en dehors des fonctionnalités de base. python est très mature, et ce que vous ne pouvez pas trouver dans les documents se trouve généralement sur stackoverflow. Le système de documentation de R est assez bon en comparaison.
Oui, si vous correspondez aux cas d'utilisation de la partie (b). Si votre cas d'utilisation implique beaucoup de travail hétérogène
la source