コンピュータのプログラムとは何か?(4) 〜 プログラミング入門一歩前
4回目になります。
前回はプログラムの可能性について話しました。
コンピュータは人間の、
あの計算もその計算も、
答えが欲しい時にすぐに欲しいの!
だから予め書いておくの!
そしていざその時がきたらさっと渡すの、
あんた、これやってって。
全部やることここに書いてあるから、
書いてある通りにすぐやって。って。
このようなワガママなプログラムを受け入れることができます。
でも、なぜそんなことができるのでしょうか?
プログラムを書いて渡すだけでよいのはなぜ?
人間はコンピュータにさせたい計算をあーしなさいとかこーしなさいとかプログラムに書いてよこします。
それに対してその計算をする計算機をいちいち組み立てるのは面倒です。(いわゆる”自動計算機”の初期の頃はそうしていました。)
ですので、どんな計算でもできるような機械を前もって作っておくのです。
そもそもプログラムは簡単な計算の組み合わせでできていると言いました。
で、あるならコンピュータ側も、簡単な計算を前もって全て組み合わせておけば良いのです。
どういうことか?
前回の例を使いましょう。
0→0 という計算は A地点からB地点へ0と書かれたビー玉をそのまま運ぶという仕組みで実現できるとしましょう。この時必要なものはパイプ一本になります。
ー
次にそれを組み合わせて2つの情報=ビー玉をいっぺんに運ぶという計算をさせようとするとこうなります。
二
このときパイプを2本にするという工事をしたのでした。
さて、”工事”は大変です。危険も伴います。
が、お得です。
なにが、お得かと言えば、このようにしてパイプを2本作っておけば、1つのビー玉を運ぶという計算と、2つのビー玉を運ぶという計算の両方に対応できます。
当たり前すぎますが、例えばA地点からB地点までの道のりが1本しかないよりも3本あった方が、交通量が少ない時にも多い時にも道路の機能を果たしやすいですよね?
ー < 二 < 三
※3は2を含み2は1を含むとき
このような理屈で考え、コンピュータはたくさんの小さな計算を前もって用意しているのです。
一にも二にも対応するため予め用意
三
プログラムが渡されたらいつでも実行できるように全て工事済みなのです。
でもそうなると、計算が多すぎてごっちゃごちゃになってしまわないの?
そうです。そこで出てくるのが
”スイッチ”です。
道路やパイプでいうところの、信号や経路切り替えの仕組みです。
用意しておいてスイッチで切り替える
予め、あらゆる計算が可能なような仕組みを工事しておき、そのうちどれを使うか切り替える=選択する仕組みがスイッチです。
一つのことしかできない計算機
入力 ー 計算A ー 出力
いくつかのことができる計算機 予めいくつかの計算を用意しておき、スイッチで選ぶ
計算A
/ \
入力 ー スイッチ ー 出力
\ /
計算B
プログラムは計算の組み合わせですから実際にはもっと複雑です。
計算E ー出力
/
計算A ースイッチ2
/ \
入力 ースイッチ1 計算C ー計算D
\ /
計算B
さて、複雑になったように見えますが、このときのスイッチに注目してください。
実際の計算がどんな計算であったとしても、この計算をさせるにはたかだか2つのスイッチの情報=オンかオフか それだけの指示を伝えれば済むのです。
実はコンピュータからみたプログラムとは、突き詰めるれば、このスイッチのオン・オフが書かれた情報に他ならないのです。
コンピュータの内部の極めて小さな場所では、極めて単純な計算しかできないような素子が予め無数に用意されており、その素子のどれをオン=使用して、オフ=使用しないかによって、計算が組み合わされ、結果としてあらゆる計算ができるようになっているのです。
そして、必要ならその結果をどこかに蓄積し、さらにそれを元に計算を続けていくのです。
まとめ
コンピュータは小さな計算を予め用意し、その経路をスイッチで切り替えることにより、プログラムで要請されたあらゆる計算に素早く対応できるようにしたのです。
かつてのコンピュータは計算のたびにその経路をケーブルを抜き差しして示して作っていたのですが、このスイッチの導入により”プログラミング”の世界が開けるわけです。
しかしそれには、ひとつ大きな壁がありました。
スイッチをオンオフするのが面倒。
どこまで人間というのは。。。
しかし今のIT時代になるには、この面倒を克服することが必要だったのです。
それではまた次回。
令和2年12月14日 鈴の音がきこえてくる アラフィフなので耳鳴りだけど…