- 過去の Ada開発環境 では、コードフォーマットの問題はすでに解決されていた
- 開発者は DIANA中間表現(IR) の形でコードを扱い、それぞれが望むプリティプリント設定で閲覧していた
- 現代でも linter やフォーマット方針などをめぐる 非効率と議論 が繰り返されている
- 当時の Rational R1000ワークステーション は、革新的な開発環境と機能を提供していた
- コーディングのフォーマット問題について、一世代前の方式を参考に 今日の開発慣行を変える ためのアイデアを提案している
コードフォーマット論争 ― 1980年代の解決策
- 筆者は、高校時代にAdaコンパイラの作業に参加していたコンピュータサイエンス教師、Mr. Paigeとの経験に触れている
- 2016年に linter ツールの設定の煩わしさに不満を述べ、「なぜ今でもこんな問題に悩まされなければならないのか」と尋ねた際、すでに40年以上前にこの問題が解決されていたという話を聞いた
AdaとDIANAの登場
- Ada開発者は テキストのソースコード を保存する代わりに、DIANA(Descriptive Intermediate Attributed Notation for Ada) という中間表現を利用していた
- 各開発者は自分専用の プリティプリント設定 でソースを好みの形で閲覧できた
- フォーマット論争や linter の問題は存在せず、エディタではプログラムツリーを直接編集できた(現代の projectional editing に似ている)
Rational R1000 ― 先駆的な開発環境
- Rational R1000 ワークステーションは、インクリメンタルコンパイル、静的解析、バージョン管理、デバッグ など、さまざまな高度機能を内蔵していた
- DoD などの政府プロジェクト、国際宇宙ステーション(ISS)、F-22戦闘機など重要なソフトウェア開発に活用され、UMLの誕生にも貢献した
- Grady Boochによれば、R1000はDIANAベースのマシンであり、ソースコードを保存せず、DIANAツリーのプリティプリントのみを使用していた
DIANAベース開発の利点
- フォーマット論争や linter の設定、エディタ環境の統一が不要だった
- ハードウェアアクセラレーションにより、インクリメンタルコンパイル、容易なリファクタリング、迅速な統合など、革新的な開発体験を提供した
- 開発効率や大規模システム開発に重要な影響を与えた
今日への示唆
- ハードウェアアクセラレーションによるコンパイルの重要性は下がったが、フォーマット問題の解決はいまだ不十分である
- 主流の方式が projectional editing やライブ環境ではないとしても、過去のアプローチのように より効率的で議論の少ない開発慣行の導入 を考えるべき時期に来ている
参考資料
- 筆者はこのテーマを調査する中で、R1000に関するさまざまな文書や技術報告書を引用している
4件のコメント
共有コードはすでに統一された設定で自動フォーマットする機能がありますし、企業でも広く使われているものだと認識しています。
自動フォーマットが論点なのではなく、特定のフォーマットが優れているという認識や、自分のフォーマットを捨てて見慣れないフォーマットに適応しなければならない過程そのものが不要だ、という話のようです。フォーマットに縛られない中間表現を保存しておき、ユーザーごとに自分が使いやすい形でプリティプリントすればよい、という理屈です。
自動フォーマットによって、中間表現がなくても既存の言語でまったく同じことができる、という話をしたかったのですが、説明が足りませんでしたね。
Hacker Newsの意見
=を基準に整列するのか、あるいはインデントを入れて構造の深さをより強調するのかではすべて異なる。値自体を強調したいなら数値を右寄せにし、構造を強調したいならメンバー変数をそろえて見やすくするなど、作者が強調したいコードの側面は異なりうる。こうした情報は追加のメタデータなしには AST から抽出できないと主張している。