Ich denke, das Thema ist gut gewählt. Es ist "cool", eine Perl-Zeile zu schreiben, die auf einmal zehntausende Dinge erledigt, aber dann ist es scheiße, wenn Sie sie noch einmal durchgehen müssen.
Auf einer anderen Anmerkung, klug oder nicht, muss Code dokumentiert werden. Zwischen den in der Industrie akzeptierten Programmiersprachen und den hochrangigen Konzepten, an die wir Menschen in unserem Denken gewöhnt sind, besteht eine inhärente Impedanzinkongruenz. Selbstdokumentierender Code ist einfach nicht realisierbar - bis er zur natürlichen Sprache wird. Sogar Prolog-Code muss dokumentiert werden, so formell er auch sein mag.
Feinkörniger Imperativcode dient dazu, grobkörnige Pläne zu implementieren - das muss dokumentiert werden. Ich möchte nicht alle 50 Zeilen der Methode durchlesen müssen, wenn ein kurzer dreizeiliger Roadmap-Kommentar ausreicht.
Später bearbeiten: Ein beredteres Beispiel ist eines, das Computer übersteigt. Ein Buch mag sehr gut geschrieben sein, aber wir möchten es oft auf verschiedenen Abstraktionsebenen verarbeiten. Oft reicht eine Zusammenfassung des Buches, und genau das können Kommentare für den Code bieten. Natürlich kann gut abstrahierter Code viel zur Selbstdokumentation beitragen, aber nicht alle Abstraktionsebenen bieten.
Kommentare können sich auch wie Randnotizen in einem Buch verhalten, wenn wir den Argumentationsprozess hinter einer Behauptung im Haupttext erläutern müssen, ohne sie zu entgleisen.
In diesem Zusammenhang stelle ich fest, dass meine vorherige Aussage zur natürlichen Sprache, die über die Notwendigkeit von Kommentaren hinausgeht, falsch ist. Sogar die natürliche Sprache, wie in einem Buch, eignet sich möglicherweise zur Dokumentation, um die im Text enthaltene Abstraktion auf spärliche Weise zu erklären oder Umwege zu bieten, ohne den Haupttext zu entgleisen. Mit der Bemerkung, dass gut abstrahierter Code möglicherweise bereits einen langen Weg zur Selbstdokumentation zurückgelegt hat.
Last but not least können Kommentare dazu beitragen, dass der Codierer einen hohen Abstraktionsgrad beibehält. Oft stelle ich fest, dass zwei aufeinanderfolgende Kommentare, die ich in eine Liste von Schritten aufgenommen habe, nicht auf derselben Abstraktionsebene sprechen, was eine sofortige kritische Betrachtung meiner Arbeit mit diesem Code rechtfertigt.
Bestimmte Probleme gehen über die Codierung hinaus und wirken sich wie andere Aktivitäten auch auf die Codierung aus. Kommentare können dabei helfen, die Hintergründe und Facetten unseres Codes zu klären, und ich finde, dass sie ein angenehmer Begleiter sind, der eine weichere Sprache spricht, von der die Person bei einer Änderung profitiert.