Comment les commentaires de code ont évolué des années 1940 à 2020

Mais ils ne se sont nullement développés. Depuis les tout premiers langages de programmation jusqu'à ce jour, les commentaires sur le code ne sont que du texte statique (à quelques exceptions près, dont je parlerai).

image

Eh bien, que pouvez-vous améliorer ou trouver d'autre? Réfléchissons à ce sujet - est-il possible d'améliorer en quelque sorte notre expérience d'interaction avec un aspect de la programmation aussi important mais si souvent ignoré comme la documentation dans le code, ou dans un simple commentaire.

Pour commencer, quelques paragraphes seront consacrés au sujet du titre de cet article. Oui, car il n'y a vraiment pas cette histoire de développement, vous pouvez donc appeler le titre provocateur. Un petit avertissement: mes connaissances sont limitées (en descendant dans l'expérience) à ces langages: vaste expérience: TS, JS, Rust, moyen: PHP, C ++, petit: Go, Java.

Donc, tout ce que nous avons, c'est ceci: un JSDoc abandonné et bogué, finalement mort à l'ère de TypeScript, par la façon dont il n'y a pas moins de TSDoc bogué et abandonné. Pour PHP, il y a PHPDoc, qui était peu utile lorsque je code dans ce langage. J'avoue que j'ai la plus petite expérience en C ++, donc je n'ai rien entendu de semblable, et le CppDoc trouvé dans Google ne provoque rien d'autre qu'un sourire triste. Le plus développé à cet égard est Rust, comme toujours. Il a un excellent système RustDoc, mais malheureusement il n'est pas toujours ergonomique et encore mal supporté par l'IDE.

Ainsi, l'image globale est plutôt triste, et l'infrastructure des commentaires autour du code n'a pas changé depuis le tout début de l'histoire de la programmation. Les commentaires sont les mêmes qu'il y a 90 ans dans le Plancalkul conditionnel comme dans le code assembleur de l'ordinateur du module lunaire Apollo 11.

image
(photo de shopify.com)

L'histoire est finie. Maintenant, quel est le problème avec le fait que les commentaires ne sont que du texte statique? Le texte statique n'est-il pas parfait et quelque chose peut être amélioré? Ils ont inventé des hypertextes et du HTML, Internet est tout autour. Mais qui a besoin de tout cela? Qu'est-ce qui est si difficile à saisir manuellement les URL? Les milléniaux étaient assez paresseux.

Bien sûr, c'était du sarcasme. Mais qu'est-ce que l'Hypertexte a à voir avec les commentaires sur le code? Réfléchissons aux problèmes résolus par Hypertext et existe-t-il des problèmes similaires lors de l'utilisation des commentaires de code?

Ainsi, l'hypertexte a transformé le texte statique en texte avec des hyperliens. La façon la plus simple de comprendre les avantages de cela est de lire l'article Wikipedia. Par exemple, à propos du Grand collisionneur de hadrons . Après avoir commencé à lire l'article, la plupart des gens comprendront ce que sont les protons et les ions s'ils n'ont pas manqué de cours de physique. Mais le mot "Hadron" apparaît. Qu'est-ce que c'est et comment le lecteur peut-il le découvrir? S'il s'agissait d'un texte statique, il n'y aurait pas beaucoup de choix, sauf pour trouver quelque part (dans la bibliothèque?) Un autre texte où il est dit ce qu'est Hadron. Mais Dieu merci, ce n'est pas le cas, et nous pouvons simplement cliquer sur l'hyperlien.

Pensons, y a-t-il de telles situations dans la programmation? Des milliers d'entre eux. Pour trouver un exemple, accédez à presque tous les référentiels ouverts, tels que le noyau Linux. Je suis entré dans le premier fichier que j'ai

/** * irq_cpu_rmap_notify - callback for IRQ subsystem when IRQ affinity updated * @notify: struct irq_affinity_notify passed by irq/manage.c * @mask: cpu mask for new SMP affinity * * This is executed in workqueue context. */ static void irq_cpu_rmap_notify(/*   */) { /*   */ } 


Alors, imaginez que vous avez récemment rejoint le projet et soudainement quelque chose s'est cassé. Backtrack mène à cette fonction, mais vous n'en savez rien. Que faut-il faire? C'est vrai - utilisez tout ce que vous avez pour comprendre en quoi consiste cette fonction - le code lui-même et ses commentaires. Le texte humain est généralement plus facile à comprendre que le code lui-même, non? Par conséquent, nous commençons par lire le commentaire. Et puis notre humeur tombe sous le socle.

Quel genre d'IRQ? Tu n'as aucune idée de ce que c'est. Quelles sont les prochaines étapes? Contacter et distraire des collègues plus expérimentés? Vous pouvez bien sûr, mais pas vraiment vouloir. Ou sont-ils en vacances. Recherche par code? Vous trouverez des milliers de références à cette abréviation, ce qui vous déprimera. Eh bien, disons que vous avez fouillé la moitié de la base de code et trouvez apparemment une explication de ce que signifie cette IRQ. Mais il arrive aussi que cette explication soit à un autre acronyme IRQ, qui a un sens complètement différent! Eh bien, le dernier cas est assez rare, mais quand même.

Mais que se passe-t-il si vous cliquez sur le mot IRQ et miraculeusement, votre IDE vous emmènera au lieu de définition de cette abréviation? Ce serait super, non? Et d'ailleurs, tout simplement, ce n'est pas plus compliqué que l'Hypertexte. Alors pourquoi en 2020 les programmeurs eux-mêmes ne feront pas un tel outil? Je voudrais souligner à la fois la capsule et la phrase précédente en gras. La raison en est un grand mystère pour moi. Peut-être qu'il y en a pour d'autres IDE, mais je n'ai rien trouvé pour VSCode. J'ai donc fait cette extension moi-même. Je vous invite à tester et à exprimer votre avis.

Mais continuons.

Lors de la lecture du fragment de code ci-dessus, ou plutôt d'un commentaire, des questions se posent à travers presque chaque mot. Par exemple, où se trouve cette structure irq_affinity_notify? Ou pourquoi en 2020 je ne peux pas cliquer sur irq / manage.c pour que l'IDE me transfère consciencieusement et rapidement vers ce fichier? C'est aussi un grand mystère pour moi. Par conséquent, dans mon extension, le premier a déjà été résolu, mais jusqu'à présent uniquement pour JavaScript et TypeScript (les suivants: C / C ++, Rust, Java, Go), et le second comme moins significatif sera également résolu, mais un peu plus tard.

Je ne veux pas vous ennuyer davantage avec un tas de texte, alors insérez simplement un gif avec quelques autres exemples de travail:

habr1.gif

J'ai très peur des critiques et des commentaires toxiques, mais je veux savoir encore plus ce que vous en pensez?

Source: https://habr.com/ru/post/fr485162/


All Articles