IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Le langage de programmation Julia ne cesse de gagner en adoption au sein de la communauté scientifique : hausse de 87 % des téléchargements sur 2020
En raison de son rapport simplicité-performance

Le , par Patrick Ruiz

44PARTAGES

24  0 
Le langage de programmation Julia ne cesse de gagner en adoption au sein de la communauté scientifique. Sur 2020, il enregistre une augmentation de 87 % de ses téléchargements. En comparaison à l’année 2019, c’est un gap haussier de 10 points de pourcentage. Quels facteurs expliquent cet intérêt de plus en plus croissant pour le langage de programmation pressenti pour remplacer C/C++ et Python dans la filière de la programmation et du calcul scientifique ? Quelles sont ses tares ?


Julia est de plus en plus mis sur la balance avec Python. Le premier rejoint le second sur le plan de la simplicité. Toutefois, Julia est pensé dès le début pour offrir des performances de loin supérieures à celles de Python. Sur cet axe, le langage est comparé avec C/C++ et au langage Rust de Mozilla.

La toute première tâche dans tout processus d’analyse de données consiste à lire des données. Cela doit être fait avec célérité et efficacité afin de pouvoir se consacrer à la tâche de traitement des données. Dans de nombreux secteurs et domaines, le format de fichier CSV est le format le plus utilisé pour le stockage et le partage des données tabulaires. Le chargement rapide et robuste des CSV est crucial, et il doit être bien adapté à une grande variété de tailles, de types et de formes de fichiers. Une étude parue au quatrième trimestre de l’année précédente illustre le fait que Julia est capable de lire les fichiers CSV dix à vingt fois plus vite que les langages Python et R. Attention, l’atteinte de ces cimes en matière de performance peut requérir de l’utilisateur du langage de posséder l’expertise nécessaire pour effectuer des optimisations.


Bien qu'il soit possible d'accélérer des programmes R ou Python en procédant à une réécriture de certaines parties en un autre langage, Julia propose une excellente performance par défaut sans artéfact. De plus, le langage s’appuie sur une syntaxe plaisante pour les mathématiques, très proche des notations habituelles. Par exemple, un produit matriciel s'écrit avec * en Julia, mais avec %*% en R ou @ en Python (uniquement depuis la version 3.6). Enfin, Julia permet le parallélisme facile, tant sur les différents cœurs d'une machine (c’est plus difficile en Python compte tenu de la syntaxe), R proposant le même genre de facilités, que sur plusieurs machines. En effet, Julia propose des abstractions alors que R et Python se contentent de bibliothèques comme MPI. Le langage reste néanmoins sous le feu des critiques pour des aspects comme l’importance des temps de compilation et le manque de maturité des paquets logiciels. Julia est un langage dont les premières versions remontent à 2012, ce qui est susceptible de faire office de justificatif pour diverses autres tares parmi lesquelles le peu de paquets disponibles par rapport à R ou Python, ce, même s'il est possible assez facilement d'utiliser les bibliothèques pour d'autres langages.


Une enquête menée auprès des utilisateurs de Julia en juin dernier donne un aperçu de la communauté des utilisateurs de Julia et de nombre de ses préférences et pratiques en matière de fonctionnalités. Elle est basée sur 2565 interviews. À date, la plupart des utilisateurs (60 %) travaillent dans le milieu universitaire, mais il y a une volonté croissante d'étendre Julia dans l'industrie. Dans l'industrie, les plus grands segments d'utilisateurs sont les professionnels du logiciel/des technologies de l'information (12 %) et l'ingénierie (11 %).

Sources : julialang.org, juliacomputing.com

Et vous ?

Êtes-vous développeur Julia ? Pourquoi avez-vous opté pour ce langage ?
Julia, R ou Python : de quel bord êtes-vous pour la programmation en sciences des données ?
Quel autre langage pour le calcul scientifique préféreriez-vous à Julia ? Pour quelles raisons ?

Voir aussi :

Sortie de Julia 1.0 et 0.7, le langage de programmation scientifique atteint sa première version stable après six ans de développement public

Après Redmonk, c'est au tour de l'Index TIOBE de mettre Python dans le top 3 des langages les plus populaires, Julia gagne également en notoriété

RedMonk janvier 2018 : Go semble déjà essoufflé et Swift rattrape Objective-C alors que Kotlin est en pleine ascension dans le classement

Index TIOBE : C sacré langage de programmation de l'année 2017, Python enregistre encore la plus forte progression annuelle sur PYPL

TypeScript entre dans le top 20 des langages les plus populaires, d'après le classement Redmonk de juin 2017

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de Madmac
Membre expérimenté https://www.developpez.com
Le 19/01/2021 à 1:21
Le passage de Python vers Julia ne demande pas beaucoup d'effort.

