BT

Diffuser les Connaissances et l'Innovation dans le Développement Logiciel d'Entreprise

Contribuez

Sujets

Sélectionner votre région

Accueil InfoQ Actualités Clojure, CoffeScript et Haskell sont les langages généralistes les plus expressifs

Clojure, CoffeScript et Haskell sont les langages généralistes les plus expressifs

Favoris

Les langages généralistes les plus expressifs sont Clojure, CoffeeScript et Haskell. Telle est la conclusion d'une étude qui a utilisée comme unité de mesure de l'expressivité le nombre de lignes de code modifiées à chaque Commit (LoC/commit).

Cette étude conduite par Donnie Berkholz, un chercheur de la société RedMonk, a mesuré l'expressivité de différents langages de programmation. Les données utilisées proviennent de Ohlol, un référentiel qui suit l'évolution de plus de 500 000 projets Open Source écris dans une centaine de langages sur une période couvrant environ 20 ans.

Berkholz a supposé que les "_Commits_ sont l'ajout d'un unique élément conceptuel" pour mesurer l'expressivité comme le nombre de lignes de code impactées à chaque changement (LoC/commit). Sous cette hypothèse, les résultats ne portent pas sur la maintenabilité ou la productivité, et ne disent rien non plus de la lisibilité du code ou du temps qu'il a fallu pour l'écrire.

Voici le graphique qui montre l'expressivité d'une cinquantaine de langages, chacun est colorié suivant son degré de popularité relevé par le classement RedMonks publié plus tôt cet année : rouge - langages les plus populaires, bleue – 2ième rang en popularité, et noir – 3ième rang, les moins populaires (cliquer pour agrandir).

Expressivité

Pour chaque langage, la mesure du LoC/commit est distribuée suivant un intervalle de valeurs car l'étude couvre différents projets. Les langages sont classés suivant leur médiane - la ligne noire à l'intérieur d'une boîte - qui partage l’ensemble des valeurs d’expressivité en deux parties égales : d’un côté la moitié des projets qui ont une mesure inférieure à la médiane, de l’autre côté l’autre moitié des projets avec une valeur supérieure. Le haut et le bas de la boîte délimitent le quart des projets qui sont respectivement au-dessus ou en-dessous de cette limite tandis que les moustaches mènent aux 1er et 9ième déciles.

Les conclusions de Berkholz sont :

  • Les langages les moins populaires sont fortement biaisés vers les grandes valeurs d'expressivité.
  • Les langages fonctionnels tendent à être très expressifs.
  • Les langages dédiés sont biaisés pour les hautes valeurs d'expressivité.
  • Un langage compilé n'implique pas avoir une faible expressivité.
  • CoffeeScript (#6) apparaît nettement plus expressif que JavaScript (#51), il est en fait un des meilleurs.
  • Clojure (#7) est le plus expressif des variants de Lisp.
  • Go (#24) n'est pas exceptionnellement expressif alors qu'il est de plus en plus à la mode. … Mais cela ne l'empêche pas d'être parmi les langages les plus populaires, une personne qui n'a pas eu d'expérience avec un des langages populaires pourrait donc certainement voir une amélioration en essayant Go.

La première conclusion pose la question à savoir pourquoi les langages très expressifs ne deviennent pas populaires ? Leur concision les rend t-il difficile d'accès pour le programmeur moyen ? Y a t-il d'autres raisons ?

Berkholz propose un deuxième graphique dans lequel il classe les langages suivant leur cohérence d'expressivité, mesurée comme la hauteur de la boîte (l'écart interquartile) :

Cohérence d'expressivité

Berkholz observe :

  • Les langages les plus populaires ressortent plus dans ce graphique.
  • Ils sont remarquablement consistants quelque soit leur niveau d'expressivité.
  • Cela donne à penser que leur caractéristique première est plus la prévisibilité de leur comportement que la productivité.
  • Les langages les moins populaires donnent une plus faible impression.
  • Java s'affiche comme le langage le plus "_Enterprise_" (C, C++, Java).
  • CoffeeScript est le premier dans le classement avec un écart interquartile de seulement 23 LoC/commit par rapport à Clojure, quatrième, avec 51 LoC/commit.

Berkholz conclue que Clojure, CoffeeScript et Haskell sont les langages généralistes les plus expressifs. Une autre étude menée par David R. MacIver vient appuyer cette conclusion. Elle porte sur les interviews de 2576 programmeurs en leur demandant quelle est le meilleur langage de programmation pour résoudre un problème particulier, plutôt qu'en leur posant la question quel est le meilleur langage (principe de Hammer). Pour Maclver, les langages les plus expressifs sont Haskell, Clojure et Scala, tandis que les moins expressifs sont C, PHP et en dernier TCL. Son étude n'inclue pas CoffeeScript.

Le poste de Berkholz a déclenché un grand nombre de commentaires à la fois sur son poste original, Hacker News, et Twitter. Beaucoup considère que la mesure LoC/commit ne représente pas exactement l'expressivité d'un langage, l'expressivité devant être envisagée comme la lisibilité du code et la maintenabilité.

Berkholz insiste sur le fait que son étude n'a pas pour objet la lisibilité et la maintenabilité, mais a "plutôt pour sujet l'état du code en gestion de configuration, les pratiques de développement en cours d'utilisation, et le niveau de bogues potentiellement présent (en corrélant le nombre de bogues et le LoC)”. Il explique plus en détail dans un poste distinct pourquoi le LoC/commit mesure l'expressivité.

Evaluer cet article

Pertinence
Style

Contenu Éducatif

BT