Developpez.com

Télécharger gratuitement le magazine des développeurs, le bimestriel des développeurs avec une sélection des meilleurs tutoriels

Quel est l'effet du langage de programmation sur la qualité du logiciel ?
Une étude tente de clarifier la situation

Le , par Hinault Romaric, Responsable .NET
Si l’on posait la question à savoir « quel est le meilleur langage de programmation ? », ou « pourquoi avez-vous optez pour ce langage de programmation ? », on se retrouvera probablement avec un long débat houleux.

D’aucuns affirmeront que le langage qu’ils utilisent permet d’obtenir un code de meilleure qualité, plus lisible et facilement maintenable. D’autres que leur langage offre plus de sécurité, permet d’avoir moins de bugs, etc. Bref, chacun sortira des arguments pour défendre avec conviction le langage de programmation qu’il utilise. Au final, on se rendra probablement compte que le débat est beaucoup plus religieux que scientifique.

Pourtant, les différences au niveau de la qualité de code entre les langages de programmation sont assez petites. C’est la conclusion d’une étude réalisée par des informaticiens de l’université de Californie, qui sera présentée ce mois lors d’un colloque à Hong Kong sur le génie logiciel.

L’étude a été faite en utilisant un ensemble très vaste de données disponibles sur GitHub. Les chercheurs ont analysé 729 projets, environ 80 millions de lignes de code de 29 000 auteurs et 1,7 million de commits, dans 17 langages de programmation.

Au vu de la grande taille de l’échantillon, les chercheurs ont utilisé une approche de « méthodes mixtes », combinant un modèle de régression multiple avec l’analyse de texte, le regroupement et la visualisation.

Ils ont constaté, par exemple, que le typage fort est légèrement meilleur que le typage faible. Que pour les langages fonctionnels, le typage statique était légèrement mieux que le typage dynamique.

En analysant les erreurs génériques en programmation, ceux-ci ont constaté une domination des fautes de frappe, des erreurs de type, des erreurs de compilation, d’initialisation des données, etc. Ces erreurs représentaient environ 80%, et le reste était des erreurs de manipulation de mémoire, des erreurs algorithmiques et des bugs de concurrence.

Le taux d’erreurs était plus élevé dans les langages comme C, C++, JavaScript, Objective-C et Php, et moins élevé dans les langages Clojure, Haskell, Ruby, Scala et TypeScript. Cela a permis à ceux-ci de conclure que les langages de programmation fonctionnels pourraient être « mieux » que les langages de programmation procéduraux.

Cependant, ces effets modestes découlant de la conception du langage de programmation sont rapidement dominés par des facteurs tels que la taille du projet, la taille de l’équipe, etc. rendant leur impact moins significatif.

Au final, la qualité d’une application serait plus liée au facteur humain, qu’au langage de programmation utilisé. Quel que soit le langage utilisé, ce sont les aptitudes de développeurs derrière le code qui a été écrit et la taille du projet qui permettent de faire la différence.

Source : L'étude au format PDF

Et vous ?

Qu’en pensez-vous ? Pour vous, le langage de programmation a-t-il un effet important sur la qualité du code ?


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de macslan macslan - Membre éclairé http://www.developpez.com
le 06/11/2014 à 15:42
Comme le dis si bien mon père rien ne sert d'avoir une Ferrari si c'est un âne qui conduit
Avatar de Darkzinus Darkzinus - Expert éminent http://www.developpez.com
le 06/11/2014 à 15:43
Rien de neuf sous le soleil en somme
Avatar de Juda-Priest Juda-Priest - Membre actif http://www.developpez.com
le 06/11/2014 à 15:48
Au final, la qualité d’une application serait plus liée au facteur humain, qu’au langage de programmation utilisé. Quel que soit le langage utilisé, ce sont les aptitudes de développeurs derrière le code qui a été écrit et la taille du projet qui permettent de faire la différence.

Conclusion au top
Avatar de MidoCESI MidoCESI - Membre à l'essai http://www.developpez.com
le 06/11/2014 à 15:49
Au final, la qualité d’une application serait plus liée au facteur humain, qu’au langage de programmation utilisé. Quel que soit le langage utilisé, ce sont les aptitudes de développeurs derrière le code qui a été écrit et la taille du projet qui permettent de faire la différence.

Voilà, tu as bien résumé , je trouve.
Avatar de deusyss deusyss - Rédacteur/Modérateur http://www.developpez.com
le 06/11/2014 à 16:16
Étude intéressante. Je regrette juste qu'elle ne soit pas assez étendu pour que tout le monde s'y retrouve.

Par contre la conclusion est on ne peux plus parfaite je trouve. Même si on prenait un langage parfait, mettre un néophyte derrière n'apporterait que du code de mauvaise qualité.
Avatar de Orhleil Orhleil - Membre habitué http://www.developpez.com
le 06/11/2014 à 16:20
Au final, la qualité d’une application serait plus liée au facteur humain, qu’au langage de programmation utilisé. Quel que soit le langage utilisé, ce sont les aptitudes de développeurs derrière le code qui a été écrit et la taille du projet qui permettent de faire la différence.

