Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Linus Torvalds : « Vos limitations matérielles ne devraient pas être un problème pour le reste d'entre nous »
Le père de Linux fustige les partisans de la limite de 80 caractères par ligne de code

Le , par Michael Guilloux

505PARTAGES

43  0 
Si vous consultez les directives de style de code pour de nombreux langages ou projets, vous trouverez probablement une règle fixant le nombre maximal de caractères à 80 par ligne. C'est aussi souvent la configuration par défaut pour certains développeurs qui utilisent le mode console (affichant 80 caractères par ligne sur 25 lignes). Mais en 2020, cette règle est-elle encore pertinente ?

Le sujet a plusieurs fois été abordé sur des forums ou dans des listes de diffusion pour développeurs. Pour certains, cette règle est obsolète. Elle date des années 1920-1930 où les ressources matérielles étaient très limitées. Autrefois, il était nécessaire de faire tenir votre code dans 80 colonnes, sinon les caractères au-delà de la limite étaient automatiquement placés à la ligne suivante ou s'affichaient en dehors de la partie visible de l'écran, ce qui n'était pas visuellement agréable. Presque un siècle plus tard, cette règle existe encore dans le monde moderne du développement informatique.

Dans la communauté Linux, la limite des 80 caractères par ligne a souvent été au centre de discussions, comment c'était le cas le vendredi 29 mai, où un développeur a préconisé cette limite « pour toujours » dans un fil de discussions sur le nettoyage du noyau Linux. Linus Torvalds, dont la position est connue depuis plus d'une décennie, a donc profité pour dire ce qu'il pense de la limite de 80 caractères par ligne et de ceux qui s'y agrippent encore.

« Si vous ou Christoph [un développeur du noyau Linux, NDLR] avez des lignes de 80 caractères, vous obtiendrez peut-être une sortie moche. C'est pénible. Mais c'est votre choix. Vos limitations matérielles ne devraient pas être un problème pour le reste d'entre nous », lance Linus Torvalds.

