Home » Sciences et technologies » De la controverse des tabulations : Linus Torvalds réitère son choix

De la controverse des tabulations : Linus Torvalds réitère son choix

by Nouvelles
De la controverse des tabulations : Linus Torvalds réitère son choix
Linus Torvalds, le créateur du noyau Linux, a récemment réitéré sa position sur l’utilisation des tabulations plutôt que des espaces dans le code du noyau, suite à une tentative de modification qui a suscité une réponse robuste de sa part. La controverse a commencé lorsqu’un développeur a proposé un changement dans une ligne de code, remplaçant une tabulation par un espace, dans le but de faciliter la lecture du fichier par les outils d’analyse de configuration (Kconfig parsers). Cette modification semblait anodine, mais elle a déclenché une réaction inattendue de Torvalds, qui a répondu par un commit ajoutant des tabulations cachées exprès

Linus Torvalds est connu pour ne pas être très attaché à la gentillesse, bien qu’il y travaille depuis 2018. Vous pouvez voir des aperçus de cette nouvelle approche, moins chargée de jurons, dans la façon dont Torvalds a récemment abordé un commit avec lequel il était en désaccord total. Cela concerne les tabulations.

Le commit de la semaine dernière a changé exactement une chose sur une ligne, en remplaçant un caractère de tabulation par un espace : « Cela aide les analyseurs de Kconfig à lire le fichier sans erreur ». Torvalds a répondu par un commit de son cru qui « ajouterait volontairement des tabulations cachées ».

            

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

diff --git a/arch/Kconfig b/arch/Kconfig
index 9f066785bb71d9..65afb1de48b36e 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -1172,12 +1172,12 @@ config PAGE_SIZE_LESS_THAN_256KB
 
 config PAGE_SHIFT
 	int
-	default 12 if PAGE_SIZE_4KB
-	default 13 if PAGE_SIZE_8KB
-	default 14 if PAGE_SIZE_16KB
-	default 15 if PAGE_SIZE_32KB
-	default 16 if PAGE_SIZE_64KB
-	default 18 if PAGE_SIZE_256KB
+	default    12 if PAGE_SIZE_4KB
+	default    13 if PAGE_SIZE_8KB
+	default    14 if PAGE_SIZE_16KB
+	default    15 if PAGE_SIZE_32KB
+	default    16 if PAGE_SIZE_64KB
+	default    18 if PAGE_SIZE_256KB
 
 # This allows to use a set of generic functions to determine mmap base
 # address by giving priority to top-down scheme only if the process

Essayer d’aplanir un problème de tabulation contre espace semble avoir éveillé Torvalds au besoin d’avoir des échecs de détection de tabulation « plus évidents ». Torvalds en aurait bien rajouté, écrit-il, mais il ne voulait pas « rendre les choses plus laides que nécessaire. Mais cela pourrait être nécessaire s’il s’avère que nous voyons plus de ce genre d’outils stupides ».

Comprendre le débat tabulations Vs espace

Dans le vaste domaine du développement logiciel, peu de sujets ont suscité autant de passion, de débats et, parfois, de rivalités que le choix apparemment anodin entre les tabulations et les espaces pour l’indentation du code. À première vue, il peut s’agir d’une simple préférence stylistique, comme le choix d’une police avec ou sans empattement dans le domaine de la conception. Cependant, si l’on creuse un peu, on se rend vite compte que ce choix transcende la simple esthétique. Il touche à l’éthique même des pratiques de codage, à la collaboration et même à la lisibilité et à la maintenabilité du code.

Le débat sur les tabulations et les espaces n’est pas nouveau. Depuis des décennies, les développeurs défendent ardemment leur méthode d’indentation préférée, souvent avec une ferveur qui rivalise avec certains des débats politiques les plus passionnés. Certains soutiennent que les tabulations sont plus flexibles, permettant à chaque développeur de définir sa largeur de tabulation préférée, tandis que d’autres défendent fermement les espaces, citant la cohérence entre les différentes plateformes et éditeurs. L’intensité de ces débats témoigne des croyances profondément ancrées et des opinions tranchées des deux camps. Au fil de cet article, nous explorerons les origines, les mérites et les inconvénients de chaque type de tabulation.