Et pour quelqu'un qui débute, Julia un choix très largement supérieur à Python. Et comme plusieurs programmeurs utilisant Python voudrait une version typée, Je ne serais pas étonné que la clientèle traditionnelle passent à Julia.


Traitement en parallèle

Julia prend en charge trois catégories principales de fonctionnalités pour la programmation simultanée et parallèle:

"Tâches" asynchrones ou coroutines
Multi-threading
Informatique distribuée

Les tâches Julia permettent de suspendre et de reprendre les calculs pour les E / S, la gestion des événements, les processus producteur-consommateur et des modèles similaires. Les tâches peuvent se synchroniser via des opérations telles que wait et fetch, et communiquer via Channels.

La fonctionnalité multi-threading s'appuie sur les tâches en leur permettant de s'exécuter simultanément sur plus d'un thread ou cœur de processeur, partageant la mémoire.

Enfin, l'informatique distribuée exécute plusieurs processus avec des espaces mémoire séparés, potentiellement sur des machines différentes. Cette fonctionnalité est fournie par la bibliothèque standard Distributed ainsi que par des packages externes tels que MPI.jlet DistributedArrays.jl.
«Réseaux et flux
Programmation asynchrone »
Il me semble avoir lu quelque part, qu'Amazon ou Walmart a largement contribué financièrement. Et pour cette raison la version 1.5 est déjà utilisable pour des projets commerciaux. Pour le moment, les librairies ne sont aussi mature que JavaScript. Mais je crois que l'année prochaine, les différences ne seront plus significatives.

Comparaison de performance Julia Vs Python :https://benchmarksgame-team.pages.de...a-python3.html
5  0 
Avatar de danielhagnoul
Rédacteur https://www.developpez.com
Le 19/01/2021 à 11:08
Citation Envoyé par Uther Voir le message
La façon dont est rédigée l’accroche de l'article me fait penser à cette excellente planche de xkcd.


Le langage Julia a certainement beaucoup de qualités, mais ouvrir l'article en commençant par ce genre de chiffres, ça ne me donne pas vraiment envie.

De 13 millions à 24 millions, on est loin de 30000 !
6  1 
Avatar de danielhagnoul
Rédacteur https://www.developpez.com
Le 19/01/2021 à 11:12
Citation Envoyé par rawsrc Voir le message
Ben la phase d'apprentissage est commune à quasiment toutes les technos.

Après il faut aussi voir que ce n'est que la version 1, question performances, je pense que cela va s'améliorer. Ce langage était assez confidentiel jusqu'à maintenant mais je pense qu'il va progresser vite tant la syntaxe est bien pensée et les possibilités d'application vastes.
Pour ne rien gâcher, il s'interface nativement avec à peu près tout ce qui existe
La version 1.6 arrive et elle améliore nettement le temps de pré compilation.
5  0 
Avatar de abriotde
Membre chevronné https://www.developpez.com
Le 19/01/2021 à 14:14
Le passage de Python vers Julia ne demande pas beaucoup d'effort.
C'est assez vrai mais bon, il faut relativiser. Il y a quand même pas mal de spécificitées Python (pythonerie) et elles n'existent pas en Julia et vice versa. Mais néanmoins, je dirais que pour un développeur débutant, Python et Julia sont sensiblement aussi accessible l'un que l'autre et passer de Python à Julia est assez aisé dans la mesure ou l'ont reste dans le même type de langage : sans compilation, procédural de la ligné de C, avec un système de gestion de librairies avancé... Par contre en interne Julia est fortement typé (même si c'est beaucoup caché) contrairement a Python, c'est peut-être la plus grosse marche.

C'est un peu comme comparer PHP à Perl. En comparaison, Rust, introduit de la programmation fonctionnelle par rapport a C, il est plus proche d'un mixte entre divers inspirations très diverses (mais Rust se destine a des informaticien pointus comme C qui ont un bagage pour évoluer).
5  0 
Avatar de danielhagnoul
Rédacteur https://www.developpez.com
Le 19/01/2021 à 11:19
Citation Envoyé par SimonDecoline Voir le message
Si tu le dis...
Perso, ça doit faire 2 ans que c'est mon langage principal et certains concepts de base du langage m'ont demandé un certain effort d'apprentissage (immuabilité, multiple dispach, types polymorphes, stabilité de type, JIT...). Et apparemment je ne suis pas le seul, vus la longueur de la page "Performance Tips" de la doc (https://docs.julialang.org/en/v1/man...ormance-tips-1) et le nombre de messages dans les sections "First steps" et "Performance" du forum Julia (https://discourse.julialang.org/)...
Pour la performance, il est important de savoir qu'il ne faut jamais, quels que soient les circonstances et les besoins, créer une variable globale ! Le code doit toujours être dans une fonction ou dans un module.
4  0 
Avatar de Mingolito
Membre extrêmement actif https://www.developpez.com
Le 19/01/2021 à 15:52
Ca n'a pas grand sens ton propos, si Julia n'avais pas un sens techniquement parlant on en parlerais même pas, et le fait de savoir si un nouveau langage provoque de l'intérêt ou fait un bide c'est important évidement.

