📇

パンチカードとしてのプログラミング

2022/05/09に公開

現代の私たちはソースコードによってプログラムを書きますが、最初期のプログラマはパンチカードでプログラムを組んでいました。パンチカードを使った最も有名な3つの技術を中心にご紹介していきたいと思います。

コンピュータとプログラミング

まずは言葉の意味を確認しておきます。コンピュータとプログラミングというのは全く異なる概念です。

コンピュータ:計算するマシンのこと
プログラミング:マシンへ命令して色々な処理をさせること

計算するマシンであれば、人類は古代から石ころや算盤で計算をしていました。しかし命令をセットして色々な処理をさせる..というのは難しい問題でした。計算としてのコンピューティングは比較的カンタンでしたが、プログラム(命令を読み込ませる)としてのプログラミングの実現は遥か後になってからです。それは技術的に実現が難しいというよりか、アイディアや考え方の問題だったかもしれません。

パンチカード

「マシンへ色々な命令をセットしてそれ通りに動かす」というのが初めて実現されたのは、パンチカードによってでした。パンチカードとは厚めの紙などでてきたカードのことです。

穴を開ける位置が決まっており、どの位置に穴を開けるか?によって情報を表します。処理させた命令や文字列を穴の有無によって表しました。このカードをマシンへ読み取らせ、プログラムを動かしていました。「穴の有無によってマシンを動かす」というのはそのまま現代のコンピュータが0/1によって情報を処理するのとつながります。

コンピュータの源流がパンチカード..というのはすごく不思議な感じがします。現代の私たちは人間が読めるテキスト形式でソースコードを書いています。JavaやPythonなどのいわゆる高級言語です。しかし最初期のプログラマはコンピュータが使う言葉(0と1のマシン語)によって、しかもカードに開けた穴の有無によってマシンを動かしていました。

1800年頃:ジャガード織機

今日のプログラミングに最も近い発明は、1800年頃にジョセフ・マリー・ジャカールが発明したジャガード織機です。ジャガード織機は、折り方のパターンをカードに記録する方法を用いていました。カードに穴が空いていれば織機の針は現在位置から動きません。穴がなければ針は前に押し出され糸は上に引き上げられます。またカードを交換すること、異なるパターンも折ることができました。ジャガード織機に使われたパンチカードのアイディアは、後にバベッジやホレリスへと引き継がれていきます。

チャールズバベッジ

ジャガート織機のアイディアを発展させたのがイギリスの数学者チャールズバベッジです。19世紀のイギリスでは産業革命によってモノが大量に生産されていました。経済が急速に発展し、貿易などの航海が盛んになります。航海には様々な計算を使用しており、中でも計算の結果をまとめた対数表が必要でした。対数表は航海術・天文学・統計学など様々な分野で利用されており、当時は人の手によって計算されていました。

しかし人間の計算には必ずミスが付きものです。増加する人口や経済へ手作業では追いつかなくなっていました。バベッジが階差・解析機関を発明した背景には、こうした当時の正確な計算への強いニーズがありました。

1822年:階差機関

そこでバベッジは機械に計算させることを思いつきます。人間よりも機械に計算させればミスはないと考えたのです。1822年、彼は階差機関を発明します。階差機関とは対数表を計算させるための機械です。

仕組みとしては計算の1つ1つを歯車の動きによって処理します。歯車が決められた通りに動くなら間違いは起こりません。 しかしデモンストレーション用の模型しか完成させることができませんでした。設計は見事でしたが、その製造には費用がかかりすぎたのです。

YouTubeでも彼の作った階差機関を見ることができます。)

1837年:解析機関

バベッジは対数表だけでなく、他の計算にも使える機械も考案しました。解析機関は現代のコンピュータの5台装置といわれる、入力・出力・記憶・演算・制御の5つの機能を備えていました。例えばストアという部分は現代のコンピューターのメモリに相当し、ミルという部分は同じくCPUに相当します。

解析機関では穴の空いたカードを使って、計算用の機械にプログラムを読み込ませようとしていました。穴が開いている・開いていないの組み合わせで、様々な情報を表すことができます。 それは現代のコンピューターが2進数(1/0)で色々なデータを表すことと同じです。(パンチカードで情報を処理する..というのはジャガート織機のアイディアを借りたモノでした。)

「プログラムを読み込ませて計算させることができる」という点で、解析機関は現代のコンピュータの源流..とも言われています。 プログラミングにより多用途に使える世界初の汎用コンピュータを目指したモノでした。しかしこの解析機関も結局はイギリス政府から予算を取ることができませんでした。

1890年:ハーマンホレリス

次に大量のデータを処理する発明がなされます。舞台は19世紀のアメリカです。移民によりアメリカの人口が増え続けていました。

増加する人口を把握するため政府は国勢調査を実施します。しかし増え続ける人口に調査が追い付かなくなっていました。調査を終えるには13年かかるとも言われていました。今風に言うなら、ビッグデータの処理に困っていたともいえます。大量の情報の取り扱いに悩むのは昔も今も同じです。

アメリカの発明家ハーマンホレリスはデータ処理の問題に革命を起こします。ホレリスが開発したタビュレーティングマシンはパンチカードを高速に処理するマシンです。特定の位置に穴を空けることによって、性別・住所・配偶者の有無など特定の情報を記録します。カードに記録された情報を処理することで、13年かかるといわれた人口調査が18ヶ月という驚異的なスピードで終わりました。

ホレリスは大成功を収め、会計や在庫管理など様々な分野で応用されるようになりました。彼は後のIBMにつながる会社も立ち上げています。

パンチカードから機械へ

プログラミングの主役はパンチカードからコンピュータへと移っていきます。現代の私たちがカードによってプログラムを組むことはありません。しかし穴があるか?ないか?によってデータを判別する仕組みは、そのままコンピュータへと引き継がれていきます。扱える情報の種類は格段に増えましたが、0と1によってデータを扱う点は変わっていません。コンピュータは技術的に高度な仕組みが使われているのもそうですが、極めて理論的な側面が強いマシンなのです。

Discussion