À un niveau fondamental, les tabulations et les espaces ont la même fonction dans le code : ils fournissent une indentation pour structurer et organiser le code de manière lisible. Toutefois, leur fonctionnement et leurs implications diffèrent sensiblement.

  • Fonctionnalité : Le caractère de tabulation, souvent représenté par t dans de nombreux langages de programmation, est un caractère unique qui indique à l’éditeur de texte de déplacer le curseur jusqu’au prochain taquet de tabulation. Cela peut être équivalent à un certain nombre d’espaces de colonne, souvent configurables dans les éditeurs de texte modernes. Les espaces, quant à eux, sont exactement ce à quoi ils ressemblent : des caractères d’espacement individuels qui font avancer le curseur d’une colonne pour chaque espace utilisé.
  • Considérations relatives au stockage : Du point de vue du stockage, les tabulations présentent un avantage. Une tabulation est un caractère unique, quel que soit l’espace visuel qu’elle occupe dans un éditeur de texte. Cela signifie que si une tabulation représente visuellement 4 ou 8 espaces, elle n’occupe que l’espace de stockage d’un seul caractère. À l’inverse, l’utilisation d’espaces pour l’indentation nécessite de stocker chaque caractère d’espace individuellement. Par exemple, si vous utilisez quatre espaces pour l’indentation, vous devez stocker quatre caractères pour chaque niveau d’indentation. Bien que le stockage soit peu coûteux dans le monde d’aujourd’hui, dans les grandes bases de code ou les environnements où chaque octet compte, cela peut être un facteur à prendre en considération.
  • Cohérence de l’affichage : C’est là que les espaces brillent. Les espaces sont cohérents dans tous les éditeurs de texte et sur toutes les plateformes. Quatre espaces seront toujours quatre espaces, quel que soit l’endroit où vous visualisez le code. Les tabulations, en revanche, peuvent être un peu imprévisibles. En fonction des paramètres de l’éditeur de texte ou de la plate-forme, une tabulation peut être équivalente à 2, 4, 8 ou tout autre nombre d’espaces. Cela signifie que le code indenté avec des tabulations peut apparaître différemment selon les développeurs, ce qui peut nuire à la lisibilité. Pour les projets

En substance, alors que les tabulations offrent une efficacité de stockage et la flexibilité d’une lisibilité personnalisée, les espaces offrent la garantie d’une apparence cohérente, assurant que le code est le même pour tout le monde, où que l’on soit. Le choix entre les deux se résume souvent à mettre en balance ces différences techniques avec les besoins et les préférences du développeur ou de l’équipe.

Il est donc difficile d’imaginer la question des tabulations contre des espaces être vraiment résolue, codifiée, ou mise en place par des normes. Néanmoins, le noyau Linux a son propre style de codage, et il cite directement “K&R”, ou Kernighan & Ritchie, les auteurs de la bible du codage Le langage de programmation Cqui est un livre à tabulations. Si vous soumettez du code pour le noyau, il est préférable d’utiliser des tabulations (tabulations à huit caractères, idéalement, bien que cela soit lié en partie à l’histoire du télétype et de l’imprimante à ligne).

La réaction de Linus Torvalds

En tentant d’aplanir une minuscule partie du noyau pour qu’un outil d’analyse puisse considérer un caractère espace comme un espace blanc délimitant, Prasad Pandit a involontairement suscité une solide réfutation:

Il n’était pas clair de quel outil il s’agissait, mais assurons-nous qu’il soit corrigé. Parce que si vous ne pouvez pas analyser les tabulations comme des espaces blancs, vous ne devriez pas analyser les fichiers Kconfig du noyau.

En fait, rendons une telle rupture plus évidente qu’une option ésotérique de taille d’enregistrement de ftrace. Si vous ne pouvez pas analyser les tabulations, vous ne pouvez pas avoir de taille de page.

Oui, la confusion entre les tabulations et l’espace est malheureusement un phénomène traditionnel d’Unix, et ‘make’ est réputé pour être défectueux à cet égard. Mais non, cela ne veut pas dire que c’est correct.

J’ajouterais bien plus de tabulations aléatoires à nos fichiers Kconfig, mais je ne veux pas rendre les choses plus laides que nécessaire. Mais cela pourrait être nécessaire s’il s’avère que nous voyons plus de ce genre d’outils stupides.

Les tabulations cachées de Torvalds apparaissent dans la quatrième version candidate du noyau Linux 6.9, dont Torvalds a écrit qu’il ne se passait « rien de particulièrement inhabituel » la semaine de sa publication :

Rien de particulièrement inhabituel cette semaine – quelques nouvelles mitigations hw peuvent se démarquer, mais après une décennie de cela, je ne peux plus vraiment appeler cela “inhabituel”, n’est-ce pas ? Nous avons également eu un peu plus de corrections de bcachefs, et une mise à jour de l’outil turbostat, mais à part cela, c’est la chute habituelle de choses aléatoires un peu partout.

Les pilotes finissent par être le gros des choses restantes, et nous avons encore quelques retombées des grosses mises à jour de timer de cette fenêtre de fusion. Rien d’autre ne me frappe vraiment, mais le foll shortlog est annexé comme d’habitude – assez facile à parcourir pour avoir une idée de ce qui s’est passé.

Conclusion

L’incident met en lumière non seulement la passion de Torvalds pour les détails techniques, mais aussi son engagement envers une communication plus mesurée, un aspect sur lequel il travaille depuis 2018. Bien que la question des tabulations contre les espaces ne soit probablement jamais résolue de manière définitive, elle reste un élément essentiel de la culture et des pratiques de codage au sein de la communauté Linux.

Sources : Git (1, 2, 3, 4)

Et vous ?

Quelle est votre position personnelle sur l’utilisation des tabulations versus les espaces, et pourquoi ? Quels sont les avantages et les inconvénients de l’utilisation des tabulations par rapport aux espaces dans le code source ?
Comment gérez-vous les différences d’indentation dans votre équipe de développement ?
Pensez-vous que l’utilisation des tabulations ou des espaces devrait être dictée par les outils de parsing ou par les conventions de codage établies ?

You may also like

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.