Wie sich Codekommentare von den 1940ern bis 2020 entwickelten

Aber sie haben sich in keiner Weise entwickelt. Von den ersten Programmiersprachen bis zum heutigen Tag sind Kommentare zum Code nur statischer Text (mit wenigen Ausnahmen, über die ich noch sprechen werde).

Bild

Was können Sie sonst noch verbessern oder erfinden ?, fragen Sie. Lassen Sie uns über dieses Thema nachdenken - ist es möglich, unsere Erfahrung im Umgang mit einem so wichtigen, aber so oft ignorierten Aspekt der Programmierung zu verbessern, als Dokumentation in Code oder in einem einfachen Kommentar.

Zunächst werden einige Absätze dem Thema des Titels dieses Artikels gewidmet. Ja, da es diese Entwicklungsgeschichte wirklich nicht gibt, können Sie den Titel als provokativ bezeichnen. Ein kleiner Haftungsausschluss: Meine Kenntnisse beschränken sich (je nach Erfahrung) auf folgende Sprachen: Umfangreiche Erfahrung: TS, JS, Rust, Medium: PHP, C ++, Small: Go, Java.

Wir haben also nur Folgendes: einen verlassenen und fehlerhaften JSDoc, der im TypeScript-Zeitalter endgültig tot war und für den es nicht weniger fehlerhafte und fehlerhafte TSDoc gibt. Für PHP gibt es PHPDoc, was beim Codieren in dieser Sprache wenig hilfreich war. Ich gebe zu, dass ich die kleinste Erfahrung in C ++ habe, also habe ich noch nichts davon gehört, und das in Google gefundene CppDoc verursacht nur ein trauriges Grinsen. Am weitesten entwickelt ist dabei wie immer Rust. Es hat ein exzellentes RustDoc-System, ist aber leider nicht immer ergonomisch und wird von der IDE immer noch schlecht unterstützt.

Daher ist das Gesamtbild eher traurig, und die Infrastruktur der Kommentare rund um den Code hat sich seit Beginn der Programmiergeschichte nicht geändert. Kommentare sehen im bedingten Plancalcule genauso aus wie vor 90 Jahren, wie im Assembler-Code des Apollo 11-Mondmodul-Computers.

Bild
(Foto von shopify.com)

Die Geschichte ist vorbei. Was ist nun falsch daran, dass Kommentare nur statischer Text sind? Ist statischer Text nicht perfekt und kann er verbessert werden? Sie haben einige Hypertexte und HTML erfunden, das Internet ist all das. Aber wer braucht das alles? Was ist so schwierig, URLs manuell einzugeben? Die Millennials waren ziemlich faul.

Natürlich war es Sarkasmus. Aber was hat Hypertext mit den Kommentaren zum Code zu tun? Überlegen wir uns, welche Probleme Hypertext gelöst hat und gibt es ähnliche Probleme bei der Verwendung von Codekommentaren?

Hypertext verwandelte also statischen Text in Text mit Hyperlinks. Der einfachste Weg, die Vorteile zu verstehen, ist das Lesen des Wikipedia-Artikels. Zum Beispiel über den Large Hadron Collider . Nach dem Lesen des Artikels werden die meisten Leute verstehen, was Protonen und Ionen sind, wenn sie keinen Physikunterricht verpasst haben. Aber dann erscheint das Wort "Hadron". Was ist das und wie kann der Leser davon erfahren? Wenn es sich um einen statischen Text gehandelt hätte, hätte es nicht viel Auswahl gegeben, außer irgendwo (in der Bibliothek?) Einen anderen Text zu finden, in dem steht, was Hadron ist. Aber Gott sei Dank ist das nicht so und wir können einfach auf den Hyperlink klicken.

Denken wir mal, gibt es solche Situationen bei der Programmierung? Tausende von ihnen. Um ein Beispiel zu finden, gehen Sie zu fast jedem offenen Repository, z. B. zum Linux-Kernel. Ich ging in die erste Akte, die ich bekam

/** * 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(/*   */) { /*   */ } 


Stellen Sie sich vor, Sie sind kürzlich dem Projekt beigetreten und plötzlich ist etwas kaputt gegangen. Backtrack führt zu dieser Funktion, aber Sie wissen nichts darüber. Was solltest du tun? Das ist richtig - verwenden Sie alles, was Sie verstehen müssen, um was es in dieser Funktion geht - den Code selbst und Kommentare dazu. Menschlicher Text ist im Allgemeinen leichter zu verstehen als der Code selbst, oder? Deshalb lesen wir zuerst den Kommentar. Und dann sinkt unsere Stimmung unter den Sockel.

Was für ein IRQ? Sie haben keine Ahnung, was es ist. Was sind die nächsten Schritte? Erfahrene Kollegen kontaktieren und ablenken? Das kann man natürlich, will es aber nicht wirklich. Oder sind sie im Urlaub. Suche nach Code? Sie werden Tausende von Hinweisen auf diese Abkürzung finden, und dies wird Sie depressiv machen. Nehmen wir an, Sie haben die Hälfte der Codebasis durchsucht und scheinen eine Erklärung dafür zu finden, was dieser IRQ bedeutet. Es kommt aber auch vor, dass sich diese Erklärung auf ein anderes Akronym IRQ bezieht, das eine ganz andere Bedeutung hat! Nun, der letzte Fall ist ziemlich selten, aber immer noch.

Aber was wäre, wenn Sie auf das Wort IRQ klicken und Ihre IDE würde Sie auf wundersame Weise an den Ort der Definition dieser Abkürzung bringen? Das wäre toll, oder? Und außerdem ist es nicht komplizierter als Hypertext. Warum werden Programmierer im Jahr 2020 selbst kein solches Werkzeug herstellen? Ich würde sowohl die Kapsel als auch den kühnen vorhergehenden Satz hervorheben. Der Grund dafür ist mir ein großes Rätsel. Vielleicht gibt es solche für andere IDEs, aber ich habe nichts für VSCode gefunden. Deshalb habe ich diese Erweiterung selbst gemacht. Ich lade Sie ein, Ihre Meinung zu testen und auszudrücken.

Aber lass uns weitermachen.

Beim Lesen des obigen Codefragments oder vielmehr eines Kommentars tauchen in fast jedem Wort Fragen auf. Wo befindet sich beispielsweise diese irq_affinity_notify-Struktur? Oder warum kann ich 2020 nicht auf irq / manage.c klicken, damit die IDE mich pflichtbewusst und schnell in diese Datei überträgt? Das ist mir auch ein großes Rätsel. Daher wurde in meiner Erweiterung das erste Problem bereits gelöst, bisher jedoch nur für JavaScript und TypeScript (das Folgende: C / C ++, Rust, Java, Go), und das zweite Problem, das weniger wichtig ist, wird ebenfalls gelöst, jedoch etwas später.

Ich möchte Sie nicht weiter mit ein paar Texten langweilen. Fügen Sie einfach ein GIF mit ein paar weiteren Arbeitsbeispielen ein:

habr1.gif

Ich habe große Angst vor Kritik und giftigen Kommentaren, aber ich möchte noch mehr darüber wissen, was Sie darüber denken?

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


All Articles