皆さんこんにちは、プロクラスの野間です。
どんなお話をしたらプログラムの理解に役に立つかな~と良く考えるのですが、自分がプログラムの理解を支えているものは何だろう?と考えてみると、プログラムの理解・・・ではなく基本的なコンピュータの理解にあると思います。
例えば、新しく(通信の技術が必要)等となった場合、私の(プログラムの)考え方の基本が、「コンピュータの仕組みがこうだから新しい技術はこう出来ている(こう出来ない)」からスタートしています。
非常にマニアックな話からのスタートとなりますが、何が理解に刺さるかわかりませんので、機械の仕組みから始めたいと思います。
(こうなっている→だからこう出来る→応用でこれが出来る→さらに応用したら・・・と進めていきます)
単純な説明では面白くないので、昭和時代の番組風な対話形式で進めていきたいと思います。よろしくお付き合いください。
■登場人物
先生
太郎
花子
■コンピュータが数値を理解する方法
花子:う~ん・・・
太郎:パソコンを睨みながら何を唸ってるの?
花子:う~ん・・・よし!バラしてみましょう!
太郎:ハンマーでやったらバラすんじゃなく壊しちゃうよ!?
花子:やっぱりだめかしら?
先生:それを振り下ろすと大変な事になりそうに見えるのですが何があったのですか?
太郎:先生!
花子:こんにちは~
先生:随分と反応に温度差がありますね・・・
太郎:花子ちゃんがパソコンを壊そうとしています!
花子:失礼ね!分解したいだけよ!
先生:なるほど、ですがハンマーでの分解は無理がありますので、一旦ハンマーを置きましょうか。
花子:やっぱりだめかしら・・・
太郎:絶対わかっててやろうとしてたよね・・・
先生:ところで、何故分解しようとしていたのですか?
花子:パソコンって電源入れたら動くじゃない?
太郎:そうだね
花子:凄いと思わない?
太郎:うん?・・・凄いよね。でもそれってパソコンだけの話じゃないよね?
花子:違うのよ!テレビって電源入れたらテレビが見られるだけでしょ?冷蔵庫は冷やすだけ。でも、パソコンってメールもできるし、ゲームもできるし、後からゲームも追加できるし、最新のゲームも出来るし
太郎:なんかゲームばっかりだね・・・
花子:どんどん進化してるのに後からどんどん追加して、それを使う事が出来るのよ?
太郎:家庭用ゲーム機だってできるよ?
花子:家庭用ゲーム機もそうだけど、どんどん新しい機体が出て前のでは遊べなくなるじゃない。
太郎:あ~・・・?、うん、なるほど、なんとなく言いたい事がわかってきたよ。
花子:そうでしょう?パソコンも次々に新型が出るけど、古いパソコンでも同じゲームが出来るじゃない?
太郎:なるほど・・・確かに凄いかも・・・でもそれとパソコンを破・・・分解するのと何の関係があるの?
花子:一つの機械で、画像表示したり、メールやりとりしたり、動画見たり、ゲーム見たり、昔は出来なかった事も機械の改造なく次の新しい事が出来るって、中身はいったいどうなってるんだろう?って思ったのよ。
太郎:なるほど、確かに画像表示機械とか動画再生機械とか足すことなく対応していってるよね・・・って事は何十年も前に未来の技術を実装していたって事なのかな?
花子:きっとドラ●もんみたいにすごく賢いんだわ!新しい事を理解して使えるようにしてくれるのよ!
太郎:ドラ●もんが出来ているとしたらパソコンに使うのはもったいないんじゃ・・・
先生:興味を持つのは素晴らしい事ですね!(破壊を伴わなければ)自分で調べようとする事も素晴らしいです!
花子:♪
先生:予想も当たらずしも遠からず・・・と言ったところでしょうか。
花子:やった当たってるんだ!
太郎:う~ん、結構ハズレって意味っぽい気がする・・・
先生:答えとしては未来の機械を繋げるように複雑に作ってあるって考えは方向性が逆なんです。
太郎:逆?
先生:そう、流石に規格自体は変わってきているけど、すごくシンプルに作ってあるので、それの応用範囲がとても広いって事なんだよ。
花子:なるほど応用力で出来るのね!
太郎:絶対わかってないよね・・・
花子:気合よ!
先生:笑。そうだね、今回はその辺りがわかるような話をしてみようか。
太郎・花子:お願いします。
先生:結構誤解している方もいるかもですが、パソコンが賢いというのは大きな間違いです。
太郎:でも一瞬で色々な事が出来るじゃないですか?
先生:いいえ、色々な事はしていないんです。パソコンがやっている事は計算しているだけです。計算しかしていません。
花子:え?でも動画とか再生できているじゃない?
太郎:そうそう、いろんな種類のゲームも動かしているし。
先生:そうだね、まずは機械のパーツ紹介と思ったのですが、折角ですのでもっともっと細かい話からしてみましょうか。そうすると、計算しか出来ないって事がわかると思います。
太郎:ほほぅ?
先生:パソコンは電気で動いているので、電気で動きを判断します。
花子:ほほぅ?
太郎:マネしないでよ・・・
先生:パソコンがわかるのは、電気が通っているか、通っていないか。しかわかりません。
花子:電気が通っているって明かりでも付けるの?
先生:電気が通っていなかったら「0」、通っていたら「1」と考えられます。
花子:数字の表現が出来るんだ!
太郎:でも、0と1だけしか無いじゃないですか?
先生:はい、でも私たちも0~9までの数字しか無いですよね?
太郎:え?24とか132とかもっと色々ありますよね?
先生:それは0~9の組み合わせですよね?
花子:そうか!「桁」ね!
太郎:なるほど、って事は「1は1」「2は10」「3は100」「4は1000」って風に各数字を表す部分に電気を通せばよいんですね。
花子:凄く無駄が多いわね・・・
先生:その表現も出来そうですが、すごく無駄が多いので作りが複雑になってしまいます。私たちも10の次って11ですよね?0の次は1で、次は桁が繰り上がりますので、10になりますね。そして10の次は11です。
花子:1の次は十なのね。
先生:見分けるためにいち、ゼロと一桁ずつ読むようにしています。数値としてはこれで2です。
太郎:ややこしいですね・・・
先生:何も前提無しで数字だけ書いてあると見分けはつきませんね(笑
花子:じゃぁ次は11(いち、いち)と書いて3って事?
先生:はい、合っています。
花子:次は、もう繰り上がるから「20」・・・あれ?
太郎:ここも繰り上がるのか!
先生:はい、ですので「100」と書いて4になります。
花子:それでも沢山必要そうね・・・
太郎:でも、僕の案よりは減って・・・いますね。
先生:これは2進数といいます。1桁につき2種類の数字で表現されています。私たちが普段使っているのは10進数ですね。
花子:聞いたことがある気がするわね・・・
先生:2に進数についても説明したいところですが、説明したい事とはズレますので割愛します。少しだけ表にしておきますね。
10進数 | 2進数 |
0 | 000 |
1 | 001 |
2 | 010 |
3 | 011 |
4 | 100 |
5 | 101 |
6 | 110 |
7 | 111 |
花子:わかり難いけど、なんとなくパターンがあるのはわかるわね
先生:深く考える必要は無いです。大事な事は、こうやって「数値」が表現できる→コンピュータはこうやって数値を理解しているって事です。
花子:わかったわ!「コンピュータは数値が理解できる」ね!
太郎:その一言で良いならここまでの説明の意味って・・・
先生:印象には残ったでしょ?(笑
太郎:え~・・・
先生:で、どんどん桁だけ増やす仕組みは難しいので、一定の区切りがあります。
花子:区切り?
先生:はい。この電気が通る・通らないの考え方とビットと呼びます。先の表を見て頂くと「7」を表現するには3ビット必要になるって事です。
太郎:なるほど
先生:そして、8ビットで1バイトと呼びます。8ビットあると0~255の数値が表現できます。
太郎:ほ・・・ほほぅ?
先生:このバイト(Byte)がコンピュータの容量を表す基礎単位として使われる事が多いですね。
花子:GB(ギガバイト)とかね!
先生:はい、そうです。KB(キロバイト)、MB(メガバイト)、GB(ギガバイト)、TB(テラバイト)・・・
太郎:同じものなんですか?
先生:はい、長さでmm、cm、m、kmとかありますよね、あれと同じで只の単位です。1Byteが1000個あるとKB、KBが1000個あるとMB・・・って感じです。
花子:ほほぅ
太郎:ヤメレ
先生:コンピュータでは1000は区切りが悪いので、1024で区切る事が多いので、人間が使うキロやメガ等とコンピュータのキロ、メガでは差があります。
太郎:切りが悪い?
花子:2進数の話よ!
先生:そうですね、1000を2進数で書くと「1111101000」になります。10進数で「932」とか書かれると切りが悪いでしょ?1024だと「10000000000」です。
花子:確かに・・・
先生:元々、キロやメガはコンピュータの専門用語ではないので、1000で切るのが正しい(?)のでしょうが、コンピュータ都合ってところでしょうか。
太郎:って事はコンピュータ関係では1024で表現されるって事なんですね?
先生:そこが微妙なんです。有名処ではストレージ(外部記憶装置)と呼ばれるパーツは1000倍で表現されている物と1024倍で表現されているものが混在しているようです。
太郎:ややこしいですね・・・
先生:500GBのSSDを買ったのに、パソコンに付けて確認したら500GB無いって事が結構あるようです。
花子:詐欺じゃない!
先生:いえいえ、先ほども言ったように1024の方が特殊な計算なんです。考えても見てくださいコンピュータパーツだから1024?でも一般的(コンピュータ以外)には1000なんですよ?どちらが正しいとは言えないでしょう?
花子:そうね・・・
先生:人にやさしく書くか、コンピュータ専門パーツだと書くか、ですね。メーカーさんも悩ましい所じゃないでしょうか。
太郎:1000で計算した方が沢山あるように書け・・・
花子:それ以上言ったらダメな気がする!!!
先生:笑
太郎:と・・・ともかく、どちらも正しい表現って事ですね。
花子:って事は同じような方法で文字も理解できるって事ですね。
先生:その表現も微妙ですね。同じ方法で文字を「表現」出来ますが、「理解」は出来ないんです。
太郎:言葉遊び感が凄いですね。
先生:そうですね。今回も文字として書く場合は数字(111)ですし、値の意味としては数値(7)的な感じと同じかもしれませんね。
花子:書く場合と使う場合って感じかしら?
太郎:ほほぅ?
先生:今回はここまでとしましょう。忘れ物をしないように気を付けて帰ってね。
太郎・花子:は~い
■まとめ
雑学レベルですが、実は今回が一番重要な回かもしれません。
でも重要なのは
・コンピュータは数値を理解できる
の1点です。是非ここだけ憶えておいてください。
次回ひょっとしたら文字の表現回に続く