@frowing, ich würde vorschlagen, dass eine Möglichkeit, das Problem der Ausführlichkeit zu betrachten, darin besteht, zu erkennen, dass Programmierung immer eine Mischung aus zwei ziemlich unterschiedlichen Arten ist, eine Lösung zu finden und auszudrücken.
Der erste und ausführlichere Stil ist die sprachorientierte (sprachliche) Programmierung. Dieser Stil kombiniert nomenähnliche Wörter und verbähnliche Wörter in satzähnlichen Strukturen und soll auf die gleiche Weise wie ein gut geschriebener Absatz gelesen und verstanden werden. Sprachprogrammierung ist der universellste Programmierstil, da die Sprache selbst universell ist. Aus dem gleichen Grund benötigt die langfristige Programmunterstützung immer eine leistungsfähige sprachliche Komponente, da das erste, wonach ein neuer Programmierer suchen wird, das konzeptionelle Verständnis dessen, was getan wird. Je weiter Sie sich von dem Kontext entfernen, in dem Sie ein Programm erstellt haben, desto wichtiger ist in der Regel ein sprachlicher Programmierstil, um sicherzustellen, dass Ihre Annahmen und Konzepte nicht von der nächsten Person missverstanden werden, die versucht, Ihren Code zu verstehen .
Der zweite und prägnantere Stil ist die mathematisch orientierte Programmierung. Diese Art des Denkens beruht auch auf der Sprache, da zum Beispiel Variablen zu Nomen und Operatoren zu Verben analog sind. Das mathematische Denken nutzt jedoch die erstaunliche und höchst parallele Fähigkeit unseres Gehirns, komplexe räumliche Transformationen an Objekten vorzunehmen, die sich in unserer Sichtlinie befinden. Indem wir Substantive und Verben als kompakte, unverwechselbare Symbole darstellen, die in gut strukturierten imaginären Objekten - Gleichungen - angeordnet werden können, können wir unsere hochparallelen visuellen Fähigkeiten nutzen, um Rotationen, Ersetzungen, Bewegungen, Inversionen und andere Transformationen an diesen imaginären Objekten durchzuführen Objekte. Das Ergebnis ist eine enorme Steigerung der Anzahl der Fälle, die wir gleichzeitig bearbeiten können, da jedes Symbol ganze Klassen eng verwandter Objekte darstellen kann.
Beachten Sie, dass Sie Ihr imaginäres Objekt in Größe und Merkmalen einem realen Objekt so ähnlich wie möglich halten müssen, um die visuelle Verarbeitung effektiv anwenden zu können. Wenn das erforderliche Sichtfeld zu weit wird oder die Symbole nicht wie bewegliche Markierungen auf einem Objekt verwendet werden können oder wenn Sie Buchstaben „lesen“ und in Wörter umwandeln müssen, wird die Fähigkeit, komplexe Transformationen zuverlässig durchzuführen, beeinträchtigt schnell auch für einen sehr guten Mathematiker.
Das ist der Grund, warum Menschen, die tief in den mathematischen Stil des Programmierens vertieft sind, ernsthaft unglücklich werden können, wenn eine Gleichung in einem so genannten "wörtlichen" Sprachstil ausgedrückt wird. Es liegt nicht daran, dass sich die Gleichung wesentlich geändert hat, sondern daran, dass eine solche Verbreitung es nahezu unmöglich machen kann, einen visuellen Stil des Verstehens auf sie anzuwenden. Gleichzeitig wird ein neuer Programmierer, der mit den kurzen Symbolen überhaupt nicht vertraut ist, wahrscheinlich eine ausführlichere Version bevorzugen, die mehr sprachliche Informationen bietet, um zunächst zu verstehen, was der Code tut.
Also, was würde ich empfehlen?
Verwenden Sie beide Stile, achten Sie jedoch genau darauf, warum Sie die einzelnen Stile verwenden.
Zum Beispiel sollte alles, was die Möglichkeit hat, mit der Außenwelt in Kontakt zu treten, auf einer bestimmten Ebene sehr ausführlich sein, auch wenn es sich nur um Inline-Kommentare handelt, die mit dem Code vermischt sind, und es sollte auch eine automatische Überprüfung auf korrekte Verwendung enthalten. Kryptische und vor allem unvollständig definierte Notationen haben mit solchen Schnittstellen nichts zu tun, da sie irgendwann garantiert missverstanden werden. Der Verlust des Mars Climate Obiter im Jahr 1999, der darauf zurückzuführen ist, dass nicht erkannt wurde, ob Software-Schnittstelleneinheiten in Pfund oder Newton ausgedrückt wurden, ist ein besonders deutliches Beispiel für die Gefahren, sich bei Software- oder Hardware-Schnittstellen zu beiläufig auf unformatierte Zahlen zu verlassen.
Umgekehrt ist jede Form der Programmierung, die stark algorithmisch und mathematisch ist, ein guter Kandidat für eine prägnante Programmierung, die den mathematischen Denkstil unterstützt. Wenn jemand neuen Code pflegen muss, ist es normalerweise besser, die mathematischen Notationen zu lernen, als zu versuchen, den Code in ausführlichere Formen umzuwandeln. Es sollte natürlich jederzeit eine Dokumentation zur Verfügung stehen, um den Entwicklern die mathematischen Teile des Codes zu erläutern, aber das ist ein separates Problem.
Dazwischen liegen viele Fälle, in denen der Programmierer über ein beträchtliches Ermessen verfügt. Ich würde vorschlagen, zu prüfen, wie der Code auf lange Sicht gepflegt wird, und zu versuchen, den Bedürfnissen der Menschen Rechnung zu tragen, die den Code auf lange Sicht am ehesten pflegen.