Utilisation des "principaux" langages informatiques

1. Préambule

Voici une liste de questions souvent mises sur le tapis, que ce soit par des étudiants ou par des collègues :

J'ai évidemment plein de réponses à donner à ces différentes questions (et même à d'autres), mais il s'agit en général d'avis très subjectifs, provenant soit de faits supposés, soit d'une mauvaise foi assumée. Mais j'ai fini par me dire qu'une réponse plus objective pouvait s'avérer nécessaire. C'est donc le but de cette page.

Dans la deuxième partie, je commencerai par citer mes sources. Tout d'abord, cela appuiera mon argumentaire, mais cela permettra aussi à tout un chacun de se maintenir à jour car je sais dores-et-déjà que je n'aurai pas le temps de maintenir à jour l'analyse que je vais faire derrière. En effet, après un recensement brut des informations présenté dans la troisième partie, j'essaie, en quatrième partie, de tirer quelques grandes conclusions de tout cela. Ces conclusions seront forcément partiellement subjectives et dépendantes de la date à laquelle elles ont été faites. Libre à vous ensuite de tirer vos propres conclusions.

2. Les sources

Critères utilisés

J'ai essayé de parcourir la toile pour rechercher tous les classements que je pouvais trouver. Ils sont détaillés dans la partie suivante. Les critères utiisés varient en fonction des sources (certaines sont d'ailleurs multi-critères). Cependant, ils sont de types assez restreints. Voici les principaux :

Bien sûr, chacun de ces critères a des biais :

Mais bon, on peut espérer qu'en multipliant les sources et les critères, on finit par avoir une image assez fidèle de la "réalité".

La liste

Voici la liste des sources que j'ai trouvées parlant de l'utilisation des principaux langages de programmation. Il faut tout d'abord savoir que ces sources utilisent des critères différents. Par ailleurs, certaines ne vont s'intéresser qu'aux langages de programmation à proprement parler, d'autres parleront également de langages de requêtes tels que SQL, quand certaines citeront aussi des langages purement déclaratifs comme HTML, XML ou encore CSS. Par ailleurs, d'autres sites ne mentionneront par exemple que l'utilisation des langages "pour le web".

GitHut
Il s'agit de statiques faites sur les dépôts github. Du coup, bien sûr, il n'est question que de vrais langages de programmation.
IEEE Spectrum
Il s'agit d'un classement reposant sur une dizaine de critères fournis par une dizaine de sources différentes. C'est donc déjà une bonne compilation du reste. Ce classement prend en compte notamment les dépôts Gitbug, les requêtes google, les échanges sur Stackoverflow, les offres d'emplois, etc.
Stackoverflow
Statistiques annuelles sur l'utilisation du forum Stackoverflow
Usersnap
Entreprise développant un outil de Bug Tracking, UserSnap a lancé son propre sondage sur les langages "à apprendre" en 2017
Tiobe
Un index mis à jour mensuellement évaluant la popularité des langages, notamment via les requêtes faites dans les moteurs de recherche.
Indeed
Indeed est un moteur de recherche d'offres d'emploi. Une recherche sur les différents langages faite par stackify permet d'avoir une idée des langages recherchés par les entreprises.
PYPL (PopularitY of Programming Language)
Classement des langages de programmation en utilisant le nombre de requêtes sur les tutoriels faites dans google.
RedMonk
Redmonk établit un classement reposant sur StackOverflow et GitHub
Trendy Skills
Statiques sur les offres d'emploi entre 2 dates dans 14 pays. Les données que j'utilise ici sont celles pour toute l'année en cours.
Adjuna, relayé par Presse-Citron
Adzuna est un site d'offres d'emploi ; il s'agit d'un classement effectué sur leurs offres en février 2018.

3. Résumé brut (septembre 2018)

3a. Tous langages confondus

SourceLangage 1Langage 2Langage 3Langage 4Langage 5
GitHutjavascriptjavaPythonCSSPHP
IEEE SpectrumPythonjavaC#PHPjavascript
StackoverflowjavascriptSQLjavaC#Python
UserSnapjavascriptPythonjavaTypeScriptPHP
TiobejavaCPythonC++Visual Basic .NET
Indeed via stackifyjavajavascriptC#PythonC++
PYPLPythonjavajavascriptPHPC#
RedMonkjavascriptjavaPythonPHPC#
TrendySkillsjavajavascriptC#PythonPHP
AdzunajavasqljavascriptPHPPython

3b. Langages de programmation uniquement

