mardi 29 mai 2012

L'index TIOBE en question ?



L'index TIOBE se propose de mesurer la popularité des langages de programmation auprès des développeurs.

Depuis plusieurs années, Java et C se partage la tête du classement.

Des langages ont fait leur apparition dans le classement comme Objective C, tandis que d'autres sont sortis du classement comme Delphi.

Récemment, Java a perdu sa place de leader pour laisser la place à C comme à plusieurs reprises dans l'histoire de l'index.

On constate également d'autres mouvements de baisse ou de hausse comme la baisse de PHP ou la hausse d'Objective C.

Des voix s'élèvent pour contester ou modérer la pertinence de ce classement.

On pourra citer notamment un des leaders de la communauté PHP et PDG de la société Zend Technologies qui s'est élevé contre le résultat du dernier classement qui montre encore une baisse de PHP.

TIOBE répond en disant que les plaintes viennent de ceux dont les technologies baissent dans le classement, et explique que son index est "scientifique".

Un peu court et surtout un peu facile !

Accordons à TIOBE le bénéfice du doute.

La méthodologie TIOBE


Elle est décrite sur le site de TIOBE.

Nous pouvons constater que TIOBE se base les résultats de recherche des moteurs suivants :
- Google
- Yahoo
- Baidu
- Bing
- Blogger
- ...

Il pondère ensuite très fortement les résultats obtenus en fonction des moteurs  : Google compte pour 30% tandis que Yahoo compte pour 3% et Baidu pour 6%.

Soulignons qu'aucune explication (scientifique ou non) n'est donnée sur ces pondérations.

Ensuite, la requête de recherche qui est jouée sur les moteurs de recherche pré-cités consiste à utiliser les mots clefs suivants : <langage> programming

Pour Java cela donne java programming.

Grâce à une formule mathématique, TIOBE produit alors une note à partir du nombre de hits, des pondérations, d'un facteur dit de confiance, ...

TIOBE mesure ainsi une offre disponible pour chaque langage de programmation qui serait alors le pendant direct d'une demande donc d'une popularité.

Après un échange avec TIOBE, j'ai pu en savoir plus sur la philosophie de cet index et les postulats qui le soutiennent.

TIOBE considère les langages comme étant des objets d'étude aux propriétés "physiques" identiques.

Deux postulats sont mis en oeuvre.

P1 : une requête simple et unique est suffisante pour évaluer tous les langages de programmation
P2 : la fraction de sites de fait exclus par cette requête simple est identique pour tous les langages de programmation

Pour TIOBE, les langages de programmation sont un peu comme des icebergs.

La requête mesure la partie visible c'est à dire l'offre web.

La partie cachée, c'est à dire non couverte par la requête de recherche que l'on pourrait nommer écosystème associé, est une fraction de la partie visible : cette fraction est supposée la même pour tous les langages de programmation.

TIOBE ne donne aucune démonstration de l'exactitude des postulats retenus.

Les personnes derrière TIOBE sont très certainement des honnêtes gens mais aucun postulat sur lequel cet index est basé n'ait démontré scientifiquement.

TIOBE n'est donc en aucun cas une méthode scientifique bien qu'elle utilise des outils mathématiques.

Cependant, on peut faire de la mauvaise science avec des mathématiques impeccables.

Un problème avec Java ?


Considérons les langages de programmation Java et PL/SQL.

Coder en Java c'est certes manipuler le langage en lui même mais c'est aussi utiliser une myriade d'API issue des kits de développement ou de frameworks adressant telle ou telle problématique.

Etant moi même support sur un méta-framework JEE maison depuis 9 ans, je constate tous les jours que la majorité des questions posées par les développeurs concernent Hibernate, JSF, notre framework,etc ... mais quasiment jamais sur le langage Java.

La part des questions dédiée au langage Java est extrêmement faible : la majorité des questions que le développeur pose au web concernent des APIs, les exceptions remontées, ... et non le langage de programmation.

