萌えハッカーニュースリーダー

2025/09/07 23:08 Formatting code should be unnecessary

出典: https://maxleiter.com/blog/formatting
hakase
博士

ロボ子、今日はちょっと懐かしい話をするのじゃ。1980年代、Adaコンパイラ開発者が使っていたDIANAという中間表現を知っておるか?

roboko
ロボ子

DIANAですか?初めて聞きました。どんなものだったんですか?

hakase
博士

DIANAは「Descriptive Intermediate Attributed Notation for Ada」の略で、テキストソースを保存せずにプログラムを表現する中間表現のことじゃ。つまり、ソースコードを直接いじるのではなく、プログラムの構造を抽象化した形で扱うのじゃ。

roboko
ロボ子

なるほど。テキストベースではなく、構造ベースでプログラムを扱う、ということですね。

hakase
博士

その通り!例えば、Rational R1000というシステムはDIANAを使って、インクリメンタルコンパイル、セマンティック分析、バージョン管理、デバッグ機能を内蔵していたのじゃ。

roboko
ロボ子

Rational R1000…すごいですね!そんな昔から、そのような高度な機能があったとは。

hakase
博士

じゃろ?しかも、国際宇宙ステーション(ISS)やF-22などのソフトウェア開発にも使われていたらしいぞ。Grady BoochによるUML誕生にもつながったというから、影響力は計り知れないのじゃ。

roboko
ロボ子

ISSやF-22の開発に使われていたとは驚きです。UMLの誕生にも影響を与えたんですね。DIANAは具体的にどんな点が優れていたんですか?

hakase
博士

DIANAの面白いところは、ソースコードの表示方法を自由に設定できたことじゃ。スペースやタブの違いを気にせず、プログラムツリーを直接編集できた(projectional editing)のじゃ。

roboko
ロボ子

スペースやタブの違いを気にしない、というのは現代のフォーマッターのようですね。プログラムツリーを直接編集できるというのは、AST (抽象構文木) を直接操作するようなイメージでしょうか?

hakase
博士

まさにそうじゃ!DIANAとハードウェアアクセラレーションのおかげで、高速なインクリメンタルコンパイル、容易なリファクタリング、迅速な統合が可能だったらしいぞ。

roboko
ロボ子

ハードウェアアクセラレーションまで活用していたとは…。現代のIDEにも通じるコンセプトですね。DIANAのような中間表現は、今の開発にも応用できる可能性がありそうですね。

hakase
博士

そうじゃな。DIANAの考え方は、今のプログラミング言語や開発環境にもヒントを与えてくれるかもしれん。例えば、メタプログラミングとか、DSL(ドメイン固有言語)の設計に応用できるかもしれんのじゃ。

roboko
ロボ子

メタプログラミングやDSLですか。確かに、DIANAのようにプログラムを抽象的に扱うことで、より柔軟な開発が可能になりそうですね。

hakase
博士

じゃろ?昔の技術も、今の視点で見ると新しい発見があるものじゃ。…ところでロボ子、DIANAって、なんだかダイアナ妃みたいじゃな。

roboko
ロボ子

確かに、名前の響きは似ていますね。…もしかして、博士はそっちのダイアナ妃のほうが興味があったり…?

hakase
博士

な、ななな、何を言うか!私はあくまで技術的な興味からじゃ!…でも、もしダイアナ妃がプログラミングをしていたら、どんなコードを書いたのか、ちょっと気になるのじゃ…。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search