TabNine : codez plus rapidement en écrivant moins.

Coder plus rapidement en écrivant plus vite, c’est cool.

Coder plus rapidement en écrivant moins, c’est encore mieux !

Les auto-compléteurs sont vraiment magiques, ils permettent non seulement de coder plus vite, mais aussi de faire moins de fautes et de découvrir les fonctionnalités d’un langage grâce aux suggestions.

Mais soyons honnête, la plupart d’entre eux sont assez cons. Ils connaissent les règles d’un langage par cœur et se contentent de les appliquer. Les plus malins prennent le contexte en compte pour mettre en avant certaines suggestions, mais ça va rarement plus loin.

Ils ressortent ce genre de grosse liste, et il ne reste plus qu’a chercher.

Mais aucun d’entre eux n’est capable de prédire ce que vous allez écrire, ça serait insensé, ça ne peut pas exister… Pas vrai ?

Laisser moi vous présenter TabNine, un outil d’auto-complétion intelligent qui va vous proposer des suggestions non pas basées sur la sémantique d’un langage, mais sur VOTRE manière de coder. Autrement dit, TabNine est en mesure de trouver vos idées avant même que vous n’y ayez pensé, comme s’il faisait partie de votre subconscient.

Ca semble complètement fou dit comme ça, mais c’est bien réel. C’est justement la raison pour laquelle j’en parle.

Vous vous demandez peut-être en quoi il est différent d’un auto-compléteur classique, et ce qu’il va vous apporter de plus.

Un auto-compléteur sémantique, comme IntelliSense va surtout vous permettre d’utiliser efficacement un langage. Par exemple : il va vous permettre de trouver les membres d’un objet sans que vous n’ayez à les connaître par cœur.

En soit, il va agir comme un expert du langage qui connaît tout sur tout, mais il ne va pas faire de différence entre 2 programmes, il se comportera de la même manière partout.

Un auto-compléteur comme TabNine ne connaît pas ou très peu le langage et ne sera pas en mesure de vous ressortir tous les membres d’un objet. Cependant, il a étudié votre code et celui de plein d’autres personnes de manière à pouvoir faire des suggestions qui vous correspondent. Il va agir comme votre assistant personnel.

Ainsi, il sera capable de prédire des noms de fonctions et de variables, mais aussi des expressions entières, le contenu d’une chaîne de caractère, et même vos commentaires. Et comme TabNine n’a pas besoin de connaître les fonctionnalités d’un langage pour travailler, il peut fonctionner dans tous les langages.

Ça fait donc de TabNine un des auto-compléteurs qui va vous rendre le plus productif : vous allez gagner en vitesse d’écriture, et en plus de ça, vous allez moins faire d’erreurs de syntaxe, et donc passer moins de temps à vous corriger, ce qui va encore plus augmenter votre productivité.

C’est juste dingue, et il suffit de regarder ce GIF pour comprendre de quoi je parle :

Machine learning

Les plus malins d’entre vous auront sûrement déjà compris comment ça fonctionne. TabNine n’est pas un simple système figé comme IntelliSense, il utilise un système de machine learning qui va s’entraîner en vous regardant programmer.

Par défaut, il a un modèle déjà entraîné et plutôt performant, mais plus vous travailler sur un projet avec beaucoup de code, plus il sera en mesure de vous proposer des suggestions ultra-pertinentes, comme un vrai collègue.

C’est aussi pour ça qu’il saura faire des choses totalement impossible pour un auto-compléteur sémantique, comme initialiser des variables pour vous, compléter vos chaînes de caractères et vos commentaires, ou trouver les noms de variables pour vous. Puisqu’il ne va pas se baser sur des règles, mais sur ce que vous avez fait plus tôt.

Avec TabNine, vous pourrez écrire vos lorem ipsum plus vite que votre ombre.

Auto-complétion sémantique

Comme je l’ai dit, TabNine se repose sur un système de machine learning, ce qui a des avantages, mais aussi des inconvénients comparé à un bon vieux système sémantique. Par exemple : TabNine ne connaît quasiment rien du langage sur lequel il vous aide, et ne propose ses suggestions qu’en faisant des interprétations. Il ne se repose pas sur des bases concrètes.