Entre autre se pose la question du remplacement de Fortran pour la communauté scientifique, c'est partiellement fait vers Python mais peut être que Julia propose une meilleur alternative. Donc se poser la question de savoir si c'est techniquement une meilleur alternative dans certains domaines d'utilisation, puis de savoir si la validité du concept est validé par des téléchargements ou pas est une démarche totalement pertinente.
5  2 
Avatar de Mingolito
Membre extrêmement actif https://www.developpez.com
Le 19/01/2021 à 17:33
Plus il y aura de téléchargements, et donc d'utilisateurs, plus il y aura de chances d'avoir des remontées sur ce qui ne va pas, donc d'améliorer l'offre, et aussi d'avoir de nouvelles API autour de Julia.
3  1 
Avatar de
https://www.developpez.com
Le 19/01/2021 à 23:08
Citation Envoyé par Madmac Voir le message
J'ai converti quelques vieux programmes en Pascal. Histoire d'apprivoiser la syntaxe.
Si je posais la question c'est parce qu'avec des petits projets "pour tester la syntaxe", on n'a souvent qu'un aperçu limité du langage.

Citation Envoyé par Madmac Voir le message
Le seul truc un peu déroutant est que c'est supposément un langage objet, mais c'est un type de langage objet assez particulier. Ce serait plus un langage procédural avancé.
Justement, ce n'est pas un langage objet (du moins, pas dans le sens de Java ou Python). C'est plutôt basé sur un système de types polymorphes avec du multiple-dispatch.

Citation Envoyé par Madmac Voir le message
Le langage va peut-être ajouter des trucs comme le support pour des macros.
Julia supporte les macros depuis longtemps : https://docs.julialang.org/en/v1/man...taprogramming/

Citation Envoyé par Madmac Voir le message
Et une fois, qu'il est fonctionnel et que tu as une idée assez claire des tailles à choisir pour les nombres et les tableaux, tu peux l'optimiser en introduisant les types.
Et c'est là que les choses sérieuses commencent. Clairement, l'objectif de julia, c'est d'avoir un langage aussi haut-niveau que python mais aussi rapide que c++. En pratique, on y arrive mais c'est loin d'être aussi simple que d'écrire quelques signatures de types ou d'enlever des variables globales. D'où mon étonnement sur la remarque que "passer vers Julia ne demande pas beaucoup d'effort".
2  0 
Avatar de Madmac
Membre expérimenté https://www.developpez.com
Le 20/01/2021 à 2:30
Citation Envoyé par SimonDecoline Voir le message
Si je posais la question c'est parce qu'avec des petits projets "pour tester la syntaxe", on n'a souvent qu'un aperçu limité du langage.
C'est pourtant comme cela que l'on commence à programmer avec un langage qui a de la profondeur. Par exemple, Ruby est un langage qui peut-être programmer de façon procédurale, de façon orienté-objet, de façon fonctionnelle et en mode distribué. Et le noyau standard est énorme. Si je devais complètement maîtriser le langage pour pouvoir l'utiliser, je n'aurais pas encore écrit une ligne de code en Ruby.

