Julia vs Python: quel est le meilleur pour la science des données?

Parmi les nombreux cas d'utilisation couverts par Python, l'analyse de données est peut-être devenue la plus importante et la plus significative. L'écosystème Python regorge de bibliothèques, d'outils et d'applications qui rendent le travail de calcul scientifique et d'analyse de données rapide et pratique.

Mais pour les développeurs derrière le langage Julia - qui vise spécifiquement «le calcul scientifique, l'apprentissage automatique, l'exploration de données, l'algèbre linéaire à grande échelle, le calcul distribué et parallèle» - Python n'est pas assez rapide ou pratique . Julia vise à offrir aux scientifiques et aux analystes de données non seulement un développement rapide et pratique, mais également une vitesse d'exécution fulgurante. 

Quelle est la langue Julia?

Créée en 2009 par une équipe de quatre personnes et dévoilée au public en 2012, Julia est destinée à combler les lacunes de Python et d'autres langages et applications utilisés pour le calcul scientifique et le traitement des données. «Nous sommes gourmands», ont-ils écrit. Ils voulaient plus: 

Nous voulons un langage open source, avec une licence libérale. Nous voulons la vitesse de C avec le dynamisme de Ruby. Nous voulons un langage homoiconique, avec de vraies macros comme Lisp, mais avec une notation mathématique évidente et familière comme Matlab. Nous voulons quelque chose d'aussi utilisable pour la programmation générale que Python, aussi simple pour les statistiques que R, aussi naturel pour le traitement de chaînes que Perl, aussi puissant pour l'algèbre linéaire que Matlab, aussi efficace pour coller des programmes que le shell. Quelque chose de très simple à apprendre, mais qui satisfait les pirates les plus sérieux. Nous voulons qu'il soit interactif et nous voulons qu'il soit compilé.

