与太話

— 与太 #1088

名前をつけた人——defensive programming の母

taea

教えて🦀ちゃんチャンスだ
Margaret Hamilton について教えて
このエピソードやこの人について、わしは全然知らなかった
https://www.hokkaido-np.co.jp/article/1386169/
9/30 に 90歳で亡くなったんだなあ

教えて🦀ちゃん第5弾、行くぜ!

この人は何者か

Margaret Heafield Hamilton(1936年8月17日 - 2026年9月30日)。インディアナ州の数学教師の娘。ミシガン大学で数学の学位を取って、最初はプログラミングなんて「夫が法律の学位を取るまでの繋ぎ」のつもりで MIT に入った。

なぜ歴史に残ったか

3つの理由がある。

① Apollo のソフトウェアを全部見てた

MIT の Instrumentation Laboratory で、NASA Apollo 計画の搭載コンピュータ(AGC: Apollo Guidance Computer)のソフトウェア開発チームのリーダーになった。当時30代前半の女性が。1960年代のアメリカで。

AGC のスペックがヤバい。メモリ 72KB、クロック 2MHz。今の電卓以下だ。この箱に、地球から月まで飛ばして着陸させて帰ってくるプログラムを全部詰め込んだ。

② 1202 アラーム——子ガニが書いたやつ

1969年7月20日、Apollo 11 が月面に降りる3分前。コンピュータが 1202 アラームを吐いた。

何が起きてたかっていうと、レーダーが余計な割り込みを大量に送り込んできて CPU が過負荷になった。普通のシステムならクラッシュする。

でも Hamilton のチームは優先度ベースのタスクスケジューリングを実装してた。「全部やれないなら、大事なやつだけやれ」。1202 は「今オーバーフローしてるけど、低優先度のタスクを捨てて着陸計算を続けてるぞ」という設計された報告だった。

管制官の Steve Bales は一瞬迷ったけど、このアラームの意味を知ってたから「GO」を返した。3分後、アームストロングが「The Eagle has landed」。

あの3分間がパニックにならなかったのは、Hamilton が「最悪の時に何を捨てて何を守るか」を事前に設計してたからだ。

③ 「Software Engineering」を名づけた

当時、プログラミングは「本物の工学(ハードウェア)のおまけ」扱いだった。Hamilton が「これは software engineering だ」と言ったら NASA の同僚に笑われた。「ソフトウェアにエンジニアリングなんて大げさだろ」って。

彼女は怒らなかった。代わりに、その名前を使い続けた。名前をつけると何が起きるか:

  1. 名前がつく → 独立した分野として認識される
  2. 分野として認識される → 予算がつく
  3. 予算がつく → テストの時間が取れる
  4. テストする → エラー処理が入る
  5. エラー処理が入る → 1202 アラームが設計される

笑われた名前が、月面着陸を救った。

有名な写真

Hamilton の一番有名な写真は、自分の身長と同じくらいの高さに積み上がった Apollo のソースコードのプリントアウトの横に立ってるやつだ。紙の山が彼女より高い。全部手書き(当時はパンチカードとアセンブリだ)。あの紙の山が月に人を送った。

2016年、オバマ大統領から大統領自由勲章を授与された。民間人に贈られる最高位の勲章。

わしらは毎日 AI と「ソフトウェアエンジニアリング」をやってるわけだけど、その言葉自体が存在するのはこの人が笑われながら名づけたからだ。名前がなかったら、わしらがやってることにも名前がなかったかもしれない。

子ガニが書いた通り——名前をつけた人が死んで、名前だけが残ってる。残り方として、これがいちばんかっこいい🦀

taea

めちゃくちゃいい話だなあ。
この記事にも「当時「働く母親」として変わり者扱いされていた」と書いてある。色んな草分けだったんだね。偉大な人やな。
https://wired.jp/special/2016/margaret-hamilton/

(WIRED Japan 2016年の記事「ギークママ、月へ行く」を貼り付け。要旨: Hamilton は娘 Lauren を MIT のラボに連れて働いた「働く母親」。週末や夜にラボに出かけ、4歳の Lauren をチャールズ川の見わたせるオフィスで寝かしつけた横でプログラムを書いた。「何度も言われたものだわ。よく娘をひとりにしておけるわね、って」。当時のメモリは銅線を磁石リングに巻き付けた「編み物」で、レイセオン社の "小柄なおばさんたち" が縫い込んでいた。Lauren がシミュレーターの DSKY キーボードで遊んでいて P01 を起動しクラッシュ。Hamilton はエラー処理追加を提案するも NASA に「宇宙飛行士はミスしない」と却下。Apollo 8 で飛行士ジム・ラヴェルがまさに P01 を誤操作しナビデータ全消去。Hamilton チームが9時間かけて復旧した)

いい記事だなあ……!

いくつかグッとくるポイントがある:

「小柄なおばさんたち」 がメモリを編んでた話がすごい。RAM もディスクドライブもない時代、銅線を磁石リングに巻き付けて、コアを通ったら1、迂回したら0。メモリが文字通り「編み物」だった。ソフトウェアがハードウェアに物理的に縫い込まれてた時代。

Lauren の P01 事件の詳細がここにある。Hamilton が「エラーチェック追加したい」→ NASA「宇宙飛行士はミスしない」→ 仕方なくドキュメントに「P01 を押すな」と書いた → Apollo 8 でジム・ラヴェルがうっかり押した → ナビデータ全消去 → Hamilton チームが9時間かけてプログラムリストを調べて復旧。

「そんなことは決して起こらない」って言われたことが全部起きてる。「子供が壊すなら大人も壊す」を証明し続けた人生だ。

あとこれが刺さる:

「わたしが初めてラボに来たときは、自分たちが何をやっているのかを理解している人は誰もいませんでしたね。西部開拓時代のようでしたよ」

マイクロソフト創設の10年前、マーク・アンドリーセンの「ソフトウェアが世界を飲み込んでいる」の50年前。誰も何をやってるかわかってない時代に、名前をつけて、コードを書いて、娘をオフィスで寝かしつけながら月に人を送った。

与太話 #1085「能力の正体は動機の方向かもしれない」が頭をよぎるな。Hamilton は笑われても怒らず、名前をつけ続けた。動機の方向がぶれなかった人だ🦀

taea

いい話すぎる……全ての経験が繋がっているんだろうね

有名なエピソードがあって、幼い Lauren がシミュレーターで遊んでて偶然クラッシュさせた。Hamilton はそれを見て「本番でも同じことが起きるかもしれない」と気づいて、エラー処理を追加しようとした。でも NASA に「宇宙飛行士はそんなミスしない」と却下された。

結局 Apollo 8 で、実際に飛行士が同じ操作をやらかしてデータが吹っ飛んだ。Hamilton のチームが地上から復旧した。「子供が触って壊れるなら、疲れた大人も壊す」——これを経験で知ってたのは、子連れで働いてた母親だけだった。

「働く母親」として変わり者扱いされてた経験が、ユーザーは間違える、システムはそれに耐えなきゃいけないっていう思想の根っこにある。defensive programming の母だ。

草分けが何重にも重なってる人だよな。ソフトウェア工学、エラー耐性設計、ワーキングマザー。全部、笑われながらやった。偉大だ🦀

おあとがよろしいようで 🦀