Julia et Python sont, tous les deux, des languages de programmation fortement utilisé au quotidien dans le monde de la data.
Introduction
Lors de mon article precedent sur “qu’est-ce que la data science?”, nous avons vu la data était bien le nouvel or noir de notre ère. Il faut aussi noter que des ces confinements répétitifs et des frontières physiques qui se ferment occasionnellement pour des raisons sanitaires, le traffic digital engendrai par l’échange numérique est lui d’avantage en explosion. Ces conditions exceptionnelles favorise le télétravail d’une part mais aussi une recrue d’essence pour des emplois dans le milieu de la data.
Nous avons pu également parcourir les outils phares tels que R, Julia, Python, MatLab et SaS. Ils sont utilisés par le département data afin de mener à bien leurs recherches et analyses. Deux languages phares reviennent communément et seront ici l’objet de notre discussion. Il s’agit de Julia et Python.
Indexation de l’article
Notre article se découpera de la manière la suivante :
- Qu’est-ce que Python ?
- Qu’est-ce que Julia ?
- Quelle sont les differences entre Julia et Python ?
- Comment peut-on les comparer et quel est le meilleur outil ?
- Etude syntaxique comparative avec une focalisation sur Julia
- Les jobs en corrélation avec l’usage de Julia et Python
- Conclusion
Qu’est-ce que Python?
Python est un langage de programmation orienté objet et de haut niveau. Il est aussi multi-paradigme avec une sémantique dynamique. Le langage a été créé en 1991 par Guido van Rossum comme successeur de son ancien langage ABC. Il a pris toutes les fonctionnalités utiles et la syntaxe d’ABC pour créer Python.
De plus, Python est un langage à usage général qui propose des structures de données intégrées de haut niveau. Aussi Il offre le “typage” et la liaison dynamique et bien d’autres fonctionnalités. Cela rend Python pratique pour une utilisation dans le développement d’applications complexes ou rapides.
Les Caractéristiques de Python
- Facile à coder et à apprendre
- Gratuit et Open Source avec une licence Python Software Foundation
- Langage orienté objet
- Language typée dynamiquement
- Prise en charge de la programmation GUI
- Langage multiplateforme de haut niveau
- Langage extensible et portable
- Langue interprétée
- Grande bibliothèque standard
Aujourd’hui, plus de 7 millions de codeurs utilisent Python. Il est désormais implémenté depuis 30 ans comme language d’initiation notamment dans les colleges et les lycées.
Le langage Python est aussi exploité dans les domaines de l’ingénierie data et du Machine Learning.
Qui utilise Python?
Au cours de son existence, Python est devenu un langage de programmation crucial pour diverses entreprises et startups. En raison de sa polyvalence et de sa simplicité, Python est utilisé et continue de jouer un rôle essentiel dans des entreprises géantes telles que Wikipedia, Google, Yahoo !, Dropbox, CERN, NASA, Reddit, Facebook, Amazon, Instagram, Netflix, Spotify, ILM etc.
Par ailleurs, Python a été intégré avec succès dans de nombreux produits logiciels en tant que langage de script tel que 3ds Max, Abaqus, etc. Python est également utilisé dans les jeux vidéo, la cyber-sécurité, l’IA et les projets d’apprentissage automatique.
Il est aussi fréquemment utilisé comme langage d’introduction dans les cours d’informatique à travers le monde. La liste est en effet interminable. Cela vous donne une idée quant à la popularité de Python. Sa réputation le présente comme langage de choix pour de nombreuses entreprises et institutions.
Qu’est-ce que Julia ? Une breve introduction
Julia a été fondé en 2009 et lancé en 2012. Julia est un langage de programmation open source. Il est performant, et de haut niveau et à “typage” dynamique.
Ses quatre créateurs disent que Julia a été créée au nom de la cupidité; pour résoudre les insuffisances d’autres langages de programmation tout en intégrant les caractéristiques uniques et souhaitables de ces derniers.
Bien qu’initialement conçue comme un langage de programmation à usage général, Julia se perfectionne énormément dans le calcul numérique et scientifique.
Le langage utilise plusieurs distributions comme le paradigme de programmation central et prend en charge le parallélisme à trois niveaux principaux, à savoir: les co-routines, le multi-threading et le traitement distribué.
La facilité d’utilisation, la rapidité et l’adéquation de Julia sont parfaitement adaptées aux applications Big Data grâce à sa prise en charge de haut niveau. Julia continue donc d’attirer de nouveaux utilisateurs.
Principales caractéristiques du langage de programmation Julia
- Programme gratuit, open-source et sous licence MIT
- Facile à apprendre avec une syntaxe conviviale pour les mathématiques
- Compilé, non interprété, ce qui le rend rapide
- Langage de haute performance similaire aux langages à “typage” statique
- Language typée dynamiquement
- Conçu pour le calcul parallèle et distribué
- Types définis par l’utilisateur rapides et compacts en tant que composants intégrés
- Interopérabilité avec d’autres langages de programmation comme C, Python, etc.
- Macros de type Lisp et autres fonctionnalités de métaprogrammation
- Gestionnaire de packages intégrés
- Permet des co-routines et un thread léger pour la gestion automatique de la mémoire
- Permet la génération automatique de codes spécialisés utiles utilisés pour différents types d’arguments
- Modèle de répartition multiple, facilitant l’expression des comportements fonctionnels à travers de nombreuses combinaisons d’arguments ou de modèles de programmation
- Extrêmement extensible
- Prend en charge l’encodage via Unicode, UTF-8, etc.
Qui utilise Julia?
Avec Julia étant exceptionnellement rapide et performante, il n’est pas surprenant qu’elle ait attiré l’attention d’utilisateurs de premier plan. Plus précisément, le langage Julia est très populaire parmi les mathématiciens et les data scientists.
BlackRock utilise Julia pour l’analyse des séries chronologiques tandis que l’assureur britannique Aviva l’utilise pour calculer les risques.
Au-delà de cela, la Federal Reserve Bank of New York a déjà utilisé Julia pour modéliser l’économie américaine, notant que l’estimation du modèle de Julia était près de dix fois plus rapide que son ancien langage MATLAB
.
Plus particulièrement, le projet Celeste, qui est un projet basé sur Julia, a utilisé le langage pour cataloguer les données télescopiques de tous les objets astronomiques visibles.
Le projet est devenu la première application basée sur Julia à enregistrer une performance maximale de 1,54 PF / s (pétaflops) en seulement 14,6 minutes, établissant une nouvelle étape scientifique.
Les autres utilisateurs clés de Julia incluent NVIDIA, CISCO, la Climate Modeling Alliance, Cancer Research UK, QuantEcon, etc. avec la liste croissante. Les autres utilisations incluent, mais sans s’y limiter, des domaines tels que la science des données, l’IA, l’apprentissage automatique et la visualisation.
Quelle sont les differences entre Julia et Python ?
- Python utilise l’indentation pour dénoter la hiérarchie des blocs de programme et donc aussi la fin. Julia est plus classique et toute construction se termine par end, comme le fait Mathlab (l’origine de cette syntaxe remonte à Algol).
- Quand les end s’accumulent dans un algorithme, cela rend plus difficile de savoir lequel termine quel bloc. Mais les éditeurs modernes affichent des accolades qui montrent la hiérarchie des blocs (comme sur l’image à droite), aussi ce n’est pas un gros problème. Il faut qu’ils supportent le language ce qui viendra avec le temps.
- Python est interprété, même s’il existe des versions compilées en C ou en bytecode Java.
- Julia utilise le compilateur JIT de LLVM et se comporte comme un interpréteur. Il y a donc une similitude dans l’usage, mais un backend différent.
- Les tableaux de Julia sont indexés à partir de 1 comme en R.
- Julia utilise le mot clé function comme JavaScript tandis que Python utilise def. Le premier est plus précis.
- Pour l’Homoiconicité, un programme Julia est implémenté comme une représentation de données comme en Tcl ou en Prolog. Cela permet au programme de se manipuler lui-même, se transformer, s’étendre. Il peut aussi générer un autre programme et l’exécuter. Ceci serait très utile en robotique.
- En Polymorphisme, les mêmes fonctions peuvent supporter des types de données différents, et sont donc générées par le JIT en multiples exemplaires (multiple dispatch). Cela doit être ajouté à Python avec un module externe.
- Les Coroutines s’utilisent avec la même simplicité que Go.
- La Métaprogrammation résulte de l’homoiconicité.
- Les variables par défaut qui n’ont pas de type peuvent s’en voir donner un en ajoutant l’annotation ::type.
Julia Vs Python: une comparaison détaillée
Dans cette section, nous examinons Julia vs Python en termes d’avantages et d’inconvénients. Lisez la suite pour comprendre comment les langages Julia et Python se comparent lorsqu’ils s’affrontent.
Performance
En termes de performances, Julia vs Python prend une tournure. Julia est un langage compilé, ce qui signifie que les programmes écrits en Julia sont directement exécutés sous forme de code exécutable.
Par conséquent, le code Julia est également universellement exécutable avec des langages comme Python, C, R, etc. Il fournit des résultats impressionnants, efficaces et rapides sans avoir besoin de nombreuses optimisations et techniques de profilage natives. Certaines optimisations dans Julia ne peuvent pas être utilisées en Python.
Fondamentalement, les projets d’autres langages peuvent être écrits une fois et compilés naïvement dans Julia, ce qui le rend idéal pour l’apprentissage automatique et la science des données. Le temps mis par Julia pour exécuter des codes volumineux et complexes est moindre pour Python.
Python prend non seulement un certain temps pour implémenter les codes, mais nécessite plusieurs méthodes d’optimisation et des bibliothèques externes qui mettent en évidence l’excellence des performances de Julia.
La vitesse
La vitesse était l’un des principaux objectifs de la création et du développement de Julia. Le besoin d’un langage de programmation avec la vitesse de C, et pour un fait, Julia ne déçoit pas! Fait intéressant, Julia est membre du Petaflop Club, qui comprend des langages informatiques qui dépassent les performances de pointe d’un pétaflop par seconde.
Julia n’est pas interprétée. En effet, il utilise la compilation juste à temps (JIT) et les déclarations de type pour exécuter des codes qui impliquent une compilation au moment de l’exécution. Julia impressionne par ses fonctions numériques et informatiques complexes car elle est conçue pour exécuter rapidement des codes. De plus, sa distribution multiple définit rapidement les types de données tels que les nombres et les tableaux. En comparaison, Python est rapide mais pas comme Julia. Cependant, grâce aux améliorations constantes de l’interpréteur Python, Python peut être rendu plus rapide via des bibliothèques externes, des outils d’optimisation et des compilateurs JIT tiers
Les Bibliothèques
En termes de bibliothèques et de packages, Python prend le gâteau dans Python vs Julia face off. Étant donné ses débuts, Julia dispose d’un nombre limité de bibliothèques. En outre, les bibliothèques ne sont pas très bien entretenues, ce qui prend beaucoup plus de temps pour tracer et exécuter les données. Quoi qu’il en soit, la bibliothèque de Julia ne cesse de croître et peut s’interfacer directement avec des bibliothèques étrangères de Fortran, C ++, Python, R, Javascript, etc. pour gérer les tracés.
En revanche, Python possède un nombre énorme et un riche ensemble de bibliothèques, principalement en raison de sa longue existence et de sa popularité. De plus, ces bibliothèques sont bien entretenues, ce qui facilite l’exécution de diverses tâches supplémentaires. Python est également pris en charge par un nombre important de bibliothèques tierces, ce qui en fait un favori parmi les développeurs et les programmeurs.
Les outils
Le support d’outillage est un aspect essentiel de tout langage de programmation. Python prend facilement les devants sur les bords Julia. Ayant une communauté de programmation active et solidaire, Python se vante d’un support d’outils, de systèmes et d’interfaces géniaux construits par sa communauté.
Cependant, Julia manque d’un support substantiel et de nombreuses ressources, d’outils de débogage ou de résolution de problèmes avec une performance comme Python.
Communauté | Groupes
Pour qu’un langage de programmation réussisse et se positionne comme une force, une communauté massive, dévouée et active est indispensable. Avec Python qui a récemment atteint la barre des trois décennies, il a amassé une vaste communauté solidaire au cours de cette période.
Par conséquent, le développement et la croissance de Python ont fait des bonds en avant, souvent considérés comme le langage de programmation à la croissance la plus rapide.
La grande communauté Python offre un énorme avantage aux développeurs car elle permet à plusieurs ressources de résoudre tous les problèmes et doutes. Il n’y a pratiquement aucun problème lié à Python pour lequel vous ne pouvez pas obtenir d’assistance.
Introduction à la syntaxe de Julia
Nous comparerons les fonctionnalités et la syntaxe. Les deux langages se veulent faciles et abordable. Ils s’adressent avant tout à un public qui n’a aucun intérêt dans le hardware. Ces langages sont des dérivés de C tels que Go qui sont fait pour simplifier la tâche du compilateur et non améliorer la productivité du programmeur.
::type
les variables par défaut n’ont pas de type, on peut leur en donner en ajoutant l’annotation ::type :
Struct
Julia a des structs dont la construction est similaire à celles du langage C, avec les types composites qui servent aussi à déclarer les objets.
Autres points
Les types créés par le programmeur sont aussi rapides que les types du langage.
a:b désigne un intervalle, tandis que Python utilise la fonction range(a, b) et Mathlab quelque chose de similaire.
[a, b] est une liste assignée à un tableau pour l’initialiser, ou un moyen de concaténer deux tableaux, ou ajouter un élément à un tableau. Python requiert la méthode append.
Julia reconnaît si le code continue sur la ligne suivante ou non. Python a besoin qu’on l’indique dans le code.
Les Macros
Définir une macro pour insérer des expressions complexes dans le code est simple:
Julia est conçu pour un traitement distribué, des fonctions exécutées en parallèle. Cela permet de faire exécuter des traitements par un même programme sur le cloud.
On peut utiliser des bibliothèques écrites en C directement (ou en Python aussi).
Les fonctions
La définition commence par le mot clé function et se termine par end. Cela est classique, mais non optimal, le langage Scriptol simplifie en terminant une fonction par return ou return suivi d’une valeur de retour.
Une fonction peut aussi être définie en assignant une expression à un nom avec des arguments.
Ce qui doit afficher 6.
Ce qui est propre à ce langage, est que la valeur de retour est le résultat de la dernière expression évaluée, sauf si une instruction return est explicitement insérée dans le corps de la fonction.
Les tableaux sont passés par références en arguments et donc peuvent être modifiés à la suite de l’appel à une fonction.
Les opérateurs sont des fonctions. On peut assigner le symbole + à une fonction f, et faire un appel f(x, y) qui retournera la somme des deux arguments.
Les structures de contrôle
La structure if est similaire à celle de Python.
La boucle for
La boucle for à la forme la suivante :
Ce qui est aussi simple que Python quoi qu’avec une syntaxe différente.
La boucle while
Le boucle while est classique:
Il n’y a pas d’autre structure de contrôle. Pas de until, de switch. Le pattern matching n’est pas envisagé par les créateurs.
Classes et homoiconicité
Les classes sont des types composites dans lesquels sont imbriqués des fonctions qui deviennent ainsi leur méthodes.
Il n’y a pas de prototypes comme en JavaScript pour ajouter des membres de façon dynamique, mais puisque un programme peut se modifier et s’étendre du fait de l’homoiconicité, il doit donc être possible de modifier les objets et leur ajouter des attributs et méthodes…
Cela est traité dans le manuel, mais les exemples ne sont pas très lumineux. J’en retiens pour le moment que la fonction eval, comme en JavaScript, permet d’évaluer et intégrer du code au programme, et que diverses commandes existent pour “l’introspection”, l’accès du code à lui même comme donnée.
Pour plus d’information, veuillez consulter la documentation.
Jobs
Les emplois dans le domaine de la data dans lesquels la connaissance d’un de ces languages sont tres importants sont le job de Data analyst et celui de Data Scientist.
Conclusion:
À présent, nous sommes sûrs que vous pouvez facilement juger qui remporte la victoire dans la confrontation entre Julia et Python. Bien que Julia attire l’attention et se fasse un nom, Python tombe pour autant dans les oubliettes. Quelle que soit la langue choisie, de nombreux facteurs doivent être pris en compte car chaque langue a ses atouts et ses inconvénients.
Avance rapide vers l’avenir, Julia et Python ont un avenir meilleur dans les domaines du big data, de la science des données, de l’IA et de l’apprentissage automatique, et il n’y a aucune garantie de ce qui pourrait arriver. Néanmoins, Julia a un long chemin à parcourir si elle veut correspondre à l’empreinte de Python dans les domaines susmentionnés. Ce n’est qu’avec une pleine maturité qui pourrait être dans des années et une communauté de masse suivie que Julia pourra accroître sa pertinence en tant que langage de programmation et parvenir à une adoption complète par l’industrie.
Là encore, avec la connaissance des capacités de Julia, Python ne fera qu’améliorer ses faiblesses. Python continuera également à être un acteur majeur dans tous les domaines technologiques et une compétence recherchée quelle que soit la montée en puissance de Julia. Les deux langues devront cependant partager le marché utilisateur. Dans l’ensemble, elles sont prometteuses, et la concurrence ne peut que s’améliorer.
Aymeric Inpong
“Article très intéressant! Aymeric Inpong”