Hop, moi aussi je m'aligne sur cette conclusion =)

Ceci étant dit, la question posée par les chercheurs est assez légitime. Et après la conclusion citée juste au-dessus je m'interroge sincèrement sur les limites que nous pouvons avoir en matière de qualité de code. Est-il théoriquement possible de créer un langage si bien organisé que les erreurs sont impossibles ? La méthode B est supposée s'en rapprocher mais au final si le concepteur omet ne serait-ce qu'un détail le code comportera des failles.

Je crois que globalement, et c'est d'ailleurs la méthodologie appliquée aujourd'hui, on se moque un peu de la qualité du code dans la majorité des cas.
Quand on regarde bien la plupart des programmes n'ont soit aucune soit très peu de contraintes à respecter (soit délai, soit espace mémoire, soit failles de sécurité critiques, le plus souvent). Quand j'utilise mon casque audio bluetooth, il fonctionne sur un programme qui doit être réactif et assez peu gourmand en mémoire, mais la sécurité logicielle de l'engin je m'en tamponne royalement par exemple. Il suffit de savoir quels sont les objectifs clés que l'on cherche à atteindre sans vouloir pour autant décrocher la Lune, et si on est pas trop mauvais on arrive à coder un truc qui fait le bon taff dans des critères de qualité acceptables, et c'est bien là l'essentiel.
Avatar de Traroth2 Traroth2 - Expert éminent http://www.developpez.com
le 06/11/2014 à 17:08
Conclure que la conception du langage n'a au final que peu d'impact sur les bugs, ça veut donc dire que tous ces efforts pour créer de nouveaux langages n'ont finalement pas apporté grand chose, si je comprends bien...

Ca pousse à s'interroger : quand on conçoit un nouveau langage, quels bénéfices est-ce qu'on en attend, au juste ?

Des langages comme Scala, Go ou TypeScript ont été présentés comme révolutionnaires, à leur époque. Cette étude semble montrer que ça ne change pas grand chose, finalement...
Avatar de el_slapper el_slapper - Expert éminent sénior http://www.developpez.com
le 06/11/2014 à 17:24
L'interêt d'un nouveau langage est de coller à un besoin précis. COBOL, C ou LISP pour faire ce que fait Javascript, bofbofbof.
Avatar de yahiko yahiko - Rédacteur/Modérateur http://www.developpez.com
le 06/11/2014 à 17:36
Citation Envoyé par Traroth2  Voir le message
Conclure que la conception du langage n'a au final que peu d'impact sur les bugs, ça veut donc dire que tous ces efforts pour créer de nouveaux langages n'ont finalement pas apporté grand chose, si je comprends bien...

Ca pousse à s'interroger : quand on conçoit un nouveau langage, quels bénéfices est-ce qu'on en attend, au juste ?

Des langages comme Scala, Go ou TypeScript ont été présentés comme révolutionnaires, à leur époque. Cette étude semble montrer que ça ne change pas grand chose, finalement...

Un nouveau langage est surtout motivé par la capacité à être plus productif sur un domaine, pas vraiment par la qualité du code.
Si on a majoritairement abandonné la programmation en assembleur depuis belle lurette, c'est d'abord parce que programmer en assembleur est beaucoup moins productif que de programmer dans des langages dits de plus haut niveau.
Avatar de NSKis NSKis - Membre expérimenté http://www.developpez.com
le 06/11/2014 à 19:20
Citation Envoyé par Hinault Romaric  Voir le message

L’étude a été faite en utilisant un ensemble très vaste de données disponibles sur GitHub. Les chercheurs ont analysé 729 projets, environ 80 millions de lignes de code de 29 000 auteurs et 1,7 million de commits, dans 17 langages de programmation.

...

En analysant les erreurs génériques en programmation, ceux-ci ont constaté une domination des fautes de frappe, des erreurs de type, des erreurs de compilation, d’initialisation des données, etc. Ces erreurs représentaient environ 80%, et le reste était des erreurs de manipulation de mémoire, des erreurs algorithmiques et des bugs de concurrence.


Pour résumer la démarche, ils ont pris des lignes de code de différents langages et ont comptabilisé les erreurs de programmation?

Pour que leur travail soit sérieux, ils ont donc détecté ces erreurs de manière exhaustive et complète.

De sacrés champions! Ils devraient plutôt se consacrer au développement!!! Vous imaginez la qualité de leur code? Une vraie merveille!

Ah moins que...
Offres d'emploi IT
Expert Business Analyst EDI
non renseigné - Provence Alpes Côte d'Azur - Marseille (13000)
Directeur technique et ingénierie h/f
Florian Mantione Institut - Languedoc Roussillon - Montpellier (34000)
Développeur dotnet h/f
Atos - Lorraine - Metz (57000)

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique Accueil