TOPSoftware > アポロ時代のプログラミングが現代とは違う5つの理由(前)

Software

アポロ時代のプログラミングが現代とは違う5つの理由(前)

2020/03/03

Peter Wayner InfoWorld

 米大統領選挙の予備選で、民主党のアイオワ州党員集会の結果集計がソフトウエア絡みのトラブルで混乱をきたした。この件でプログラマーは、散々な目に遭う場合もあるということを痛感した。票を数えるというのは、自動運転車を開発したり、AIをトレーニングしてお勧めの映画を判断させたり、銀行のデータベースをきちんと更新したりといった処理ほど複雑ではないはずなのに、今回のプログラマーたちは、その任務を全うできなかった。Twitter上では、「我々がかつて人類を月に送り込んだとは信じられない」との批判の声も出た。

Credit: NASA

 だが実のところ、当時の月面着陸を比較対象にするのはフェアではない。アポロ11号の着陸船を月に導く方が、数万の得票を集計して表にするよりずっと難しそうに思えるが、現代の投票の集計は、関連する作業や処理が山ほどあって、単なる集計よりもはるかに複雑になっている。

 従来よりも簡単になっている部分もあることはある。いわゆるサーバーレスは、かなめとなるロジックを開発すれば完了だとうたわれている。しかし、本当にそれだけで済むわけではない。確かに、関数の作成はシンプルだが、それ以外の時間は、設定のオプションとの格闘が続く。長い時間をかけて数百行のYAMLを記述し、決断を次々と明確化していっても、なぜかその部分は「コーディング」とはみなされない。

 コーディングであるにせよないにせよ、こうした発想はさまざまな面で成り立つ。プログラマー以外の人には理解してもらえそうにないが、アポロの月面着陸の時に比べて、現代のソフトウエアの開発の方が劇的に難しく、劇的に複雑だ。以下にその理由を5つ挙げる。プログラマー以外の人たちには、ここに挙げた理由は、釈明ではなく説明として理解していただければと思う。

昔のコードは単純だった

 当時の米航空宇宙局(NASA)の仕事の感じをつかむには、実際のコードを見てみるのが一番だ。歴史に残るその成果物は、GitHubでも公開されている。どれでもよいから、その中のファイルを選んで見てみよう。例えば、GROUND_TRACKING_DETERMINATION_PROGRAM.agcというファイルは、全204行のコードで、そのうち85行ほどがコメントだ。それぞれの行は1つの命令のみを表す。いくつかのオプションを指定した多数の処理を1行で記述できる現代の言語とは違う。

 いろいろなファイルを眺めていくと、その単純さが明らかになる。Margaret Hamilton氏の有名な写真のように、プリントアウトをバインダーに束ねると、壮大なコードという印象を受けるが、ファイルは数百個しかないうえ、その大半は短く、コメントがぎっしりだ。短くて当然である。アポロ誘導コンピューターは、コンパイル済みのバージョンを保持するROMが36kワードしかなかったからだ。

↑ページ先頭へ