- ケン・トンプソンは新しいタイプセッター機械の付属ソフトが使い物にならなかったときに、真っ先にディスアセンブラを作ったそうです。
- 根本の基礎ツールから作る発想がまさに天才的。
- 現代でも「まず何が必要か」を見極める力は重要ですね
カーニハンが見た「別次元の才能」
“I think he’s a singularity. I have never seen anybody else who’s in the same league as him.”
「彼は特異点だ。これまで彼と同じレベルの人間を見たことがない」
カーニハンはこう断言します。多くの優秀なプログラマーを見てきた彼が、ケン・トンプソンを「別の宇宙にいる」と表現するのはなぜでしょうか。UNIX開発者として知られるケン・トンプソン。C言語の共同開発者ブライアン・カーニハンが語ったエピソードから、プログラミングの創造性について考えてみましょう。
その理由は三つの要素の組み合わせにあります。
- 素早く動作する高品質なコードを書く能力。
- 適切な問題を適切な方法で解決する洞察力。
- そして、これらを様々な分野で繰り返し発揮する応用力です。
数時間で作られたディスアセンブラ
ベル研究所に新しいタイプセッター(文字を印刷する機械)が導入されました。この機械は小型コンピューターで制御されていましたが、付属のソフトウェアがひどい出来でした。
タイプセッターの中身は16ビットの平凡なコンピューターです。しかし、ソースコード(人間が読める形のプログラム)は提供されず、機械語で動作するプログラムしかありませんでした。これでは何が起きているのか理解できません。
カーニハンとケン、そして同僚のジョー・コンドンは頭を悩ませました。夕方になってカーニハンは「夕食を食べに帰る。また後で戻ってくる」と言い残して帰宅し、午後7時か8時頃に戻ってくると、ケンは既にディスアセンブラを完成させていたのです。
ディスアセンブラとは何か
ディスアセンブラとは、機械語を人間が読めるアセンブリ言語に変換するツールです。
コンピューターは最終的に0と1の機械語でしか動作しません。しかし、人間がこれを読むのは困難です。アセンブリ言語は機械語と一対一で対応する、より人間に読みやすい形の言語です。
例えば機械語の「10110000 01000001」は、アセンブリ言語では「MOV AL, 41h」(ALレジスタに65という値を入れる)と表現されます。ディスアセンブラはこの変換を自動化するツールなのです。
ディスアセンブラは「足がかり」となるツールでした。これにより、チームは機械の動作を理解し、次のステップに進めます。アセンブラ(人間が書いたアセンブリ言語を機械語に変換するツール)の作成、そして最終的にはより使いやすいソフトウェアの開発へとつながります。
本質を見抜いてすぐに行動する
ケンが数時間でディスアセンブラを作ったのは、なぜ驚異的なのでしょうか。
まず、当時(1970年代)はインターネットがありませんでした。機械の命令セット(どんな命令があるか)を調べるには、分厚いマニュアルを探し出すしかありません。Googleで「この機械のオペコードは何か」と検索する、なんてことはできなかったのです。
そして最も重要なのは、問題の本質を見抜く洞察力です。ケンは「機械を理解するには、まずその言葉を読めるようになる必要がある」と即座に判断しました。これがディスアセンブラという基礎ツールの作成につながったのです。
多様な分野での創造力
ケンの才能はコンピューターシステムだけに留まりませんでした。
チェスプログラムでは、世界初のマスターレベルのチェスコンピューターを作りました。CADツール(設計支援ソフト)の開発にも関わります。さらに、誰よりも早くMP3のような音声圧縮技術を使った携帯音楽プレーヤーを作りました。これはソニーのウォークマンのような製品でしたが、廊下の向こうにいた音声符号化の専門家と話をするだけで実現したのです。
現代に通じる本質
現在、AIツールが普及し、プログラミングの方法は大きく変わりつつあります。しかし、ケンの問題解決アプローチには変わらない価値があります。
- 第一に、問題の本質を見抜く力です。
表面的な課題に対処するのではなく、根本的な問題を特定する。 - 第二に、基礎ツールの重要性を理解することです。
複雑な問題は、適切な道具があれば解決可能になります。 - 第三に、学際的な思考です。
一つの分野の知識を他の分野に応用する柔軟性が、革新を生み出します。
プログラミングの真の面白さ
ケンの事例が示すのは、プログラミングが単なる技術的作業ではないということです。それは創造的な問題解決の芸術であり、制約の中で最適解を見つける知的ゲームです。
数時間でディスアセンブラを作る。一見地味な作業に思えるかもしれません。しかし、そこには深い洞察と創造力が込められています。限られた情報から本質を掴み、適切なツールを設計し、チーム全体の前進を可能にする。これこそがプログラミングの醍醐味なのです。
ケン・トンプソンの天才性は、技術力だけではありません。問題を正しく理解し、最適なアプローチを選択し、それを素早く実行に移す総合的な能力です。現代のエンジニアが学ぶべきは、この根本的な問題解決の姿勢かもしれません。
- Ken Thompson – Wikipedia – UNIX開発者ケン・トンプソンの生涯と業績についての包括的な情報
- Kenneth Lane Thompson – A.M. Turing Award Laureate – ACM公式によるチューリング賞受賞歴とUNIX開発の詳細な経緯
- Brian Kernighan – Wikipedia – C言語の共同開発者ブライアン・カーニハンの経歴とベル研での活動
- Wisdom from 50+ years in software featuring Brian Kernighan – カーニハンのインタビューでケン・トンプソンの天才性について語った内容を含む
- Disassembler – Wikipedia – ディスアセンブラの技術的定義と仕組みの詳細説明
- Ken Thompson │ The National Inventors Hall of Fame® – 国立発明家殿堂による公式の業績評価とUNIXの影響についての解説
- Kenneth L. Thompson – National Science and Technology Medals Foundation – 米国国家技術革新メダル受賞時の公式評価と貢献内容