先日、IT会社に勤める主人が、新人研修のための資料を作ったよ、とプリントを持って帰った。
新しく入った新人さんに、コンピュータのプログラミングをする前段階として、少なくとも知っておかなければ
ならない知識をまとめたものだという。
新人さんが理解できるかどうか、どうも、コンピュータにはほとんど無知の私が実験台らしい。
ほんの20ページほどだが、プログラムを組む人にとっては基礎となる「大事な」ことが「簡単に、簡潔に」
書かれているのだという。
カラーで印刷されたその小冊子は、まあ見た目、そこそこ空間もあるし、図や表も使ってあるし、わかり
やすそうだった。
私は、結構興味もあったので、はまって読んでみることにした。
ところが、である。
・・・難しいのである。
とても、日本語、と思えないのである。
読み進められたのは、表紙と目次とハードウェアとソフトウェアの違いの図だけだった。
次に出てきた「コンピュータのマザーボード」えっ、マザーボードって何?というところからよくわからなく
なってしまった。
わからない単語が出る度に、主人に質問するのだけれど、「はぁ、そんなものもわからないの?」と口にこそ
出さないけれど、相当なあきれ顔。
ただただ我慢しながら説明しているという感じである。
それでもよくわからないので、質問の羅列になってしまう。
CPUって何、メモリって何、キャッシュって何、レジスタって、・・・。
少しでもコンピュータをやっている人だったら何の違和感もなく受け入れられるであろう言葉が、門外漢の
私にとっては外国語か宇宙語のように見えてしまう。
・・・無理かも。
でも・・・。
わからないって、なんとなく自分に歯がゆいではないか。
主人に隠れて本屋さんに行き、入門書を買って読んでみる。
ホント、難しすぎる。
やっとわかった範囲のことを、私のことばで書いてみよう。
(*^_^*)
コンピュータの仕組みについて説明しましょう。
コンピュータは、ただの箱ですが、この箱を動かすには「プログラム」が必要です。
プログラムは、これをこうしなさい、そしてああしなさい、という指示のことですが、その流れをわかりやすく
順序良く、箇条書きにしたものです。
このプログラムがないと、箱は動きません。
私たちがよく使っているVistaやXPといったOS(オペレーティング・システム)も、人が作ったプログラムで
動いているのです。
コンピュータのスイッチを入れると、箱が起動して、キーボードやマウスが使えるようになり、ディスプレイに
画面が表示されますが、これもプログラムがあるおかげです。
でも、一般的にプログラムというときは、ExcelやWordやPower Point(これらをアプリケーションといいます)
とかいうもの、その他様々な用途に合わせての仕組みを動かす命令を書いたもの、を指しているようです。
さて、この箱。
中を開けると複雑な電子回路が敷き詰めてあるボードが入っています。
これをマザーボードといい、CPUやメモリ、その他の部品が整然と並べられているのです。
その他の部品は、マウスやUSBやディスプレイなどのハードウェアにつながっていて、プログラムの指示
通りに動きます。
CPUというのは、コンピュータの「頭脳・心臓」です。
そして、メモリは、プログラムやデータを記憶する装置。
どちらも、大きさは、とてもとても小さいらしい。
(残念ながら、私は、本物を見たことがありません。)
コンピュータのCPUなんて、1円玉にすっぽり収まる四角いサイズ!! とのこと。
でも、そんなに小さくても、能力はとにかく「すごい」らしいのです。
メモリには、データがきちんと整理されて入っていて、1バイト(8ビット)ごとにアドレス(番地)番号が
ついています。
CPUはこのアドレスを頼りに、プログラムの命令を取り込んで(フェッチして)、解釈して(デコードして)、
演算を実行していきます。
この時、「メモリ」や「レジスタ(CPUの中にあります)」に一時貯えられたデータや演算結果が、ものすごい、
考えられないくらいの速さで、処理されていくというのです。
特に、CPUの処理スピードは恐ろしく速いらしい。
GHz(ギガヘルツ)という単位で、「1秒間に10億回」の周波数なのだそうです。
プラスかマイナス(1か0)の信号を10億回です。
1・0の組み合わせでたくさんの情報を超スピードで処理し、様々なことを行ないます。
だから、人間にとって複雑極まりない演算も、仕組みさえしっかりしているならば(プログラムさえ間違って
いなければ)、きっと造作もないことなのでしょう。
さて、コンピュータでは、1ビットというのが最小の単位です。
1ビットは、1か0で表現され、この組み合わせで様々な情報が伝えられます。
そして、これらのやり取りは全て電気信号で処理されるのです。
つまり、流れるか(1)流れないか(0)で表現される(2進法の)世界です。
1と0しかありませんから、整数を書くのも大変だと思ったのですが、何と8バイト(64ビット)あれば、
2進法でプラスマイナス900京(兆の上の単位。2進法だと「±2の63乗程」)を超す数まで表わせるらしい
のです。
難しいことはよくわからないけれど、演算はこの2進数の数の「足し算」で全てを処理してしまうという、
とにかくすぐれものです。
(引き算は、マイナスの数を足す。掛け算は足し算を繰り返す。割り算はマイナスの数の足し算を繰り返す。
のだそうです。)
ただし、コンピュータは万能で間違いをしないか、というと、そうでもないようです。
小数点のつく数(実数)で2進数では表せないものだと、誤差が出ることがある。
たとえば0.1は100回足しても10にはならない・・・というのです。
(コンピュータで計算すると、答えは10.000002です。)
何故こんなことになるかというと、10進数の0.1は、2進数で表すと0.000110011001100…という循環小数に
なってしまうから・・・。
まあ、10進数でも1/3は小数で表すと0.33333…の循環小数になってしまいますから、それと同じことなのかな、
と思います。
1/3×3は1ですが、0.33333…×3は0.99999…になってしまって、誤差が出てしまうからです。
それにしても、1と0の記号だけで、1つの数や文字を伝えるのも実に大変といえば大変です。
例えば、「97」という10進法の数は、2進法だと「01100001」だし、「あ」という文字は16進法で「82A0」(SJIS表記)、
つまり2進法では「1000001010100000」となり、何が何だか見ただけではわからない信号になるのです。
でも、コンピュータは、「すごい機械」だから、安心していいらしい。
間違いなく、普通の文字で入れられた情報は、あっという間に1か0で書かれた信号となり、処理される
そうですから。
つまり、一般的なプログラムを組む時は、普通に使う文字(abcとか、123とか)を使って書いてもいいのだ
そうです。
コンピュータで、専用の言語を使った命令書(プログラム)を作ると、マシン語に変換(コンパイル)され、
忠実に実行されていきます。
「誤差」は頭に入れてプログラムを組まなければならないけれど、複雑で煩雑な処理は、機械に任せてしまえ、
ということのようです。
コンピュータを動かす命令がプログラムです。
仕組みを自在に使えたら、思いもかけないことができるらしい。
プログラムを組む為の作法というか言葉や式の使い方を学んで、様々な仕組みを考える。
ほら、素敵でしょう・・・。
あはは、これで精いっぱい。
すごい。
なんて難しい、けれど、なんて理路整然とした世界なのだろう。
でも、私に分るのは、この程度である。
この程度といっても、主人の資料をちんぷんかんぷんで読み、入門書を読み、やっとやっとで書いたもの
である。
それに、たったこれだけの文章を書くのに、いつになく「多大な」時間がかかってしまった。
相当に、情けないことである。
まあ、でも、部外者なんて、こんなものなのだ。
なんとなくコンピュータの仕組みはわかっても、やっぱり、私には不向きな世界のような気がする。
というのが、これを書いての、正直な感想である。
私は福祉の学校にいて、ノーマライゼーションだとか、ストレングス視点だとか、様々な福祉用語を使って
いるけれど、それはそれで、他から見たら「わけわかんない」言葉なのかもね。