Developpez.com

Le Club des Développeurs et IT Pro

Quels sont les mots les plus utilisés dans les langages

JavaScript, CSS, HTML, PHP, Ruby, C++, C#, Scala, Go, Python, Perl, Java, Perl, Lua et SQL ?

Le 2017-01-19 13:07:38, par Michael Guilloux, Chroniqueur Actualités
Chaque langage a une identité qui peut être distinguée visuellement à la lecture d’un bout de code. En allant sur cette base, un développeur a pris soin d’analyser environ 2 To de code open source disponible sur GitHub. L’objectif était de voir quels sont les mots les plus utilisés pour différents langages de programmation.

Il s’est basé sur environ 3 millions de dépôts GitHub entre mi et fin 2016, et a appliqué certaines contraintes dans sa méthode d’extraction des mots, de sorte à éliminer les bouts de code non écrits par un humain. Les ponctuations, les opérateurs et les nombres sont ignorés. Avec sa méthode, il essaie également d’ignorer les lignes de code qui font référence à des termes de licences, en détectant les mots comme « license » ou « noninfringement ». La comptabilisation des mots est également sensible aux majuscules et minuscules. Plus de détails sur la méthode sont disponibles sur GitHub.

Cela dit, on a les résultats suivants, donnant les mots les plus utilisés pour différents langages, ainsi que le nombre d'occurrences associé.

Fichiers .js : JavaScript
this (1er ; 177,4 millions)
function (2e ; 134,2 millions)
if (3e ; 127,7 millions)
var (4e ; 122,4 millions)
return (5e ; 100,4 millions)

Le top 20 est complété successivement par : the, i, a, to, value, else, for, true, length, data, false, name, null, options, is.


Fichiers .jsx : React (JavaScript)
this (1er ; près de 497 000)
div (2e ; environ 408 000)
return (3e ; environ 316 000)
React (4e ; environ 247 000)
import (5e ; environ 225 000)

Le top 20 est complété successivement par : from, props, function, var, react, className, render, PropTypes, if, state, require, const, setState, else, false. Le mot true arrive à la 21e place.

Fichiers .css : CSS
color (1er ; 54 millions)
border (2e ; 47,3 millions)
background (3e ; 42,9 millions)
margin (4e ; 39,3 millions)
left (5e ; 37 millions)

Le top 20 est complété successivement par : width, font, top, padding, content, right, before, btn, height, bottom, none, position, 1px, webkit, ui.

Fichiers .html : HTML
class (1er ; 402,7 millions)
a (2e ; 363,4 millions)
li (3e ; 288 millions)
div (4e ; 279,9 millions)
td (5e ; 239,7 millions)

Le top 20 est complété successivement par : href, span, html, nbsp, tr, ul, p, name, script, id, code, type, text, table, TD.

Fichiers .java : Java
import (1er ; 102,7 millions)
return (2e ; 68,8 millions)
public (3e ; 63,4 millions)
if (4e ; 48,5 millions)
the (5e ; 48,1 millions)

Dans la suite du top 20, nous avons dans l'ordre : org, String, this, new, null, int, java, void, i, Override, com, final, private, util, a.

Fichiers .py : Python
self (1er ; 89,3 millions)
if (2e ; 28,9 millions)
def (3e ; 28 millions)
return (4e ; 23 millions)
import (5e ; 21 millions)

Le top 20 est complété dans l'ordre par : the, in, None, for, from, True, a, to, is, else, not, s, name, of, False. Le mot and vient à la 21e place.

Fichiers .lua : Lua
end (1er ; 6,5 millions)
local (2e ; 2,2 millions)
then (3e ; 1,7 million)
if (4e ; 1,6 million)
return (5e ; 1,5 million)

Le top 20 est complété successivement par : function, msg, self, true, else, data, to, id, player, false, not, the, for, nil, and.

Fichiers .php : PHP
this (1er ; 92 millions)
return (2e ; 55,4 millions)
if (3e ; 54,9 millions)
array (4e ; 49,8 millions)
the (5e ; 44,3 millions)

Dans la suite du top 20, nous avons successivement les mots suivants : function, php, class, div, public, to, a, param, string, else, id, of, name, false, type.

Fichiers .rb : Ruby
end (1er ; 40 millions)
do (2e ; 8,6 millions)
def (3e ; 6,9 millions)
the (4e ; 5 millions)
to (5e ; 4,3 millions)

Dans la suite du top 20, nous avons : if, should, it, require, a, t, new, true, name, config, else, user, class, is, self.

Fichiers .cpp : C++
if (1er ; 111,2 millions)
define (2e ; 105,5 millions)
the (3e ; 89,7 millions)
return (4e ; 85,2 millions)
int (5e ; 61,5 millions)

Dans la suite du top 20, nous avons les mots : const, void, include, to, h, i, for, struct, of, a, else, is, in, endif, this.

Fichiers .pl : Perl
my (1er ; 3,8 millions)
the (2e ; 2,6 millions)
self (3e ; 2 millions)
if (4e ; 1,5 million)
return (5e ; 1,4 million)

Dans la suite du top 20 des mots les plus fréquents, nous avons dans l'ordre : use, to, a, _, sub, of, for, in, shift, is, s, else, and, ticket, Self.

