- In früheren Ada-Entwicklungsumgebungen wurde das Problem der Code-Formatierung bereits gelöst
- Entwickler arbeiteten mit Code in Form der DIANA-Zwischendarstellung (IR) und betrachteten ihn mit jeweils eigenen Pretty-Printing-Einstellungen
- Auch heute gibt es durch Linter oder Formatierungsrichtlinien immer wieder Ineffizienz und Diskussionen
- Die damalige Rational-R1000-Workstation bot eine innovative Entwicklungsumgebung und entsprechende Funktionen
- Mit Blick auf die Code-Formatierung schlägt der Beitrag vor, sich an Ansätzen einer früheren Generation zu orientieren, um heutige Entwicklungspraktiken zu verändern
Die Debatte um Code-Formatierung – eine Lösung aus den 1980er-Jahren
- Der Autor erwähnt seine Erfahrungen mit Mr. Paige, einem Informatiklehrer, der während seiner Highschool-Zeit an einem Ada-Compiler gearbeitet hatte
- Als er sich 2016 über die umständliche Einrichtung eines Linter-Tools beschwerte und fragte, „warum wir uns mit so etwas immer noch herumschlagen müssen“, erfuhr er, dass dieses Problem bereits vor über 40 Jahren gelöst worden war
Das Aufkommen von Ada und DIANA
- Ada-Entwickler speicherten nicht einfach textuellen Quellcode, sondern nutzten eine Zwischendarstellung namens DIANA (Descriptive Intermediate Attributed Notation for Ada)
- Jeder Entwickler konnte den Quelltext mit seinen eigenen Pretty-Printing-Einstellungen in der gewünschten Form anzeigen
- Es gab weder Formatierungsdebatten noch Linter-Probleme, und im Editor ließ sich der Programmbaum direkt bearbeiten, ähnlich wie beim heutigen projectional editing
Rational R1000 – eine wegweisende Entwicklungsumgebung
- Die Rational R1000-Workstation integrierte zahlreiche fortschrittliche Funktionen wie inkrementelle Kompilierung, statische Analyse, Versionsverwaltung und Debugging
- Sie wurde für wichtige Softwareprojekte etwa beim DoD, der Internationalen Raumstation (ISS) und dem Kampfflugzeug F-22 eingesetzt und trug auch zur Entstehung von UML bei
- Laut Grady Booch war das R1000 eine auf DIANA basierende Maschine, die keinen Quellcode speicherte, sondern ausschließlich Pretty-Printing des DIANA-Baums nutzte
Vorteile der DIANA-basierten Entwicklung
- Es gab keinen Bedarf an Formatierungsdebatten, Linter-Setups oder einer Vereinheitlichung der Editor-Umgebung
- Hardwarebeschleunigung ermöglichte inkrementelle Kompilierung, einfaches Refactoring, schnelle Integration und insgesamt eine innovative Entwicklungserfahrung
- Das hatte großen Einfluss auf die Entwicklungseffizienz und die Arbeit an großen Systemen
Was das für heute bedeutet
- Hardwarebeschleunigte Kompilierung ist heute weniger wichtig, doch das Problem der Code-Formatierung ist weiterhin nur unzureichend gelöst
- Auch wenn projectional editing oder Live-Umgebungen nicht zum Mainstream gehören, ist es an der Zeit, wie bei den früheren Ansätzen über die Einführung effizienterer und weniger umstrittener Entwicklungspraktiken nachzudenken
Referenzmaterial
- Der Autor zitiert bei seiner Untersuchung dieses Themas verschiedene Dokumente und technische Berichte zum R1000
4 Kommentare
Soweit ich weiß, gibt es für gemeinsam genutzten Code bereits die Funktion, ihn mit einheitlichen Einstellungen automatisch zu formatieren, und ich denke, dass Unternehmen das häufig nutzen.
Ich denke, der Punkt ist nicht automatisches Formatieren, sondern dass schon die Annahme, ein bestimmtes Format sei überlegen, oder der Prozess, das eigene Format aufzugeben und sich an ein ungewohntes anzupassen, unnötig ist. Die Logik ist also, eine Zwischenrepräsentation zu speichern, die nicht an Formatierung gebunden ist, und sie dann je nach Nutzer in der jeweils bequemsten Form hübsch auszugeben.
Ich wollte damit sagen, dass man mit automatischer Formatierung in den bestehenden Sprachen dasselbe erreichen kann, auch ohne Zwischenrepräsentation, aber meine Erklärung war wohl unzureichend.
Hacker-News-Kommentare
strcpy-Funktion in C mit klareren, besser lesbaren Begriffen und Syntax vollständig neu gestalten ließe.char *argv[]wird die Lesbarkeitsproblematik komplexer Deklarationen kritisiert. Auch C++-Stile beim Formatting, etwachar* a, b, können Missverständnisse erzeugen; solche Stile sollte man deshalb vermeiden.=ausrichten oder durch zusätzliche Einrückung die strukturelle Tiefe stärker sichtbar machen. Wenn man die Werte selbst hervorheben will, richtet man Zahlen rechtsbündig aus; wenn man Struktur betonen will, richtet man Member-Variablen übersichtlich aneinander aus. Welcher Aspekt des Codes hervorgehoben werden soll, kann je nach Autor verschieden sein. Ohne zusätzliche Metadaten lasse sich diese Information nicht aus dem AST extrahieren.setValue([bar, glob], 1)oder eine Kommentar-Syntax für Style-Overrides.