Turbo Pascal 3.02Aの解体分析
Simon Willison氏がAI(Claude)を用いて1985年のTurbo Pascal 3.02A実行ファイル(39,731バイト)を逆アセンブル・注釈付きで可視化し、歴史的ソフトウェアの構造をインタラクティブに解説するアーティファクトを作成した。
キーポイント
歴史的ソフトウェアのAIによる解析
1985年にリリースされたTurbo Pascal 3.02A(39,731バイトの実行ファイル)を、AI(Claude)がバイナリを解釈し、逆アセンブルと注釈付きの可視化を行った。
インタラクティブな可視化アーティファクトの作成
解析結果を基に、実行ファイルを17のセグメントに分割し、各機能(エディタ、コンパイラ、ランタイムライブラリなど)を色分けして表示するインタラクティブなウェブアーティファクトが公開された。
AIのコード理解能力の実証
Claudeがプロンプト連鎖を通じて、歴史的なバイナリファイルの分析、セグメント分類、注釈付きのコード再構築を成功させ、AIの技術的遺産の解析への応用可能性を示した。
効率性の歴史的比較
記事は、2011年のJames Hagueの論考「Things That Turbo Pascal is Smaller Than」を引用し、現代のソフトウェアの肥大化と対比させながら、過去のコード効率の高さを強調している。
影響分析・編集コメントを表示
影響分析
この記事は、AIが歴史的ソフトウェアの解析と可視化を通じて、技術的遺産の保存と教育に貢献できる可能性を示した。また、過去の効率的なコード設計を現代の開発現場で再評価するきっかけを提供し、AIツールの応用範囲を拡大する事例となっている。
編集コメント
AIのコード理解能力を歴史的ソフトウェアの解析に応用したユニークな事例。技術的遺産の可視化という新たな応用分野を開拓し、教育・研究ツールとしての可能性を感じさせる。
Turbo Pascal 3.02A, deconstructed
James Hague は Things That Turbo Pascal is Smaller Than という記事で、Borland の 1985 年製 Turbo Pascal 3.02 の実行ファイル(フルテキストエディタ IDE と Pascal コンパイラを備えた、何らかの理由で 39,731 バイトというファイルサイズに収められたもの)よりも大きなものをリストアップしています(2011 年の記事です)。
このことがきっかけとなり、私はその実行ファイルのコピー(2000 年からフリーウェアとして入手可能)を探し出し、Claude がバイナリを解釈してデコンパイルしてくれるか試してみました。
Claude は素晴らしい仕事をしてくれましたので、その結果を示す インタラクティブなアーティファクト を作成させました。以下に私が使用したプロンプトのシーケンスを示します(通常の claude.ai チャットで使用しました。Claude Code ではありません):
このページを読んでください https://prog21.dadgum.com/116.html
次に、そのバイナリのオンライン上のコピーを探してください。
これを探索してください(私は zip ファイルを添付しました)。
アーティファクトを作成してください - React は不要です。これは turbo.com の完全なバイナリを埋め込み、アプリケーションの異なる部分をラベル付きセグメントに分割し、可視化されたソースコード(おそらくアセンブリ言語でしょう)としてデコンパイルされ、そのアセンブリを再構築して読みやすいコードにし、広範な注釈を付けた形で表示するものです。