Fichiers .cs : C#
summary (1er ; 27,3 millions)
System (2e ; 22,2 millions)
using (3e ; 19,6 millions)
public (4e ; 16 millions)
return (5e ; 14,9 millions)

Le top 20 est complété successivement par les mots : this, the, if, new, param, string, name, null, int, get, to, void, value, var, set.

Fichiers .scala : Scala
import (1er ; 1,9 million)
val (2e ; 1,3 million)
_ (3e ; 1,1 million)
def (4e ; 718 000)
case (5e ; 649 000)

Le top 20 est complété par les mots : org, the, scala, new, String, a, package, else, com, if, to, this, for, of, in.

Fichiers .go : Go
err (1er ; 17,7 millions)
if (2e ; 15,9 millions)
return (3e ; 14,3 millions)
nil (4e ; 13,2 millions)
the (5e ; 8,5 millions)

Dans la suite du top 20, nous avons les mots suivants : string, s, func, c, t, v, for, to, i, in, error, type, _, is.

Fichiers .sql : SQL
NULL (1er ; 8,2 millions)
NOT (2e ; 5,1 millions)
DEFAULT (3e ; 3,3 millions)
INTO (4e ; 3,1 millions)
INSERT (5e ; 3 millions)

Le top 20 des mots les plus utilisés en SQL est complété par : VALUES, id, SET, KEY, int, varchar, TABLE, unsigned, name, PRIMARY, CREATE, table, for, utf8, ENGINE.

Fichiers .rs : Rust
self (1er ; 3 millions)
let (2e ; 2,1 millions)
fn (3e ; 1,7 million)
the (4e ; 1,6 million)
pub (5e ; 1,5 million)

Le top 20 des mots les plus utilisés en Rust est complété par : mut, a, use, if, to, for, Some, _, of, match, is, new, in, None, tcx.

Certains mots sont communs à la plupart des langages, c’est le cas par exemple de if, else, for, true, false, return. D’autres par contre relèvent de la spécificité du langage concerné. On remarque par exemple avec CSS, une forte récurrence des mots comme color, border, right, left, top, font, width, height contrairement aux autres langages.

On peut également noter que la récurrence de certains mots est due à leur utilisation dans les commentaires. C'est le cas par exemple de the, a, to, of. D'autres encore apparaissent fréquemment à cause de leur utilisation dans les opérations ou expressions. C'est le cas par exemple de a, i. Ils ne sont donc pas forcément des mots clés ou fonctions utilisés dans un langage.

Sources : GitHub, Mots les plus utilisés dans les langages

Et vous ?

Qu’en pensez-vous ?
Pour les langages que vous utilisez, comment expliquez-vous la récurrence de certains mots ?
  Discussion forum
30 commentaires
  • c4n4r
    Nouveau membre du Club
    c'est vraiment très intéressant.
  • Envoyé par Jcpan
    "the" en php n'existe pas...
    Note en fin d'article 😉

    "On peut également noter que la récurrence de certains mots est due à leur utilisation dans les commentaires. C'est le cas par exemple de the, a, to, of."
  • GilbertLatranche
    Membre averti
    Avant de lire l'article, j'ai pensé "Chouette, voir les tendances de nommage des variables, fonctions...ça peut être intéressant"...

    ...s'il avait exclu les mots-clés de son processus...

    Du coup, quelle est l'utilité de ce truc ?
  • J'ai eu beaucoup de plaisir à lire cette article.

    P.S. : Appeller une class "toto" dans le modèle UML nécessite t-il de l'appeller "toto" dans le code source ?
  • Tous comme la cohérence if...then...else.
  • temoanatini
    Membre averti
    Intuitivement, je me serais dit que le mot "if" serait le plus répandu.

    Seul le C++ a ce mot en 1er (en excluant html, css et SQL).
  • Et en PHP, les fonctions isset et empty ne font pas partie ? Ça m'étonne...
  • bringer
    Membre habitué
    bonjour,

    je ne suis pas tout à fait d'accord avec le manque d'intérêt de l'article, car par exemple, pour les boites info avec le service de maintenance qui va bien, grâce à cette étude, ils pourront calculer la probabilité d'effacement des touches les plus concernées et ainsi mettre en place une maintenance préventive pour optimiser les rendements en changeant les touches ciblées avant qu'elles ne soient usées.
    Bien sûr, tout cela sur les temps de disponibilité de la machine pour ne pas perturber la prod... Elle pas belle cette étude finalement ?

    Bon, ok, je sorts !
  • Aiekick
    Membre extrêmement actif
    vu que java a import je m'attendait pour c++ a avoir #include mais non c'est le if, et c'est parce que ils ont précisé le fichier d'implementation fichier.cpp.

    il aurait pu considirer le c++ complet avec le .h et on aurait comme java le #include, bizarre comme facon de compter.

    parce que on devrait avoir le if partout a ce compte la.
  • JackIsJack
    Membre éclairé
    Super la démarche, mais le top 20 me semble inintéressant (cool... la syntaxe de base du langage...).
    Il faudrait voir les mots qui viennent après pour déterminer la vraie personnalité des langages.