コンピュータってどうやってできたんだろう?
これだけ身近になったのに、それを使うことしか覚えないのはもったいないかもね
私は、高校の頃、歴史が大好きでした。特に、世界史が好きです。大学になり、ゲーム作りがしたくなり、プログラミングを始めました。
プログラミングを学ぶには、作る目的があると一番良いです。
しかし、目的がなくても、まずは現代のコンピュータがどのようにできてきたか、どんな人たちが貢献してきたか、を知ることでその歴史のロマンにはせることができます。コンピューターの歴史を少しでも知ることで、もっとコンピュータのことを知り、プログラミングしたくなるのではないでしょうか。
私なりに、コンピュータとプログラミングの歴史をつづっていきたいと思います。
めっちゃ昔(紀元前~)
このころは、コンピュータというよりも、人間の計算を一時的に記録しておくもののような雰囲気です。あと、計測に利用したりする専用機械といった性格のものが見られます。
コンピュータの機能の一つである記録装置という側面は、古代からみられるものでした。
紙と鉛筆(記すこと)
人間の計算を物で表現することで補助する物という点で、極端に言うと、紙と鉛筆もコンピュータだと思います。足し算をするときに、鉛筆で数字を紙に書くことで目に見える形になるので、記憶のように消えることなく円滑に計算することができます。紙と鉛筆の組み合わせは、記憶機能を持ったコンピュータだと思います。
昔の人は、石や粘土板、パピルスなどに記述していたみたいですね。
アバカス(そろばん)
紀元前3000年ころに古代バビロニアにあったらしいです。
iPhone以上に普及していますね・・・
そろばんも、計算の途中の状態や、結果を物の形として保存できるので、紙に記すのと似ていますが、計算に特化していて、紙のように消したりする必要がないという点でよりコンピュータに近いような気がします。
具体的な内容はwikipedia先生に
世界最古のコンピュータ?アンティキティラ島の機械
古代ギリシア人が天体観測などをするために利用していたらしいです。BC150~100年位のものらしいです。
とてもロマンがあると思いませんか?アンティキティラという響きだけでテンションが上がります。人は知恵を絞って正確に計測することに努力をしてきたのですね~。
そこそこ昔(1600年代~)
だいぶ時代が飛びました。
機械式計算機
歯車を利用した機械式の計算機が出てき始めました。
パスカルさんは、パスカリーヌという計算機を作りました。高級な洋菓子のような名前です。
足し算引き算ができるのですが、操作が複雑で売れなかったとか^^;
ライプニッツさんは、パスカリーヌより高度な計算機を作ったとか
この時代は、歯車の動きを利用して、計算という人間の考え方を機械で再現することを試みています。この、計算という人間の思考を機械で再現するという部分がコンピュータの本質であると思います。また、このころは、機械へ命令を与えるということは出来ておらず(手動による操作)、プログラミングという概念はまだ見当たりません。
この時代にライプニッツさんによって、2進数が作られます。
現代のコンピュータの重要な機能、入力機能と出力機能が発生した時期といえます。
織機
布を織る機械です。布を織るための専用機ですね。
四則演算などはしませんが、パンチカードによる制御をしていました。
パンチカードは、あらかじめ紙に穴をあけておき、それを機械に読み込ませて機械が一定の動きをするというものです。オルゴールの布バージョンでしょうか。
ここで重要なのが、パンチカードを作成することで、機械の動き方を変化させることができるということでしょう。これは、ある意味現代のプログラミングと同じことをしているといってもよいでしょう。
コンピュータの要素の一つである制御を行い始めました。
近現代(1900年~)
機械技術だけではなく、電気が利用され始め、実用化されてきている時代です。
暗号解読のため計算を行わせる
第二次世界大戦の戦時下、イギリスはドイツの暗号を解読しようと、学者を集めて専用の機械を作りました。
この辺りの時代背景は、映画「イミテーションゲーム」が良い参考になります。アマゾンプライムでみられます。
このころ、チューリング完全という概念がでてきました。文系の私には到底理解できませんが、プログラミングをし始めると何となくわかります。どうやら簡単に言うと、「とても簡単な機能しかないのにそれを組み合わせれば何でもできちゃう」みたいなことらしいです。実際、プログラミングをしていると、先の記事で書いた、①順次②繰り返し③条件の簡単な処理を複雑に組み合わせることで、いろいろな機能が作れてしまうことを実感します。このシンプルな動作の組み合わせによってできるものが「アルゴリズム」と呼ばれるものになります。
専用用途からなんでもできるものに変化
機械で演算をするようになりました。今までの機械でも簡単な足し算や引き算は出来ていたと思いますが、演算というと、例えば、大小の比較や、掛け算、割り算(あとは、論理演算も)などもできるようになりました。プログラムでよりいろいろな計算を記述できるようになったということです。
確かに、2という数字と3という数字、どちらが大きいか、人間にはすぐわかりますが、それを機械にやらせるとなると、今のコンピュータという機械がなかったらどうやって作りましょうか。そう考えると、常軌を逸したことを簡単にできていることがわかると思います。
ノイマン型できまり
現代のコンピュータはノイマン型というモデルでできています。
ノイマン型のコンピュータは、現代のコンピュータのことです。
チューリングさん「プログラムをテープに保存して実行すればいろいろできるよ」
ノイマンさん「プログラムもデータも記憶装置に保存して実行すればもっと汎用的になるんじゃない」
そういったやり取りはなかったと思いますが、
ノイマンさんが、こうしたらいろいろな計算がプログラムでできるんじゃない?と提案した形です。それは、今まで、さりげなく太字にしてきた
①記憶
②入力
③出力
④制御
⑤演算
を備えれば、現代のパソコンのように、いろんなプログラムが作れるんじゃないかなという形でした。
①~⑤は、コンピュータの5大要素といわれていて、今のパソコン、スマホなどのコンピュータはこの要素を備えています。
これらの機能を利用することで、①入力をしたデータを見る、②データを記憶する、③それらをもとに演算をする、④演算の結果で機械を制御する、または、⑤結果を出力する、という現代の一般的なコンピュータの要素につながってきます。
歴史からロマンを感じること
私は、コンピュータ、プログラムの歴史が、人間の脳以外のもので人間の考えをまねする歴史ととらえています。機械で実現しようとするためには、機械の考え方を確立しなければいけないわけで、どうしたら人間以外のものが人間の考えを実行できるか、という歴史であるかのように感じます。
人の考え方を機械化していく事は、その考え方をボタン一つで未来の他の人間が実行できます。
今の技術を作ってくれた先人に感謝しながらプログラミングをしようと思いました。
音楽室みたいに、先人の顔を部屋に飾ります
そこまでしなくても・・・