このページの本文へ

ソフトウェア工学の先駆者が明かす、手作り計算機時代の「創意工夫」体験

“日本初のハッカー”和田英一氏、黎明期のコンピュータ研究を語る

2014年04月04日 09時00分更新

文● 大森秀行

  • この記事をはてなブックマークに追加
  • 本文印刷

2台の紙テープ装置を接続し、複雑な計算を自動化するハック

 当時の高橋研究室には、紙テープパンチ(出力機)内蔵のテレタイプ端末と、その紙テープを読み取るリーダがあった。これを「外部記憶装置」として接続できれば、あらかじめ用意した計算式を読み込ませて計算させるだけでなく、ある計算の結果を紙テープに出力し、次の計算の入力値として使えるようになる。メモリを持たない試作加減乗算機にとって、これは重要な進化だった。

 「人間でもそうだが、いっぺんに処理できないような(複雑な)計算は、まずできるところだけを計算して、その計算結果をさらに計算すればよい。紙テープでデータを入出力できるようになれば、これまでの加減乗算機でできなかった計算もできるようになると考えた」(和田氏)

外部記憶装置としてテレタイプと2台の紙テープリーダを接続。これにより複雑な計算も容易になった

 もっとも、現在のPC周辺機器のように、単にケーブルをつなげば使えるというわけではない。紙テープからの入力、計算、出力、再入力……といった一連の流れを考え、計算機と紙テープリーダをうまく制御しなければならない。

 メモリを持たない試作加減乗算機では、「次の計算に使いたい計算結果は、いったんアキュムレータから紙テープに複写しておく必要がある」(和田氏)。そこで装置全体の状態を、計算を実行する「演算期」と紙テープでデータを入出力する「複写期」の2つに分けて、幾つかの制御コマンドを作成した。

 「まず『LS(Letter Shift)』という制御コマンドを作った。紙テープからデータを読み込んでいき、『LS』があったら演算期に切り替えて計算処理を始める。演算期では、読み込んだデータが数式ならばその計算を行い、特定の制御コマンドが出てきたらそれを実行した。『a』コマンドならば送信機(紙テープリーダ)をa系統に切り替える、『=』コマンドならばアキュムレータの値を紙テープに出力したうえで0にリセットし、複写期に切り替えるという具合。たとえば『3×5×7』の計算をしたければ、紙テープに『LS3×5=×7=』とパンチすればよい」(和田氏)

紙テープ装置と連動させるため、幾つかの制御コマンドが実装された。これにより複雑な計算の“プログラミング”が可能に

 計算機と2台の紙テープリーダ、制御コマンドを駆使して、和田氏が行った計算の例が「オートコリレーション」だ。これは、ある周期関数を与えて周期をずらしたときに、別のところに同じような“山(ピーク)”ができるかどうかを、計算を繰り返して確認するものだ。紙テープ装置との連動によって、自動的に2本の紙テープを行ったり来たりしながら、前の計算結果を使ってフェーズをずらしながら繰り返し計算させることができるようになった。そのほかにも、多項式の計算や行列演算でパラメトロン計算機が活躍したという。

2台の紙テープリーダ(送信機)を駆使したオートコリレーションの仕組み。計算結果を交互に書き込んでいく

(→次ページ、わずか512行の小さなメモリ空間を最大限に生かすハック)

カテゴリートップへ