Julia est également un langage avec beaucoup de profondeur, il peut même être utilisé pour faire des programmes qui normalement devraient être écrits en Erlang. Avec Javascript, Ruby et Julia, je peux tout faire ce que veut, sans avoir à apprendre un autre langage. En termes de vitesse, Julia se compare à C++. Et cela sans maîtrise parfaitement le langage. Je n'ai pas à maîtriser le langage pour être sûr du potentiel exceptionnel de ce langage. Il y a très peu de langage de programmation qui contiennent cette description:
Julia prend en charge trois catégories principales de fonctionnalités pour la programmation simultanée et parallèle:
Comme mon deuxième Dada, juste derrière l'intelligence artificielle, est l'étude des langages de programmation, j'ai aucun problème à reconnaître un langage de programmation exceptionnel. Ce n'est pas pour me vanter, mais trouver le langage qui pouvait tout faire (et pour faire le noyau d'une IA) à été ma quête du st-Graal pendant au moins trente ans.

Citation Envoyé par SimonDecoline Voir le message

Julia supporte les macros depuis longtemps : https://docs.julialang.org/en/v1/man...taprogramming/.
J'ai sans doute vu le mot méta-programmation qui a fait que je n'ai pas exploré ce chapitre. Merci pour l'info! Mais je ne suis pas sûr que l'on parle de la même chose. Quand je parle de macro, je pense d'un macro langage comme en C. C'est extrêmement pratique quand on écrit du code avec des tableaux et des matrices.

Citation Envoyé par SimonDecoline Voir le message

Et c'est là que les choses sérieuses commencent. Clairement, l'objectif de Julia, c'est d'avoir un langage aussi haut-niveau que python mais aussi rapide que c++. En pratique, on y arrive mais c'est loin d'être aussi simple que d'écrire quelques signatures de types ou d'enlever des variables globales. D'où mon étonnement sur la remarque que "passer vers Julia ne demande pas beaucoup d'effort".
Je me suis probablement mal exprimer. Mais si on considère que Julia est également capable de faire des trucs comparables à du Erlang ou à du Go. Si on compare du code de ces 3 langages, Julia a l'air aussi limpide que du Pascal. . Et pour moi, me passer de valeurs globales, cela ne me demande aucun effort. Car c'est une pratique courante en programmation orienté-objet. Et pour un langage comme C++, je les mets toutes dans une structure (struct) ou un objet. C'est aussi une des caractéristiques d'un bon langage, il nous conditionne à adopter de bonnes pratiques.

Dès que l'on inclut le multi-tâche et traitement distribué dans le noyau d'un langage, la courbe d'apprentissage sera forcément plus longue qu'un langage comme JavaScript. Par contre, avec un langage comme JavaScript, tu découvres de grosses limites également très rapidement. Et quand cette limite t'apparaître au milieu d'un gros projet, c'est vraiment l'enfer. Alors à choisir entre un niveau de difficulté accrue et la possibilité de me retrouver en enfer, je préfère la difficulté accrue.

Si un langage est capable de faire le travail de 4 langages, on se doit se calculer chanceux quand cela ne demande pas plus de travail que d'en apprendre 2.
3  1 
Avatar de
https://www.developpez.com
Le 20/01/2021 à 11:36
Citation Envoyé par Jeff_67 Voir le message
Python a une lib standard très fournie. Les paquets Julia hors calcul scientifique ne rivalisent pas encore avec.
Justement non : Python n'a pas de "lib standard très fournie". Il faut passer par Pypi ou Conda, et des environnements virtuels, et ce n'est vraiment pas satisfaisant.
Au moins Julia a nativement un système de gestion de paquets, même si c'est moins fourni effectivement.

Citation Envoyé par Jeff_67 Voir le message
Julia n'a pas de système de class satisfaisant contrairement à Python. Ça limite quand-même beaucoup le portage de codes Python en Julia.
Pas du tout. Python a un système de classe complètement naze. Il faut même souvent passer par les décorateurs pour pouvoir en faire quelque chose d'intéressant. Le système de type de Julia est bien plus puissant, c'est juste que c'est très différent de la POO "classique" et que ça demande un apprentissage.

Citation Envoyé par Jeff_67 Voir le message
Plus généralement, Julia n'est intéressant que pour les codes dont le coût à l'exécution est très supérieur au coût de compilation dynamique.
...
Le first plot problem en Julia décrit très bien ce qui est expliqué dans le paragraphe précédent.
Oui, le coût de première compilation peut être un problème. Ce sera intéressant de voir si les prochaines versions de Julia améliorent cela.

Citation Envoyé par Madmac Voir le message
En termes de vitesse, Julia se compare à C++. Et cela sans maîtrise parfaitement le langage.
Est-ce-que tu as testé cela par toi-même, si possible sur des projets non-triviaux ? Généralement, en Julia, on a facilement une première implémentation mais il faut souvent pas mal de travail d'optimisation ensuite pour atteindre la vitesse du C++. D'ailleurs, il y a une page de la doc et une section du forum Julia entièrement dédiés à l'optimisation.

Citation Envoyé par Madmac Voir le message
Quand je parle de macro, je pense d'un macro langage comme en C. C'est extrêmement pratique quand on écrit du code avec des tableaux et des matrices.
Les macros C, c'est juste du pre-processing très basique. Les "vraies" macros (comme en LISP ou en Julia) sont beaucoup plus puissantes que cela; elles permettent de vraiment manipuler l'AST.

Citation Envoyé par Madmac Voir le message
Par contre, avec un langage comme JavaScript, tu découvres de grosses limites également très rapidement
Lesquelles ? JavaScript a souvent mauvaise réputation chez les programmeurs mais c'est un langage inspiré de LISP et qui n'est pas particulièrement critiqué dans le domaine des langages de programmation.
2  0