SourceLangage 1Langage 2Langage 3Langage 4Langage 5
GitHutjavascriptjavaPythonPHPRuby
IEEE SpectrumPythonjavaC#PHPjavascript
StackoverflowjavascriptjavaC#PythonPHP
UserSnapjavascriptPythonjavaTypeScriptPHP
TiobejavaCPythonC++Visual Basic .NET
Indeed via stackifyjavajavascriptC#PythonC++
PYPLPythonjavajavascriptPHPC#
RedMonkjavascriptjavaPythonPHPC#
TrendySkillsjavajavascriptC#PythonPHP
AdzunajavajavascriptPHPPythonC#

4. Petite analyse des résultats

Globalement, 5 langages reviennent quasiment tout le temps :

  1. Java, JavaScript et Python
  2. PHP, C#

C et C++ sont quasi absents. Il faut dire qu'ils se font souvent "concurrence" dans les classements, mais si on additionne leurs scores, on retrouve ces langages encore très fréquemment. Par ailleurs, C étant un langage qui n'évolue pas, il est normal qu'il apparaisse rarement dans les requêtes lancées via les moteurs de recherche (un des critères à la base de nombreux classements). De mê il n'est pas évident de recenser les requêtes portant sur un langage dont le nom est réduit à une seule lettre.

Les nouveaux langages (Go, Ruby, Kotlin, Closure, Scala, Swift etc.) n'arrivent pas à émerger dans ces classements : ils se font certainement un peu concurrence. Il faudra attendre encore un peu pour voir si un ou plusieurs sortent du lot.

L'importance des applications Web se fait sentir : Javascript et PHP, notamment, ne sont utilisés que dans ce cadre. Mais il s'agit aussi d'un domaine où l'on retrouve beaucoup Java et C#.

Concernant le développement des sites web, d'ailleurs, un article intéressant, mais qui ne cite pas ses sources, laisse entendre que si les 3/4 des sites sont développés en PHP, c'est Java qui domine les sites à haut trafic. Des données trouvées sur wikipédia semblent confirmer que PHP est assez rare sur les sites à haut trafic, où l'on retrouve par contre très fréquemment Java, mais aussi C++.

Commentaires plus personnels

La place de Java
La domination de Java s'explique notamment par la polyvalence du langage. C'est LE langage prédominant pour le développement mobile, C'est un langage très bien adapté au développement web, et c'est également un langage adapté aux applications clients lourds classiques. Par ailleurs, Java a plusieurs qualités qui l'ont rapidement amené à la place qu'il occupe maintenant :
La place de Javascript
La domination de Javascript s'explique par le fait que ce fut longtemps le seul langage pour le web "côté client", qu'il reste indispensable pour du "Web 2.0" et pour l'utilisation d'Ajax rendant les sites web plus réactifs, plus rapides, moins lourds. Javascript est clairement un mauvais langage. Mais dans son domaine, il n'a pas de concurrent, et reste donc indispensable. Et puis avec l'apparition de l'utilisation de Javascript côté serveur, le paradigme Write Once, Run Anywhere a activé encore plus la motivation des développeurs pour Javascript (le même code peut être utilisé pour valider les données d'un formulaire côté client et côté serveur).
La place de Python
La domination de Python a pour moi 3 causes principales : Je ne qualifierais pas Python de "mauvais langage", mais il est malheureusement souvent utilisé "salement". Il faudrait en effet que ce langage ne soit utilisé que par des informaticiens expérimentés, qui savent utiliser proprement un langage permettant de faire "très sale" (un peu comme quand on fait du C, finalement...).
La place de PHP
La place importante de PHP, tout comme pour Python, a entre autre pour moi comme origine la "tolérance aux fautes" du langage, permettant à "tout le monde" de développer des sites web. Du coup, les CMS reposant sur ce langage, permettant une transition douce du "je ne programme pas" à "je programme", se sont très rapidement développés, et ce fut l'effet boule de neige. Fort heureusement, des frameworks MVC sont apparus pour essayer de limiter un peu les dégats. Ce n'est pas la panacée, mais c'est mieux que rien. Les différences de salaire sont d'ailleurs nettes entre un développeur PHP maîtrisant un framework et les autres. Quoi qu'il en soit, PHP reste un mauvais langage. Il suffit juste de réfléchir 2 secondes au "include" pour s'en convaincre...
La place de C#
La place relativement importante de C# est à mon avis directement liée au carcan dans lequel Microsoft essaie d'enfermer les afficionados de son système d'exploitation. Cependant, C# reste encore assez loin derrière les autres langages pré-cités.

Annexes : liens divers