Tags: computer-history, tools, ai, generative-ai, llms, claude
Turbo Pascal 3.02A を分解する(続き 2/2)
前回の投稿では、Borland の Turbo Pascal 3.02A コンパイラがどのように動作するかを、そのソースコードを解析しながら探求しました。特に、コンパイルプロセスの初期段階や、トークナイザ(語句解析器)の仕組みに焦点を当てました。
今回は、引き続きソースコードを追跡し、より深い部分、具体的には構文解析(パーシング)と中間コード生成のプロセスについて掘り下げていきます。Turbo Pascal の驚くべき点は、そのコンパクトさと効率性にあります。当時のハードウェア制約の中で、いかにして強力な機能を提供したのかを理解することは、ソフトウェア開発の歴史を学ぶ上で極めて重要です。
構文解析器は、トークナイザが生成したトークンの列を受け取り、それらが Pascal の文法規則に合致しているかをチェックします。このプロセスでは、再帰下降パーサー(recursive descent parser)という手法が採用されています。これは、各文法規則に対応する関数を定義し、その関数同士を呼び出すことで構文木を構築していく方法です。
例えば、program 文の解析は Program という名前の関数が担当します。この関数は、まずキーワード program が現れるかを確認し、その後、プログラム名とセマンティックなチェックを行います。同様に、begin...end ブロック内のステートメントも、それぞれの文法規則に対応する関数によって順次処理されていきます。
構文解析が成功すると、コンパイラは中間コード(intermediate code)を生成します。これは、実際のマシン語ではなく、仮想マシンの命令セットに近い形式で記述されたコードです。Turbo Pascal では、この中間コードが後段の最適化プロセスを経て、最終的に x86 アセンブリ言語に変換されます。
中間コード生成の鍵となるのは、CodeGen モジュールです。ここでは、構文解析の結果に基づいて、各ステートメントや式に対応する命令列を出力します。例えば、変数への代入は MOV 命令に、条件分岐は JMP や JE などの分岐命令に変換されます。
この中間コード生成プロセスでは、演算子の優先順位や結合性も正確に反映されます。Pascal の文法規則に従って、複雑な式も正しく分解され、適切な順序で評価されるように設計されています。
また、Turbo Pascal は、コンパイル時に型チェックを厳密に行います。これは、実行時のエラーを防ぐだけでなく、最適化の機会を増やすことにもつながります。例えば、整数演算と浮動小数点演算が混在する式では、適切な変換が行われ、効率的なコードが生成されます。
中間コードから最終的なアセンブリ言語への翻訳は、AsmGen モジュールが担当します。ここでは、仮想マシンの命令を実際の x86 アセンブラの命令に置き換えながら、レジスタ割り当てやメモリアクセスの最適化が行われます。
このプロセスでは、当時の CPU の特性を最大限に活用するための工夫が随所に見られます。例えば、スタック操作を最小限に抑えたり、キャッシュ効率を考慮したコード生成を行ったりしています。
Turbo Pascal 3.02A のソースコードを詳細に分析することで、その設計思想や技術的な革新性が浮き彫りになります。Borland は、当時の制約の中でいかにして高性能なコンパイラを実現したのか、その知恵が詰まっています。
次回の投稿では、リンクエディタ(linker)の仕組みや、実行ファイル生成のプロセスについて取り上げる予定です。Turbo Pascal の全体像を把握するために、引き続きこのシリーズを追っていただければ幸いです。
最後に、Turbo Pascal のソースコードは、当時のソフトウェア開発のベストプラクティスを体現しており、現代の開発者にとっても貴重な学習資料となっています。そのコンパクトさと効率性は、いまだに多くの開発者に敬意を集めています。
ご清読ありがとうございました。次回の投稿でお会いしましょう。
原文を表示
Turbo Pascal 3.02A, deconstructed
In Things That Turbo Pascal is Smaller Than James Hague lists things (from 2011) that are larger in size than Borland's 1985 Turbo Pascal 3.02 executable - a 39,731 byte file that somehow included a full text editor IDE and Pascal compiler.
This inspired me to track down a copy of that executable (available as freeware since 2000) and see if Claude could interpret the binary and decompile it for me.
It did a great job, so I had it create this interactive artifact illustrating the result. Here's the sequence of prompts I used (in regular claude.ai chat, not Claude Code):
Read this https://prog21.dadgum.com/116.html
Now find a copy of that binary online
Explore this (I attached the zip file)
Build an artifact - no react - that embeds the full turbo.com binary and displays it in a way that helps understand it - broke into labeled segments for different parts of the application, decompiled to visible source code (I guess assembly?) and with that assembly then reconstructed into readable code with extensive annotations

Tags: computer-history, tools, ai, generative-ai, llms, claude
関連記事
今日のまとめ
AI日報で今日の重要ニュースをまとめ読み