Pour le père de Linux, la limite des 80 colonnes oblige à faire fréquemment des retours à la ligne. Or « les retours à la ligne excessifs sont MAUVAIS », dit-il. « Ils causent des problèmes réels et quotidiens. Ils causent des problèmes pour des choses comme "grep" à la fois dans les patterns et dans la sortie, car grep (et beaucoup d'autres utilitaires Unix très basiques) est fondamentalement basé sur les lignes. »

« Le fait est que beaucoup d'entre nous ont depuis longtemps abandonné le modèle de terminal à 80 colonnes, pour la même raison que nous avons beaucoup plus de lignes que 25 lignes visibles à la fois. Et honnêtement, je ne veux pas voir de correctifs qui aggravent l'expérience de lecture du kernel pour moi et probablement pour la grande majorité des gens, en se basant sur l'argument selon lequel certaines personnes étranges ont de petites fenêtres de terminal », ajoute Linus Torvalds.


Le créateur de Linux les invite à utiliser du matériel avec des configurations modernes. Il dit par exemple que lorsqu'il juxtapose ses fenêtres de terminal sur son écran, il peut avoir 6 terminaux visibles en même temps, et c'est parce qu'il en a trois de larges. Et, poursuit-il, « C'est avec ma fenêtre de terminal "100x50" par défaut, pas avec un 80x25 (allez dans les paramètres de votre terminal gnome, vous constaterez que le 80x25 n'est qu'une configuration par défaut que vous pouvez changer). Et la plupart de mes terminaux sont plus larges et de hauteur de plus grande que cela. J'ai vérifié, et mon principal est de 142x76 caractères en ce moment, car il s'avère que des terminaux plus larges (et de plus grande hauteur) sont utiles, et pas seulement pour le code source. »

Haussant le ton, Linus affirme qu'il y a beaucoup de choses pour lesquelles les terminaux 80x25 (80 colonnes et 25 lignes) sont vraiment limitants, et estime qu'ils ne sont plus pertinents pour la plupart des développeurs. « Donc non. Je ne me soucie pas de quelqu'un avec une fenêtre de terminal 80x25 », dit-il. Pour lui, les développeurs qui s'accrochent à une configuration de terminal 80x25 alors qu'ils ont des limitations matérielles se trouvent dans la même situation que ceux qui disent que la compilation du noyau Linux prend 10 heures alors qu'ils font le développement du noyau sur un Raspberry Pi avec 4 Go de RAM.

« Les personnes ayant un matériel restrictif ne devraient pas le rendre plus gênant pour les personnes disposant de meilleures ressources. Oui, nous accepterons les choses dans des limites raisonnables. Mais non, les terminaux à 80 colonnes en 2020 ne sont plus "raisonnables" en ce qui me concerne. Les gens utilisaient couramment des terminaux à 132 colonnes même dans les années 80, n'essayez pas de faire de 80 colonnes un standard inamovible. Si vous choisissez d'utiliser un terminal de 80 colonnes, vous pouvez vivre avec le retour à la ligne. C'est aussi simple que cela ».

De manière générale, Linus semble appeler les développeurs à tirer pleinement parti des ressources dont ils disposent aujourd'hui et d'y adapter leur style de développement. Il affirme que les lignes plus longues sont tout simplement utiles. Ce qui, selon lui, s'explique en partie par le fait que nous ne programmons plus dans les années 80, et notre code source est donc fondamentalement plus vaste. Il estime qu'être concis est toujours une bonne chose, et les noms trop verbeux ne sont pas intrinsèquement meilleurs. « Mais encore, il est tout à fait raisonnable d'avoir des noms de variables de 10 à 15 caractères et cela rend le code plus lisible », dit-il. Linus Torvalds pense aussi qu'il faut écrire des choses correctement au lieu d'utiliser des abréviations. Il justifie l'utilisation de tabulations larges par le fait que cela fait de l'indentation quelque chose qu'on peut voir dans la structure du code en un coup d'œil. « Eh oui, nous faisons des sauts de ligne à un moment donné. Mais il n'y a vraiment aucune raison de faire en sorte que ce soit après 80 colonnes », a-t-il ajouté.

Source : Linus Torvalds

Et vous ?

Que pensez-vous des déclarations de Linus Torvalds ?
La limite de 80 caractères par ligne est-elle toujours pertinente dans notre époque ? Pourquoi ?

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de Zefling
Expert confirmé https://www.developpez.com
Le 30/05/2020 à 23:33
Sur le langage que j'utilise, la règle que j'ai imposé c'est une limite à 120 caractères (c'est moi qui me suis occupé du fichier de règles).
80 pour moi c'est plus chiant qu'autre chose, on passe son temps à voir comment organiser son code.
Par contre, les 120 c'est pour la lisibilité. Au delà, c'est trop long. Ça obligé à rendre son code plus lisible.
C'est juste 40 caractères de plus de 80, mais ça fait une énorme différence.
20  0 
Avatar de Vulcania
Membre éclairé https://www.developpez.com
Le 30/05/2020 à 22:15
Citation Envoyé par tome_x Voir le message
Je commence à croire que Linux c'est fait pour rester dans le passé.
Un magnifique terminal 80x25 qui émule un vt-100, 16 couleurs (ou 256 si vous avez du courage) et un éditeur modal à 2400 bauds.
Pas d'EDI, juste grep et cd.

Allez on y croit, 2021 l'année de Linux sur le desktop !