Dans notre pratique, le questionnement autour des APIs est infiniment plus grand que celui autour du langage, à moins d'être un débutant complet.

Si on compare maintenant Java avec le langage PL/SQL, qu'en est-il ?

PL/SQL est un langage de programmation : aucun doute là dessus, mais ce n'est pas une plateforme, pas plus que des centaines de frameworks écrits en PL/SQL n'existent.

Coder en PL/SQL c'est surtout manipuler le langage PL/SQL.

Le langage PL/SQL en lui même est suffisant pour résoudre la majorité des problèmes rencontrés contrairement au langage Java.

Dans ce cas les questions posées au web concerneront essentiellement le langage et encore seront-elles posées par des débutants ou développeurs occasionnels.

Ce raisonnement pourrait être fait pour d'autres langages aux écosystèmes très développés ou pas.

TIOBE ne tient aucun compte de cette réalité car il mets sur le même pied des langages dont l'usage est très différent.

Certains langages ont été conçu pour certains usages comme PHP pour dynamiser les pages HTML, d'autres comme Java, C, C++ sont ultra généralistes et permettent d'écrire tout type d'application : moteur de base de données, serveur d'application, jeux, site web, ...

Il me semble que le postulat P2 de TIOBE est faux : les langages sont différents notamment de par leurs champs d'application.

Pour un nouvel index


Il me paraît utile de proposer un autre index plus proche de l'objectif de TIOBE.

En effet, TIOBE est repris par des médias professionnels du secteur IT souvent sans les précautions d'usages.

Pourquoi ne pas considérer l'activité des forges de développements Open Source pour estimer la popularité des langages de programmation ?

Après tout, les développeurs Open Source sont souvent des développeurs professionnels et  les solutions Open Source ont envahi peu ou prou les entreprises, certaines rivalisants avec leurs équivalents propriétaires.

Enfin, peut-on imaginer une seconde que le nombre de projets Open Source n'ait rien à voir avec la popularité du langage utilisé ?

Personnellement, je pense que plus le nombre de projets Open Source est élevé pour un langage plus il est populaire.

Pour estimer la partie cachée de la popularité du langage, il faut poser le postulat suivant  : pour une population de développeur donnée, il y a toujours une fraction de développeurs Open Source, la même quelque ce que soit le langage de programmation.

Ce postulat n'est pas démontré scientifiquement, il repose sur une assertion qui paraît raisonnable : plus un langage est populaire plus il génère de projets Open Source.

Considérons par exemple la forge SourceForge qui permet facilement d'avoir le décompte des projets Open Source par langage.

Sourceforge donne le classement suivant avec le tag Recently updated :
- Java : 10 857 projets
- C++ :  9 566 projets
- C :   6 665 projets
- PHP :  5 031 projets
- etc ...

On peut constater que ce classement n'a rien à voir avec celui de TIOBE.

J'ai choisi Sourceforge car c'est une forge historique et probablement la plus importante.

Github et Google Code devraient par exemple être considérées, elles donneraient là aussi un classement bien différent.

En combinant les métriques produites à partir des forges les plus importantes pour le développement Open Source, l'index donnerait un classement probablement sensiblement différent de celui de TIOBE.

Conclusion


Il me semble que TIOBE devrait se remettre en question notamment à cause du décalage important entre ses résultats et d'autres évaluations pertinentes.

Cet index est à prendre avec des pincettes : c'est un indicateur partiel intéressant mais il ne peut prétendre être scientifique ou le seul valable pour mesurer la popularité d'un langage de programmation.









Contrat Creative Commons
the jee architect cookbook by Olivier SCHMITT est mis à disposition selon les termes de la licence Creative Commons Paternité - Pas d'Utilisation Commerciale - Pas de Modification 3.0 Unported.





Aucun commentaire:

Enregistrer un commentaire