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 :
- C'est quoi, qui est le plus utilisé : PHP ou Java ?
- Et le C# ? Faudrait pas faire du C# ?
- Java, pédagogiquement, c'est bien. Mais les entreprises, elles l'utilise vraiment ?
- Le C, y a encore des gens qui en font ?
- Il paraît que Cobol, maintenant, c'est vachement recherché. On devrait pas faire du Cobol ?
- Et Python ? On peut trouver du boulot sans Python ?
...
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 :
- Les recherches faites dans les moteurs de recherche
- Les discussions dans les forums (Stackoverflow)
- Les offres d'emploi
- Les dépôts (GitHub)
Bien sûr, chacun de ces critères a des biais :
- Si beaucoup de recherche dans les moteurs de recherche portent sur le langage XYZ, c'est que XYZ est très utilisé, ou que XYZ pose beaucoup de problème, avec peu de réponses car personne n'y passe beaucoup de temps ?
- Si beaucoup d'offres concernent le langage XYZ, c'est parce que XYZ est très populaire, ou bien parce qu'il est tellement peu connu qu'il est difficile de trouver des développeurs dans le langage en question, et que chaque poste le concernant nécessite de multiplier les offres ?
- Si personne ne parle du langage XYZ dans Stackoverflow, c'est parce que personne ne l'utilise, ou bien parce que tout le monde le maîtrise parfaitement ?
- Les recherches faites avec comme mot clé "Java" ou "Python" via un moteur de recherche, ça se trace bien. Mais... vous avez déjà essayé de lancer une recherche sur "C" ?
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
Source | Langage 1 | Langage 2 | Langage 3 | Langage 4 | Langage 5 |
GitHut | javascript | java | Python | CSS | PHP |
IEEE Spectrum | Python | java | C# | PHP | javascript |
Stackoverflow | javascript | SQL | java | C# | Python |
UserSnap | javascript | Python | java | TypeScript | PHP |
Tiobe | java | C | Python | C++ | Visual Basic .NET |
Indeed via stackify | java | javascript | C# | Python | C++ |
PYPL | Python | java | javascript | PHP | C# |
RedMonk | javascript | java | Python | PHP | C# |
TrendySkills | java | javascript | C# | Python | PHP |
Adzuna | java | sql | javascript | PHP | Python |
| | | | | |
3b. Langages de programmation uniquement
Source | Langage 1 | Langage 2 | Langage 3 | Langage 4 | Langage 5 |
GitHut | javascript | java | Python | PHP | Ruby |
IEEE Spectrum | Python | java | C# | PHP | javascript |
Stackoverflow | javascript | java | C# | Python | PHP |
UserSnap | javascript | Python | java | TypeScript | PHP |
Tiobe | java | C | Python | C++ | Visual Basic .NET |
Indeed via stackify | java | javascript | C# | Python | C++ |
PYPL | Python | java | javascript | PHP | C# |
RedMonk | javascript | java | Python | PHP | C# |
TrendySkills | java | javascript | C# | Python | PHP |
Adzuna | java | javascript | PHP | Python | C# |
| | | | | |
4. Petite analyse des résultats
Globalement, 5 langages reviennent quasiment tout le temps :
- Java, JavaScript et Python
- 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 :
- Une bibliothèque standardisée très riche
- La javadoc : un des points forts de la démocratisation de Java
- Un langage très propre (un peu trop verbeux par conséquent au goût de certains, mais c'est certainement le prix à payer)
- Un langage qui continue d'évoluer, mais de manière réfléchie
- La polyvalence d'un langage reposant sur la notion de machine virtuelle
- 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 :
- C'est un langage de plus en plus utilisé en administration système, car il permet d'écrire des scripts systèmes puissants aussi simplement que Perl, mais avec une structuration plus forte et plus agréable quand les choses se compliquent ;
- C'est un langage qui a vu se multiplier les bibiothèques scientifiques, cequi l'a ammené à détroner Fortran, la puissance grandissante des machines masquant sa relative lenteur. Et puis, une bibliothèque bien écrite et efficace dans un langage "relativement lent" est toujours préférable à un code mal écrit et inefficace dans un langage "relativement rapide".
- Son typage faible et sa forte "tolérance aux fautes" en font un langage auquel peuvent rapidement se mettre des non-informaticiens et de mauvais informaticiens.
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