見出し画像

コンピュータのプログラムとは何か?(5) 〜 プログラミング入門一歩前

最後になります。

コンピュータからみれば、プログラムとは準備済みの計算を切り替えるスイッチのオンオフにすぎない、ということでした。

例えば以下のようなコンピュータに、”計算A → 計算E” を通るような計算をさせようとすれば。

               計算E ー出力
               /
         計算A ースイッチ2
       /       \
入力 ースイッチ1      計算C ー出力
       \      /
         計算B
スイッチ1 =オン(上方向へ)
スイッチ2=オン(上方向へ)

とすればよく、

”計算B → 計算C” を通るような計算をさせようとすれば、

スイッチ1 =オフ(下方向へ)
スイッチ2=指定なし

とすれば良いわけです。

スイッチをいっぺんに切り替える

さて、このようにして、あらかじめ用意された計算を組み合わせて=経路をスイッチで変更して、複雑な計算ができるようにしているわけですが、この時、スイッチを切り替える面倒をいかに克服するか?というのが最後の問題です。

その答えの一つはすでに出てきています。プログラムによって全てのスイッチをいっぺんに切り替える仕組みです。

例えばこんなイメージです。

ここにスイッチ ■ が並んでいます。

A: 計算する経路を決めるスイッチが剥き出しで並んでいる
▪️ ▪️ ▪️ ▪️ ▪️ …

そこに突起物 ● のついた板を用意します。※□ 突起物なし 

B: スイッチを押すための突起のついた板
 □   ●   □   ●   □ ... 

そして、Aの上にBの板を裏返して被せます。

するとどうでしょうか?

 □   ●   □   ●   □ ... 
   ↓    ↓
▪️ 🌟 ▪️ 🌟 ▪️ …

そうです。突起がついているところだけスイッチが押されるわけです。

このようにすれば、スイッチを一つひとつ押していく手間がないですよね?

つまり、前もって板にスイッチを押すための突起物を用意すること=プログラム という風にも捉えることができるわけです。

そして電子の力へ

板に突起物をつけて、いっぺんにスイッチを操作するというのは立派なアイデアです。実際に初期のコンピュータは紙に穴を開けてそのようなことをしていました。

ちなみにこのプログラムの紙には虫がついて、穴を勝手に開けてしまったりするので、プログラムの誤りのことをバグ=虫 というようになったとか。

しかし、板を使うのはちょとダサいですし、重いですし、物理的なスイッチは消耗が激しく故障もしやすいのです。そこで登場するのが、

電子のスイッチです。

電子スイッチは古くは真空管やトランジスターから始まり、現代では半導体が主流ですね。

電子はそれはもうめっちゃ早いです。インターネットも電子のおかげで一瞬にして世界を結びます。

まとめ

今回は 計算する経路を切り替えるためのスイッチを効率よく操作するために、各スイッチのオンオフという情報を前もっていっぺんに書いたという意味でのプログラムと、実際のスイッチは高速に動作させるために電子の力を使うということについてお話ししました。

さて、これまでの「コンピュータのプログラムとは何か?」講座をまとめると次のようになります。

コンピュータのプログラムとは何か?
・そもそもコンピュータは 電子の力で + 計算する機械 である
・この計算機は+ー×÷の四則演算よりも単純な計算しかできない
・しかし単純な計算を組み合わせることで多様な計算を可能にしている
・この計算機に目的の計算をさせるとき人間はプログラムを使う
・プログラム = 前もって + 書く
・この計算機は人間が書いたプログラムを”すぐにまるごと”受け入れるために
・全ての計算をあらかじめ用意している
・そこから任意の計算を”選択”することで目的の計算をする
・”選択”するためにスイッチを利用する
・スイッチは切り替えを無駄なく素早くするために電子の力を使う

以上になります。

まあ、一般的に、プログラムというのは、前もってコンピュータにさせたいことを書いたものというところですが、コンピュータからみたらどうなのかという視点でお話ししました。

それは何か?という問いにはキリがありません。

なのに、たった一言に、140文字以内に、学校の授業時間に、学生時代に閉じ込められたりします。

でも、たまにはそこから飛び出して。自分自身で哲学すると面白いかもしれません。

それから、一般的に私たちはプログラムを学ぶのではなく、プログラミングを学ぶことでコンピュータを使って何かを実現したいと考えているはずです。

しかし、今回は少し寄り道をして、プログラムという言葉にもあるとおり”前もって”準備するという人類の知恵に敬意を払いたくて、話を進めていきました。

美輪明宏さんのいう「苦労の先取り」。先に苦労しておけば、苦労はするけれど現代人の抱える「心労」は抑えることができる。そんなふうに思います。

プログラミングをしていて、ちょっと思い通りにいかなかったり、なんなんだよーと憤慨したりした時は、解決方法を探すのもよいですが、気分転換にコンピュータやプログラムのことについて調べてみるのも良いと思います。もしかしたらうまくやるヒントがあるかもしれません。

コンピュータのプログラムについては、これから先、もしくは一歩手前にはもっといろいろな視点、視座から一体何なのか?ということを追求していくこともできます。

チューリングマシン、アルゴリズム、プログラミング言語の方法論などなど。

それらはまたいずれ note したいと思います。


令和2年12月15日 クリスマスまであと10日

この記事が気に入ったらサポートをしてみませんか?