Mais ... mais ... c'est exactement l'inverse de ce qui est dit dans l'article
12  0 
Avatar de walfrat
Membre éclairé https://www.developpez.com
Le 04/06/2020 à 11:04
A l'heure des IHM élaborées, Linux se posent la question des 80 caractères par ligne en mode console. Ils me feront toujours rire : la ligne de commande, c'est le top...
Alors :
  • Linux ne se posent pas la question, il contredit les gens qui maintiennent cet argument en 2020. Tu as donc complétement compris l'article de travers.
  • Quand tu administre des serveurs la ligne de commande t'as rien de plus en générale donc oui c'est toujours d'actualité. Et avec le Cloud, t'as autant moins de raison d'installer des packages d'UI sur ton serveur pour rien vu que chaque petit élément que tu utilises en cpu/ram te coûtent de l'argent.
  • Tu peux me faire l'IHM la plus élaborées du monde pour coder, si tu me mets des conventions de codages qui me rendent dingue ça va pas changer grand chose.
9  0 
Avatar de air-dex
Membre expert https://www.developpez.com
Le 31/05/2020 à 19:18
Citation Envoyé par Sodium Voir le message
Les gens qui travaillent dans un terminal et surtout qui imposent aux autres de coder pour leurs propres limites matérielles méritent d'être pendus à un arbre.
Laisse une place pour ceux qui ne supportent pas que le JSON prenne en compte des nombres de plus de 32 bits pour la simple et bonne raison que les navigateurs sont limités à 32 bits dans les pages Web. Dans le genre limitation à justification débile celle-ci n'est pas mal non plus.
8  0 
Avatar de Aizen64
Membre averti https://www.developpez.com
Le 31/05/2020 à 8:23
La limite des 80 caractères n’a plus vraiment de sens aujourd’hui où tout le monde à une résolution supérieure à 1280 en largeur.

Ma remarque est de ne pas fixer de limite dure tout en essayant d’éviter des lignes trop longues.

Il y a des languages où des l’inters avec une limite dure sur le nombre de caractères peut poser un vrai problème comme du markup. HTML et XML sont d’excellents exemples.
7  0 
Avatar de SimonDecoline
Expert confirmé https://www.developpez.com
Le 30/05/2020 à 17:19
Citation Envoyé par Michael Guilloux Voir le message
Le sujet a plusieurs fois été abordé sur des forums ou dans des listes de diffusion pour développeurs.
Oui, on peut même dire que c'est une vieille flamewar digne des tab vs espace, vi vs emacs, windows vs linux...

Citation Envoyé par Michael Guilloux Voir le message
Elle date des années 1920-1930 où les ressources matérielles étaient très limitées. Autrefois, il était nécessaire de faire tenir votre code dans 80 colonnes, sinon les caractères au-delà de la limite étaient automatiquement placés à la ligne suivante ou s'affichaient en dehors de la partie visible de l'écran, ce qui n'était pas visuellement agréable. Presque un siècle plus tard, cette règle existe encore dans le monde moderne du développement informatique.
La contrainte matérielle n'est pas la seule raison. Il y a également la fatigue visuelle, qui augmente avec la distance latérale à parcourir. D'ailleurs certaines personnes, qui font beaucoup de texte, mettent leur écran en mode portrait.
Et puisqu'on parle des contraintes matérielles qui n'ont plus de raison d'être, pourquoi on n'alignerait pas les touches des claviers, au lieu de conserver ce décalage anti-ergonomique hérité des machines à écrire du 19e siècle?
13  8 
Avatar de esperanto
Membre expérimenté https://www.developpez.com
Le 04/06/2020 à 8:08
Citation Envoyé par moldavi Voir le message
A l'heure des IHM élaborées, Linux se posent la question des 80 caractères par ligne en mode console. Ils me feront toujours rire : la ligne de commande, c'est le top...
Déjà faut arrêter avec le mythe du "hou, les linuxiens c'est des ringards ils en sont encore à la ligne de commande"

La ligne de commande, je m'en sers beaucoup, elle me permet de faire en bloc des traitements sur beaucoup de petits fichiers en une seule fois, pas toujours facile sur une interface graphique surtout si les fichiers ne sont pas tous au même endroit. Et puis je le fais dans un terminal en mode graphique, pas en"mode console". Par contre j'édite mes fichiers avec un Kate ou KWrite, donc des éditeurs graphiques, pas avec Vi (sauf pour de très gros fichiers qui prendraient des plombes rien qu'à l'ouverture dans un éditeur graphique)