(Avons-nous mentionné qu'il devrait être aussi rapide que C?)

Voici quelques-unes des façons dont Julia met en œuvre ces aspirations:

  • Julia est compilée, non interprétée.  Pour des performances d'exécution plus rapides, Julia est compilée juste à temps (JIT) à l'aide du framework de compilateur LLVM. À son meilleur, Julia peut approcher ou égaler la vitesse de C.
  • Julia est interactive. Julia inclut une REPL (boucle de lecture-évaluation-impression) ou une ligne de commande interactive, similaire à ce que propose Python. Les scripts et commandes ponctuels rapides peuvent être saisis directement.
  • Julia a une syntaxe simple. La syntaxe de Julia est similaire à celle de Python - concise, mais aussi expressive et puissante.
  • Julia combine les avantages du typage dynamique et du typage statique. Vous pouvez spécifier des types de variables, comme "entier 32 bits non signé". Mais vous pouvez également créer des hiérarchies de types pour permettre des cas généraux de gestion de variables de types spécifiques, par exemple, pour écrire une fonction qui accepte des entiers sans spécifier la longueur ou la signature de l'entier. Vous pouvez même vous passer de taper entièrement si cela n'est pas nécessaire dans un contexte particulier.
  • Julia peut appeler les bibliothèques Python, C et Fortran. Julia peut s'interfacer directement avec des bibliothèques externes écrites en C et Fortran. Il est également possible de s'interfacer avec du code Python via la bibliothèque PyCall, et même de partager des données entre Python et Julia.
  • Julia prend en charge la métaprogrammation. Les programmes Julia peuvent générer d'autres programmes Julia, et même modifier leur propre code, d'une manière qui rappelle les langages comme Lisp.
  • Julia a un débogueur complet.  Julia 1.1 a introduit une suite de débogage, qui exécute le code dans un REPL local et vous permet de parcourir les résultats, d'inspecter les variables et d'ajouter des points d'arrêt dans le code. Vous pouvez même effectuer des tâches précises comme parcourir une fonction générée par code.

Vidéo connexe: Comment Python facilite la programmation

Parfait pour l'informatique, Python simplifie de nombreux types de travail, de l'automatisation du système au travail dans des domaines de pointe comme l'apprentissage automatique.

Julia vs Python: avantages du langage Julia

Julia a été conçue dès le départ pour le calcul scientifique et numérique. Il n'est donc pas surprenant que Julia ait de nombreuses fonctionnalités avantageuses pour de tels cas d'utilisation:

  • Julia est rapide. La compilation JIT et les déclarations de type de Julia signifient qu'il peut régulièrement battre le Python «pur» non optimisé par ordres de grandeur. Python peut être rendu plus rapide grâce à des bibliothèques externes, des compilateurs JIT tiers (PyPy) et des optimisations avec des outils comme Cython, mais Julia est conçue pour être plus rapide dès le départ.
  • Julia a une syntaxe conviviale pour les mathématiques. Les utilisateurs de langages et d'environnements informatiques scientifiques tels que Matlab, R, Mathematica et Octave constituent un public cible majeur pour Julia. La syntaxe de Julia pour les opérations mathématiques ressemble plus à la façon dont les formules mathématiques sont écrites en dehors du monde informatique, ce qui facilite la compréhension des non-programmeurs.
  • Julia a une gestion automatique de la mémoire. Comme Python, Julia ne charge pas l'utilisateur avec les détails de l'allocation et de la libération de mémoire, et il fournit une certaine mesure de contrôle manuel sur le garbage collection. L'idée est que si vous passez à Julia, vous ne perdez pas l'une des commodités courantes de Python.
  • Julia offre un parallélisme supérieur. Les mathématiques et l'informatique scientifique prospèrent lorsque vous pouvez utiliser toutes les ressources disponibles sur une machine donnée, en particulier plusieurs cœurs. Python et Julia peuvent exécuter des opérations en parallèle. Cependant, les méthodes de Python pour la parallélisation des opérations nécessitent souvent que les données soient sérialisées et désérialisées entre les threads ou les nœuds, tandis que la parallélisation de Julia est plus raffinée. De plus, la syntaxe de parallélisation de Julia est moins lourde que celle de Python, abaissant le seuil de son utilisation.
  • Julia développe ses propres bibliothèques d'apprentissage automatique natives. Flux est une bibliothèque d'apprentissage automatique pour Julia qui contient de nombreux modèles de modèles existants pour des cas d'utilisation courants. Comme il est entièrement écrit en Julia, il peut être modifié selon les besoins de l'utilisateur et utilise la compilation native juste-à-temps de Julia pour optimiser les projets de l'intérieur. 

Julia vs Python: les avantages de Python

Bien que Julia soit spécialement conçue pour la science des données, alors que Python a plus ou moins évolué pour devenir le rôle, Python offre des avantages convaincants au scientifique des données. Certaines des raisons pour lesquelles Python «à usage général» peut être le meilleur choix pour les travaux de science des données:

  • Python utilise l'indexation de tableau de base zéro. Dans la plupart des langages, Python et C inclus, le premier élément d'un tableau est accessible avec un zéro - par exemple, string[0]en Python pour le premier caractère d'une chaîne. Julia utilise 1 pour le premier élément d'un tableau. Ce n'est pas une décision arbitraire; de nombreuses autres applications mathématiques et scientifiques, comme Mathematica, utilisent l'indexation 1, et Julia est destinée à plaire à ce public. Il est possible de prendre en charge l'indexation zéro dans Julia avec une fonctionnalité expérimentale, mais l'indexation 1 par défaut peut empêcher l'adoption par un public plus généraliste avec des habitudes de programmation enracinées.
  • Python a moins de frais de démarrage.  Les programmes Python peuvent être plus lents que les programmes Julia, mais le runtime Python lui-même est plus léger et il faut généralement moins de temps aux programmes Python pour démarrer et fournir les premiers résultats. De plus, alors que la compilation JIT accélère le temps d'exécution des programmes Julia, elle se fait au prix d'un démarrage plus lent. Beaucoup de travail a été fait pour que Julia démarre plus rapidement, mais Python a toujours l'avantage ici.
  • Python est mature. La langue Julia est jeune. Julia n'est en cours de développement que depuis 2009 et a subi une bonne quantité de fonctionnalités en cours de route. En revanche, Python existe depuis près de 30 ans.
  • Python a beaucoup plus de packages tiers. L'ampleur et l'utilité de la culture Python des packages tiers restent l'une des plus grandes attractions du langage. Encore une fois, la relative nouveauté de Julia signifie que la culture du logiciel qui l'entoure est encore petite. Une partie de cela est compensée par la possibilité d'utiliser les bibliothèques C et Python existantes, mais Julia a besoin de ses propres bibliothèques pour prospérer. Des bibliothèques comme Flux et Knet rendent Julia utile pour l'apprentissage automatique et l'apprentissage en profondeur, mais la grande majorité de ce travail est toujours effectuée avec TensorFlow ou PyTorch.
  • Python compte des millions d'utilisateurs. Une langue n'est rien sans une communauté nombreuse, dévouée et active autour d'elle. La communauté autour de Julia est enthousiaste et grandit, mais elle ne représente encore qu'une fraction de la taille de la communauté Python. L'énorme communauté de Python est un énorme avantage. 
  • Python s'accélère. En plus des améliorations apportées à l'interpréteur Python (y compris des améliorations du traitement multicœur et parallèle), Python est devenu plus facile à accélérer. Le projet mypyc traduit le Python annoté de type en C natif, beaucoup moins maladroitement que Cython. Cela permet généralement d'améliorer les performances par quatre, et souvent beaucoup plus pour les opérations mathématiques pures.