9 septembre 2022

Choisir son langage de programmation

Un langage de programmation est un outil permettant de transformer un concept en un programme qui s’exécutera sur un ordinateur. Il existe beaucoup de langages de programmation et de nouveaux sont créés régulièrement. Comment choisir celui qui correspond à son besoin ? Quelles contraintes seront les conséquences de ce choix ? Que l’on soit un jeune développeur qui souhaite s’investir sur une technologie ayant un avenir ou un architecte/directeur de projet qui souhaite faire le bon choix technique (le langage le plus intéressant efficacité/coût) ou humain (un langage ayant une plus grande communauté de développeurs afin de faciliter les recrutements), le choix d’un langage est souvent important et engage pour une longue période (dans les banques des logiciels ayant 20 à 30 ans ne sont pas des cas isolés)..

A-t-on des contraintes ?

La première question à se poser est : a-t-on des contraintes techniques ou fonctionnelles ? En effet, répondre à une contrainte peut limiter les solutions techniques disponibles. Je vais vous en présenter quelques-unes :
• Je souhaite créer une application plug-in dans le logiciel FreeCAD (https://www.freecad.org/). FreeCAD est écrit en C++ et fournit soit des APIs C++ soit du scripting en Python. Et donc pour faire mon application je me retrouve limité sur mes choix…
• Dans le milieu de la finance, nous sommes bien souvent liés à des progiciels financiers ou à des choix d’entreprise (base de données, data lake, etc.). Les progiciels sont souvent couplés à des langages (Orchestrade à C#, Summit à C/C++ pour le core et C# pour le GUI par exemple)
• La contrainte peut être liée à des performances attendues.
Dans le cas du trading à haute fréquence, on cherche à économiser les nanosecondes ce qui force le choix à des langages très efficaces comme le C++ ou le C…
• La contrainte peut être le choix d’un métier : dans quel domaine ai-je envie de travailler ? Lequel me garantira le plus de travail dans l’avenir, etc. ?
• etc.


Il est donc nécessaire de faire la liste de ses objectifs, quelles sont nos contraintes et qu’est ce que l’on souhaite éviter ?

De quels langages parle-t-on ?

Il existe de très nombreux langages dans la nature. Nous allons faire une liste (non exhaustive) des principaux langages parmi les plus utilisés. Et pour chaque langage, nous rajouterons un petit exemple de code afin que le lecteur se fasse une idée de sa syntaxe.

FORTRAN (1957)

Le premier langage commercial dont le nom est la contraction de « FORmula TRANslating ». C’est le langage utilisé pour le calcul intensif et c’est un des langages ayant la plus grande base de code scientifique installée. Basé, à l’origine, uniquement sur le paradigme impératif structuré, il a évolué au cours du temps pour supporter le paradigme objet. Son gros point faible est lié aux outils d’entrées/sorties : nombre de projets avaient des IO écrites en C. Voici un exemple de programme écrit dans ce langage.

C (1969)

Inventé pour développer le système UNIX, c’est un langage de bas niveau permettant de créer des applications très efficaces. On le retrouve dans le cœur de la majorité des systèmes d’exploitation et dans les systèmes embarqués. Il supporte deux paradigmes de programmation : impératif structuré et fonctionnel. Certains choix dans la définition des pointeurs et dans la gestion mémoire nécessitent, de la part des développeurs, une très grande rigueur. Les coûts de maintenance des applications anciennes ont tendance à augmenter
avec le temps…

Pascal/Delphi (1970)

Conçu pour enseigner l’informatique, il a longtemps été le langage de l’éducation nationale française. Mais, malheureusement selon moi, il n’a jamais réussi à percer dans l’industrie : contrairement au C un pointeur sur un entier n’est pas du même type qu’un pointeur sur un tableau d’entiers. Il a été popularisé par la société Borland en 1983 grâce à Turbo Pascal (après la programmation en Basic je suis passé au Turbo Pascal 3 dans ma jeunesse). Il existe cependant des logiciels de comptabilité écrits en Delphi (est le successeur de Turbo Pascal)…

SQL (1974)

Le langage des bases de données relationnelles est utilisé dans chaque téléphone, dans chaque banque. Le langage normé est un langage de requêtes, mais ses variantes propriétaires (comme le PL/SQL d’Oracle) proposent des fonctionnalités qui en font des langages exécutés côté bases de données. Beaucoup d’applications, écrites en C++ par exemple, exécutent des requêtes SQL ou des procédures stockées pour lire/écrire les données dans le référentiel. Voici un exemple de fonction écrite en PL/SQL :

Ada (1980)

Conçu pour le département de la défense américaine, c’est un langage très exigeant, mais qui permet de créer du code efficace et sécurisé. Il est employé dans l’aéronautique, dans le monde des transports ou dans des applications temps réels. Écrire un programme qui compile peut paraître un peu long, car le compilateur ne laisse rien passer : globalement les seules erreurs qui restent sont les erreurs d’algorithmes.
Par contre c’est un langage verbeux :

Objective C (1983)

C’est une extension du C ANSI qui est un langage orienté objet réflexif et qui a longtemps été le langage phare pour développer des applications sur Mac OS X ou sur iPhone. Il n’est détrôné que depuis peu par Swift.

Matlab (1984)

Langage émulé dédié aux algorithmes mathématiques. Il est
utilisé entre autres choses pour le traitement du signal.
Traders et quants s’en servent aussi pour effectuer des calculs
financiers. Aujourd’hui, il y a de nombreux projets de migra-
tion Matlab vers Python.

C++ (1984)

Créé par Bjarne Stroustrup c’est le langage qui a été adopté par les entreprises pendant la période allant des années 80 à 2000… On retrouve C++ dans la plupart des clients lourds comme Excel et Word ou dans les applications bancaires nécessitant de grosses performances. L’OS BeOS était écrit en C++. Tout comme le C dont il hérite, C++ nécessite une grande rigueur. Nombre d’applications développées depuis plus de 15 ans existent dans les banques et l’industrie et très peu d’écoles forment les élèves à ce langage : il y a donc une
pénurie de ressources.

Perl (1987)

Créé pour manipuler des fichiers textes, il est basé sur les langages C et awk ainsi que sur les outils grep, sed, cut, test et expr. Très utilisé par les ingénieurs système Unix pour générer des rapports à partir de logs ou pour faire du déploiement. Sa syntaxe complexe est peu lisible surtout que celui-ci contient beaucoup d’astuces comme des variables cachées en entrée et sortie de fonctions. Il est, de plus en plus, délaissé au profit de python. Mais on trouve encore beaucoup de scripts dans les banques, par exemple, ou en data science.

Python (1991)

Peu connu à ses débuts, il se taille la part du lion depuis 2014. C’est le langage du Big Data et de la Data Science. Sa syntaxe simple et lisible en fait un très bon langage pour l’apprentissage de la programmation : il a d’ailleurs été retenu par l’éducation nationale française pour l’enseignement de l’algorithme dès la classe de seconde. C’est le langage le mieux documenté sur internet, il dispose d’une communauté importante et d’un écosystème très complet. C’est le couteau suisse de l’informaticien.

Virtual Basic (1991)

Microsoft l’a créé en le basant sur son modèle COM et sur le langage BASIC. Il permet le développement rapide d’applications. Facile à apprendre et facile à utiliser, il a beaucoup été utilisé par des non-développeurs (des personnes ayant un autre métier : assureur, trader, etc.) pour faire des démonstrateurs ou des logiciels internes… Une version. Net est maintenue.

Virtual Basic for Application (1993)

Langage de macro dans la suite Office de Microsoft, il a, peu à peu, été intégré dans d’autres softwares. Nombre de programmes tournent dans des pages Excel au sein des banques et n’oublions pas certains technico-commerciaux qui vous vendent du rêve via des « slidewares » : des démos dans des vignettes PowerPoint à grand renfort de macros… Voici un exemple de fonction VBA dans Excel :

Lua (1993)

C’est moteur de scripts conçus pour être facilement embarqués dans des applications C/C++… Bien que disposant de moins de bibliothèques que Python, il a fini par s’imposer dans les moteurs de jeux vidéo le développement réseau ou l’embarquer notamment. LuaJIT est une variante incluant un compilateur à la volée donnant au moteur Lua des performances proches du C.

R (août 1994)

Dédié aux statistiques et à la science des données, ce langage a connu un regain d’intérêt avec le crise du covid. Mais il est en concurrence avec Python qui dispose d’un écosystème plus riche et qui bénéficie de meilleures performances.

PHP (1994)

Ce langage a été démocratisé au sein des architectures LAMP (Linux, Apache, MySql & PHP) qui ont servi à bâtir les applications web dynamiques. Facebook en fait un grand usage et a travaillé à l’écriture d’un compilateur. La syntaxe est un mix entre C et perl…

Ruby (1995)

Langage associé au framework Ruby On Rails il a eu un bon succès jusqu’en 2008, mais est en érosion lente depuis si l’on en croit l’index Tiobe ou PyPL.

Java (1995)

Ce langage est très populaire depuis 1995. SUN a beaucoup investi dans l’organisation d’événements avec des évangélisateurs afin de le faire connaître ; et l’aide de Netscape en l’intégrant dans son navigateur a permis la naissance du web dynamique grâce aux applets. Le ramasse-miette intégré lui permet d’être plus accessible aux débutants que C++. Son écosystème est l’un des, si ce n’est le plus, riche de tous les langages. Appartenant désormais à la société Oracle qui a « rationalisé » son développement, les utilisateurs professionnels commencent à le remplacer.

JavaScript (1996)

Un des langages emblématiques du web dynamique avec PHP. Un des plus utilisés pour faire des interfaces utilisateurs dans les applications web. Il a bien évolué jusqu’à intégrer un compilateur Just-In-Time… C’est un langage au typage dynamique qui déchaîne les passions comme Python…

C# (2002)

C# est la réponse de Microsoft à Sun suite aux procès liés à Java. C# est un langage bâti autour de la plateforme. Net, il est un compromis entre C++ et Java : il reprend le meilleur des deux langages. Il est notamment utilisé dans les banques. Comme exemple, je pourrais citer le projet CrossOne (de la Société Générale) ou le progiciel financier Orchestrade qui ont été créés en C#.

Scala (2004)

Scala est un langage fonctionnel et orienté objet conçu pour fonctionner initialement dans la JVM. Il a été utilisé pour développer Spark et Kafka utilisé dans le domaine du Big Data.
Scala a depuis été porté dans la LLVM du MIT. Il donne du code plus compact que Java, mais est plus difficile à apprendre.

Go (novembre 2009)

Inspiré du C et du Pascal, c’est un langage concurrent développé par Google. La concurrence est basée sur un système analogue aux coroutines et sur une synchronisation par passage de messages qui est plus intuitive que celle basée sur le modèle multi-threadé synchronisé par des sémaphores ou des mutex. Il a de bonnes qualités pour la programmation réseau.

Julia (août 2009)

Julia est un langage de programmation dédié au calcul scientifique, avec une syntaxe qui se veut familière pour les utilisateurs d’autres environnements comme Matlab, R, Scilab, Python, etc. Il fournit :
• un compilateur
• du typage dynamique
• du polymorphisme
• une exécution parallèle distribuée
des appels directs de fonctions C, Fortran et Python.
Voici un exemple de code Julia :

Rust (juillet 2010)

Créé par la fondation Mozilla pour être fiable, concurrent et pratique, c’est un bon remplaçant pour le langage C pour l’embarqué ou la programmation système. Récemment accepté par Linus Torvald pour le développement de Linux : c’est un langage à surveiller.

Kotlin (juillet 2011)

Créé par Jetbrains et adoubé récemment par Google, il est devenu un langage pour le développement Android. Il permet de compiler aussi bien dans la JVM que dans le moteur JavaScript.

TypeScript (février 2012)

Langage inventé par Microsoft pour augmenter la production de code et la sécurité en JavaScript. Il transcompile en JavaScript lui permettant d’être interprété par n’importe quel navigateur web ou moteur JavaScript.

Swift (2014)

C’est le langage qu’Apple a créé pour remplacer Objective C.
Il est utilisé pour faire des applications sur iPhone ou Mac : c’est la seule plateforme où il est réellement répandu.

Définir des critères

Choisir une technologie pour un nouveau projet ou comme choix d’avenir pour son métier n’est pas chose facile. La première difficulté est de définir des critères objectifs et, si possible, mesurables. Trop souvent on entend les développeurs vanter les mérites de leur langage de prédilection ou descendre en flèche le(s) langage(s) détesté(s), mais sans recul sur aucune des technologies citées ni informations vérifiées et/ou vérifiables… Et, grand jamais, je n’ai dit que Python et C/C++ étaient les meilleurs langages et que Java ne servait à rien.

Le domaine de développement

Si l’on souhaite travailler dans un domaine précis ou sur des problématiques précises, certains langages vont s’imposer d’eux-mêmes.

Calcul scientifique

C’est un domaine de niche (il y a peu d’emplois disponibles), mais qui est très exigeant et très riche en termes de technologies. C’est ce domaine qui fut le point de départ de l’informatique moderne: décrypter les messages codés de l’Allemagne nazie… Les langages phares sont :
Fortran : probablement le langage ayant la base de code installée la plus importante. Il y a tellement de codes que les réécrire coûterait trop cher. Fortran 90 a ajouté la vectorisation dans sa syntaxe et le langage continu d’évoluer.
C++ + OpenMP : on le retrouve dans les programmes n’ayant pas à assumer un historique. OpenMP est une
extension du compilateur qui permet de paralléliser les boucles. MPI peut aussi être utilisé pour faire de la programmation distribuée.
• Python + numpy + scipy : connaît un essor important depuis 2014 et l’arrivée des clouds. Numpy et scipy sont deux bibliothèques dédiées aux calculs et ayant des versions optimisées par Intel. On le retrouve notamment dans les calculs financiers dans les organismes bancaires, dans le domaine de la recherche. Pour les statistiques, on peut rajouter la librairie pandas.
Julia : dernier arrivé dans le monde du calcul, ce langage est un outsider proposant une syntaxe simple, moderne et adapté aux enjeux de la vectorisation et parallélisation. Il est basé sur la LLVM pour être portable.

Programmation OS

C’est toujours un sujet d’actualité, les ordinateurs sont omniprésents dans nos vies (téléphones portables, box internet, ordinateurs, etc.) ; il y a donc des OS partout faisant souvent partie d’une lignée (Unix, BSD, Linux et Windows pour les plus connus, mais il y en a d’autres comme RTOS par exemple). Tous les OS d’aujourd’hui ont une partie core écrite en C et éventuellement en assembleur. Les langages les plus courants sont :
C : c’est le langage le plus utilisé pour cette tâche
Assembleur : chaque processeur a un assembleur qui lui est propre rendant complexe les évolutions. D’autant plus que les nouveaux processeurs ont nombres d’unités travaillant en parallèle : écrire du code optimisé n’est pas au niveau de tout le monde. Il est donc réservé à des fonctions très précises.
• C++ : BeOS a été écrit avec des API en C++. Moins performant que le C et plus gourmand en ressources, il n’est pas le mieux représenté des langages dans cette catégorie.
rust : conçu pour être un concurrent à C/C++, il a été autorisé pour le développement dans le noyau Linux et
Google compte s’en servir pour améliorer la sécurité du noyau d’Android.
go : le langage de google a de bonnes qualités pour développer des outils autour des OS

Programmation embarquée

Nous faisons un usage de plus en plus important d’objets connectés ou embarqués : drones, montres connectées, imprimantes, thermomix, TV connectée, etc. Travaillant sur des processeurs aux faibles performances, la gestion de la mémoire et des performances est souvent une nécessité…
C : c’est le langage le plus utilisé pour cette tâche
assembleur : comme pour les OS.
C++ : BeOS a été écrit avec des API en C++. Moins performant que le C et plus gourmand en ressources, il n’est pas le mieux représenté des langages dans cette catégorie.
rust : il commence à faire son chemin.
Micropython : popularisé par les Arduino et Raspberry PI pour rendre plus accessible la programmation.

Big Data

Le Big Data est devenu un enjeu économique de très grande importance. Le domaine a crû en importance avec la venue du cloud. Les langages les plus utilisés sont :
R : le langage des statistiques par excellence, mais en perte d’utilisation sauf dans les milieux de la recherche
scala : spark et kafka, deux des grands outils utilisés dans les solutions Big Data, sont écrits dans ce langage… Il permet d’accéder aux performances, mais au prix d’un long apprentissage. Longtemps cantonné à la JVM, il est depuis peu dans LLVM.
java : compatible JVM avec une forte base de développeurs, il est plus facile à apprendre que scala.
python + numpy + scipy + pandas + matplotlib : il remplace petit à petit R. De plus avec docker et Kubernetes, on peut facilement déployer en production.

Machine Learning

Le Big Data est le point de départ, ensuite il faut analyser les données et en déduire des enseignements comme la reconnaissance des visages, la conduite autonome, etc. C’est le but de l’intelligence artificielle ou du deep learning (apprentissage profond). On y retrouve les mêmes langages que pour le Big Data, mais avec des bibliothèques différentes et souvent propres aux fournisseurs de cloud : PyTorch, TenserFlow, scikit-learn, etc…
python + bibliothèques : c’est le langage phare en termes d’utilisation.
C/C++ : pour implémenter les algorithmes de calcul interne et les fonctionnalités où la performance est primordiale
java : il suit C/C++ en taux d’utilisation
prolog : basé sur le paradigme logique c’est un des langages historiques de l’IA.
lisp : premier langage commercial de l’IA, il est à la base de beaucoup de découverte et d’amélioration dans le monde de l’informatique

Programmation web

L’économie est aujourd’hui centrée autour du web d’autant plus avec la crise du covid : l’utilisation des services de commandes et livraisons a fortement augmenté. Les GAFA ont toutes au moins un business model web ; des banques comme Boursorama ou N26 n’ont plus d’agence et sont 100% web et téléphone. Alors HTML et CSS sont des langages de représentation, mais non des langages de programmation, mais ils restent nécessaires pour définir la disposition des éléments. Les principaux langages dans l’ordre de popularité :
JavaScript : il peut être utilisé du côté client (avec React ou Angular) ou du côté serveur (avec node.js). Il est en tête des langages web aujourd’hui.
Python : avec des bibliothèques comme Django, flask ou CherryPy il s’impose petit à petit pour les applications web ou REST. Ma richesse de sa bibliothèque
TypeScript : créé par Microsoft pour compenser les carences de JavaScript. TypeScript permet d’en faciliter le
développement.
PHP : dédié au développement côté serveur, il est présent dans de nombreux sites (Facebook, WordPress, Joomla, etc.). Il se couple facilement avec la base de données MySQL.
• Ruby + Rails : intuitif, facile à apprendre, il a une syntaxe propre. Ce framework web libre écrit en Ruby est la base des sites web suivant : GitHub, Shopify, Airbnb, Groupon, GoodReads et Kickstarter.

Ces 2 langages peuvent aussi être utilisés du côté serveur
notamment dans les banques :
java
• C# + ASP.NET

Jeux vidéo

Le monde du jeu vidéo rapporte énormément d’argent chaque année. On les retrouve aussi bien sur des consoles de salon, des ordinateurs individuels ou des smartphones. Le besoin est souvent très orienté performance. Voici les langages pertinents dans cette industrie pour les ordinateurs et les consoles:
C/C++ : leurs performances les rendent tout indiqués pour développer les moteurs des jeux professionnels. Il est notamment utilisé pour World of Warcraft qui a marqué une génération.
lua : langage de script souvent utilisé pour développer les mods (notamment pour World of Warcraft)
java : utilisé entre autres pour Runescape ou Minecraft
C# : excellent compromis entre C++ et java en termes de syntaxe ou de fonctionnalités. Il est utilisé notamment dans Hearthstone et Super Mario Run. Le framework XNA le rend indiqué pour développer sur Xbox.
• JavaScript : utilisé pour faire des jeux dans des browsers web


Pour les jeux mobiles, reportez-vous au paragraphe correspondant.

Programmation mobile

Les arrivées des PDA Psion et Palm puis des iPod et iPhone ont été une révolution tant dans les habitudes des gens (il est courant de voir les gens vissés à leurs portables) que dans l’économie (elle pèse financièrement très lourd). Par programmation mobile nous allons cibler les tablettes et les smartphones pour les OS majoritaires Android et iOS. Les langages utilisés sont :
Pour les plateformes Android :
Java : langage officiel, mais longtemps source de conflits avec Oracle
Kotlin : langage secondaire de la plateforme, mais qui a le vent en poupe et qui est le langage à privilégier selon Google
C/C++ : disponible et permettant de tirer au mieux parti des performances du hardware.

• Pour l’écosystème iOS :
Objective-C : langage d’origine de la plateforme, il accuse le poids des années.
swift : c’est le langage principal des plateformes Apple. Il est conçu pour interopérer avec Objective-C.

• Multi-plate-forme :
HTML + JavaScript : il suffit d’un navigateur, c’est une solution simple accessible à tous. Angular et React sont
des frameworks permettant d’aller plus loin. Cordova est un autre framework utilisé par Wallmart et Adobe.
C# : Microsoft a fourni avec Visual Studio pour Xamarin un environnement multi-plateforme iOS, Android et
autres…
Dart + Flutter : il peut aussi être utilisé. Dart a été inventé par Google en 2011.

Ingénieur système

Les ingénieurs systèmes, qui passaient beaucoup de temps à mettre à jour des paramètres systèmes, sont de plus en plus amenés à développer pour automatiser les tâches, déployer des mises à jour avec Ansible ou créer des conteneurs docker/Kubernetes. Les langages que l’on retrouve pour ce métier sont :
perl : langage historique utilisé par les ingénieurs systèmes sur les plateformes UNIX. Sa syntaxe complexe et ses astuces internes n’en font pas un langage facile à apprendre ou à maintenir.
Python : c’est le langage qui s’impose de plus en plus, il dispose des mêmes fonctionnalités que perl avec une syntaxe plus abordable et couvre fonctionnellement plus de besoins que perl. Ansible (l’outil de déploiement) a été écrit en Python ; de même faire des conteneurs docker ou Kubernetes s’automatise très bien en python.
bash : c’est un langage de script, mais qui n’est pas adapté pour les gros projets
powershell : très utilisé pour les développements sous
Windows
C/C++ : pour les développements bas niveau

Le monde des réseaux

On peut séparer différentes utilisations : programmation d’outil réseau et/ou automatisation de tâches pour les ingénieurs réseau.
La programmation d’outils est faite par des développeurs qui ont reçu des formations avancées en programmation. Ils vont utiliser des technologies orientées performance et mémoire (§ Performances & écologie). Les langages que nous allons trouver sont :
C/C++ : ce sont les langages historiques du domaine
rust : langage qui monte et qui est performant…
go : le langage de Google propose des fonctionnalités intéressantes pour la gestion efficace des I/O asynchrones.
Avec son ramasse-miettes il est de plus haut niveau.
python : outsider inattendu, python dispose des fonctionnalités utiles et une simplicité de mise en œuvre par rapport aux autres langages.


Les ingénieurs réseau se préoccupent de la mise en place, de la configuration et de l’exploitation des réseaux : ils utilisent des outils et automatisent des tâches répétitives via des scripts et de petits outils : ce ne sont pas des développeurs.
Les outils de déploiement des routeurs CISCO sont basés sur Ansible ce qui impacte les choix de langages :
python : Ansible est écrit en python. Les opérateurs de télé-
phonie investissent, aujourd’hui, sur cette technologie.
perl : langage de script historique, il est petit à petit aban-
donné
ksh ou bash : adaptés à l’automatisation de petite tâche,
ils ne sont pas faits pour développer de gros scripts

La facilité d’apprentissage

Certains langages sont plus complexes à apprendre que d’autres et cela est dû soit à des éléments de syntaxes complexes soit à des concepts plus compliqués : la syntaxe des pointeurs et la rigueur nécessaire pour bien gérer la mémoire rendent le C et le C++ plus difficiles à maîtriser que des langages avec des ramasse-miettes. Si on en croit « Interview Kickstart », les sept langages les plus simples à apprendre
sont :
• HTML
• JavaScript
• Java
• PHP
• Python
• C
• Go


Et les plus complexes sont :
• Haskell
• C++
• ASM
• Prolog
• LISP
• Rust
• Esoteric languages (comme brainfuck)


Python est l’un des plus simples à apprendre : en France il a progressivement remplacé Pascal pour l’apprentissage en classes préparatoires et désormais il fait partie des outils utilisés à partir de la classe de seconde pour enseigner l’algorithmique. Il est aussi devenu le langage des calculatrices programmables grâce à la société Numworks. Sa syntaxe est proche du langage naturel.

La communauté

La communauté est essentielle, car c’est la garantie de pouvoir trouver des outils et de l’aide en cas de problème. Une communauté importante démontre que le langage intéresse et répond à des besoins : c’est donc un signal positif. Il y a différents indicateurs qui montrent la santé d’une communauté, mais l’un de ce que je préfère est basé sur les statistiques des projets hébergés sur GitHub (la plus grosse plateforme de projets collaboratifs : plus de 128 millions de dépôts publics). Voici les volumes de pull-requests en pourcentages du volume globale (accessible sur le site : https://madnight.github.io/githut/#/pull_requests/2021/4 ). Figure 1 et 2
Il en ressort que python est le langage sur lequel il y a eu le plus d’activités sur GitHub en 2021, suivi par JavaScript puis Java. Un second indicateur, qui me semble pertinent, est le nombre de recherches de tutoriel pour apprendre le langage (via des requêtes sur Google). En effet, un langage qui n’attire plus les nouveaux développeurs est langage dont l’intérêt est en baisse et qui va devenir un langage de niche (comme Fortran ou Cobol) voir disparaître. Cet index est l’index PyPL : Figure 3
Et Python reste le langage le plus recherché : je vous l’avait dit, c’est le meilleur langage…

L’employabilité

Le monde du travail est un monde de l’offre et de la demande, pour trouver facilement un emploi il faut que le nombre de postes disponibles soit proche ou plus important que le nombre de développeurs disponibles. Pour ce point, on peut porter attention au résultat du developer survey du site codin-game (https://www.codingame.com/work/fr/codingame-developer-survey-2021/) : Figure 4

Pour le go, on se rend compte qu’il y a plus de postes que de développeurs, de même pour l’ObjectiveC, le Scala, le Swift, le Typescript ou le Rust.

Performances & écologie

Dans un domaine comme le temps réel, on a besoin d’un résultat en un temps contraint : on aura besoin d’un programme qui sera rapide/performant. Dans le domaine du calcul scientifique, comme la simulation numérique de crash-test de voiture ou le calcul de la météo du lendemain, on veut un résultat le plus rapidement possible. La vitesse d’exécution ainsi que la facilité à optimiser le code sont des critères qui
peuvent conditionner le choix d’une technologie.
Pour travailler sur de grandes quantités de données ou sur des applications embarquées, on devra maîtriser sa consommation mémoire afin d’éviter le dépassement des capacités mémoires de l’ordinateur cible. Nous traitons des problèmes scientifiques de plus en plus grands, nous manipulons de plus en plus de données, l’optimisation mémoire peut devenir une nécessité. Et malheureusement tous les langages ne permet-
tent pas une gestion fine de ces problématiques.
Si notre application doit être exécutée sur une grille de calculs H24 et 7J/7 ou sur un dispositif mobile (un téléphone par exemple) on préférera avoir une application moins énergivore :
• soit pour diminuer les coûts en électricité (maintenir les bitcoins consomment autant d’énergie électrique qu’un pays comme l’Argentine si l’on en croit les derniers rapports sur le sujet). Or le prix de l’énergie ne fait que croître ces dernières années.
• soit pour augmenter la durée entre 2 recharges de batteries pour un téléphone portable ou un drone.
À l’heure du réchauffement climatique et d’une énergie de plus en plus chère, réduire son empreinte carbone est à la fois un choix économique et moral.
Cette problématique a été abordée par un groupe de chercheurs portugais en 2017 dans le papier « Energy Efficiency across Programming Languages / How Do Energy, Time, and Memory Relate? ». Voici un classement des langages en fonctions des 3 critères : Figure 5
Mais souvent, le besoin est une combinaison de deux de ces critères. Les chercheurs ont alors effectués un tri selon des combinaisons de critères en employant le principe de Pareto : Figure 6
Globalement, on retrouve souvent les mêmes langages dans les 6 langages les plus efficaces : C, C++, rust, go, Pascal et Fortran…

CONCLUSION

Comme a dit Abraham Marslow : « Si le seul outil que l’on a sous la main est un marteau, alors tous les problèmes finissent par ressembler à des clous ». Appliqué à l’informatique cela nous donne : les langages que je connais conditionnent ma capacité à résoudre des problèmes de manière efficace.
Sans programmation orientée objet, je ne pourrais pas créer facilement une application comme un modeleur géométrique 3D. En conclusion, aucun langage n’est parfait et la plupart ne couvrent pas tous les besoins : certains langages sont adaptés à certaines classes de problèmes et inadaptés à d’autres. Baser son avenir sur une combinaison de plusieurs langages me semble plus sûr même si cela nécessite un investissement plus important.

Expertise Design & Code

$

Python, Java, C++, C# et Front-End

Découvrez nos formations

$

Parcourir le catalogue

Boostez votre carrière !

$

Nos offres pour Développeurs

Tous les mois recevez nos derniers articles !

Try X4B now !

Découvrez gratuitement XComponent for Business. Notre solution logicielle BizDevOps !

Écrit par Philippe Boulanger

0 Comments

Submit a Comment

Votre adresse e-mail ne sera pas publiée.