Ensuite Linus Torvalds n'a pas défendu la ligne de 80 caractères, au contraire: il constate que beaucoup de ses contributeurs continuent de suivre cette règle et il leur demande d'arrêter. Est-ce que le fait que je te cite au début de ce post veut dire que je t'approuve? Non, c'est juste qu'il faut bien que je cite ce que je conteste. Exactement ce qui se passe dans le sujet de cet article.

Tu vas sans doute dire que je n'ai rien compris à tes propos. Mais alors, puisque tu protestes sur les pouces en bas, dis-toi bien que je ne suis probablement pas le seul.
5  0 
Avatar de KiLVaiDeN
Membre expert https://www.developpez.com
Le 31/05/2020 à 12:24
Si on a des lignes trop longues c'est qu'on code très mal.

Ce n'est pas au développeur de faire un boulot de "compression de lignes", de réduire du code qui DEVRAIT prendre plusieurs lignes (pour des mesures de lisibilité et de débogage). Si le but d'un développeur c'est de faire des programmes en peu de lignes, c'est qu'il n'a pas compris son rôle. C'est le rôle du compilateur ou de l'interpréteur d'optimiser le code.

Le but du développeur est de résoudre le problème efficacement, en termes algorithmique, tout en ayant un code lisible. Désolé, mais une énorme ligne ce n'est pas lisible, sachant qu'en toute logique une ligne correspond à une opération.

Donc le débat de savoir "quelle est la taille max d'une ligne" est à mon avis une bêtise, l'idée étant "il faut des lignes le plus concises possibles pour améliorer la lisibilité". Si la ligne fait 180 caractères pour une raison algorithmique valide, c'est tout à fait correct mais je n'ai encore jamais rencontré de tel cas. On peut toujours décomposer.
6  2 
Avatar de SimonDecoline
Expert confirmé https://www.developpez.com
Le 03/06/2020 à 9:55
Citation Envoyé par moldavi Voir le message
J'attends 9 différentes réponses.
Je me rappelle plus si j'ai mis -1, mais je vais quand même répondre.

A l'heure des IHM élaborées,
Pas vraiment de rapport avec le formatage de code.

Linux
Il ne s'agit pas de "Linux", mais du projet qui développe le kernel. Et en fait c'est surtout Linus Torvalds même.

en mode console.
Aucun rapport.

Ils me feront toujours rire
On s'en fout de ton humour.

la ligne de commande, c'est le top...
Aucun rapport.

Donc pour répondre à ta question de pourquoi tout le monde te moinsse sans te répondre : parce que tu dis de la merde sans rapport avec le sujet.
7  3 
Avatar de disedorgue
Expert éminent sénior https://www.developpez.com
Le 01/06/2020 à 20:21
Perso, je suis d'accord avec Linus qui refuse le coté obligatoire de la chose, car bien souvent on arrive à des trucs totalement absurde.
Un exemple: Suite à un dev trop lent pour une mise à jour de donnée sur une table de base de donnée (la mise à jour prenait 5 jours), je m'étais fait mon propre dev qui avait réduit le temps à 2 heures. Ce code ne devait pas être utilisé en production mais comme ils en ont entendu parler, ils ont demandé à ce qu'on leur livre ce code plutôt que l'autre... Et là, le cauchemar commence: on me demande de livrer celui-ci mais avec les règles de l'art, donc toutes les obligations imposer par ce genre de script, comme la possibilité de reprises, remonter de log pour chaque action effectuer,...
Résultat: le script rend le service voulu mais de 2 heures, passe à 7 heures.

Et le script ne faisait pas grand chose: extraction d'une table => mise à jours des données (le temps passé est dans cette étape) => injection des données dans une table vide nouvellement créée.

Donc, les règles c'est bien, mais les imposer systématiquement, c'est marcher sur la tête.
3  0