Ça semble très problématique, mais rassurez vous, TabNine a tout prévu puisqu’il permet de se mélanger avec un auto-compléteur sémantique.

Ça veut dire que vous avez à votre disposition deux cerveaux : un expert qui connaît le langage sur le bout des doigts (auto-compléteur sémantique), et un assistant qui copie votre manière de faire (TabNine). En mélangeant les deux, vous obtenez un système d’auto-complétion incroyablement précis et efficace, qui marche avec quasiment tous les langages.

Plus besoin de chercher dans l’immense liste de méthodes que votre auto-compléteur vous ressort puisque TabNine va venir filtrer cette liste pour vous mettre en avant les choix les plus pertinents. C’est pas beau ça ?

J’ai même pas eu le temps de finir d’écrire Math qu’il me le propose déjà.

Versions

Point important, c’est que TabNine utilise un modèle en local, ce qui fait que rien est envoyé chez eux, donc vous n’avez absolument pas à vous soucier de la confidentialité.

La version payante de TabNine permet d’utiliser un modèle de fou furieux sur le cloud, qui s’est entraîné sur plus de 2 millions de dépôts publique sur GitHub. Je ne vous dis pas la précision de malade des suggestions avec ça.

Ça à l’air intéressant, mais en contre partie, ça nécessite que votre code passe par leurs serveurs, donc je recommande de désactiver cette fonctionnalité si vous travaillez avec données très sensibles. D’un autre coté, TabNine garantit votre confidentialité en chiffrant les données qui transitent, et ne sauvegarde rien, contrairement à l’alternative Kite (le diable en personne).

Une dernière version de l’application tire le meilleur des deux mondes puisqu’elle permet d’auto-héberger le modèle de TabNine, donc vous avez les performances + la confidentialité. Il s’agit cependant d’une version dédiée aux entreprises, et très lourde et probablement très chère. Et bien sûr, il faut avoir un serveur à disposition pour héberger TabNine.

Maintenant que vous avez l’eau à la bouche, je vais vous montrer comment installer TabNine. L’application contient plusieurs versions, mais pour l’instant, on va se contenter de la version gratuite, qui permet uniquement d’avoir un modèle en local, ce qui est déjà beaucoup !

Pour cela, rien de plus simple, vous prenez votre éditeur de texte favori, et vous installez l’extension TabNine. C’est tout.

TabNine est compatible avec plein d’éditeurs de texte différents, donc si le vôtre n’y est pas, c’est vraiment que vous l’avez cherché. On notera juste l'absence de Visual Studio, rip.

Note : Codota est un autre système similaire affilié à TabNine, mais ce n’est pas la même chose.

On notera juste Par défaut, TabNine est parfaitement utilisable, mais il propose aussi une interface de configuration. Pour accéder à cette interface, il faut ouvrir votre éditeur et écrire n’importe où TabNine::config, et une page web hébergée en local va s’ouvrir avec l’interface de configuration… Oui, je sais, c’est très bizarre.

Sur cette page web, vous retrouverez notamment un lien vers le répertoire de configuration, qui va contenir des fichiers assez intéressants, comme le fichier de configuration principal tabnine_config.json, le fichier pour configurer l’auto-complétion sémantique TabNineExample.toml, ainsi que le modèle que  TabNine utilise pour faire ses prédictions (qui est assez lourd).

Aussi, petit conseil, je vous recommande fortement de désactiver la sélection des suggestions lorsque vous appuyez sur la touche Entrer, parce que c’est vite fait de sélectionner une option en voulant sauter une ligne (les vrais utilisent Tab).

Et ce sera tout pour TabNine, en espérant que ce petit outil vous permettra d’accélérer vos développements, même de 5%, c’est déjà beaucoup ! Si l’outil vous intéresse, vous pouvez vous rendre sur le site officiel de l’application.

Mon but avec ce blog est de vous présenter pleins de solutions, conseils et outils pour développer plus efficacement. Souvent, ça passe par des concepts et des architectures compliquées (mais super efficaces), mais parfois, un simple outil facile à mettre en place comme celui-ci peut faire la différence.

Donc si vous voulez tous les découvrir et passer à la vitesse supérieure pour vos futurs développements, allez jeter un coup d’œil à mes autres articles, car ils pourraient révolutionner votre manière de développer du jour au lendemain !