6.プログラムで出来る事




コンピュータの祖先が電卓である為なのかは分かりませんが、コンピュータの中身は数字のやり取りで全ての処理を行ないます。それも基本は「0と1」の2つの数字だけです。
コンピュータの中では一本の線の中を電気が流れるか流れないかのON(1)とOFF(0)が基本動作となり、これで2つの状態を表現(これを2進数表現と言います)できます。

この1本の線が2つを組み合わせれば、両方ともOFF、1本目がON/2本目がOFF、1本目がOFF/2本目がON、両方ともONの4つの状態を表現でき、同様に組み合わせる本数を多くしてあげれば、表現出来る状態が増えて行きます。この状態に数字や命令、状態等あらゆる物を割り当てて処理をしてします。例えば「01001011」という状態は「足し算をする」という命令であったりします。

「このCPUは32bitだ」とか「バスは128bit幅だ」と言う表現を聞いたり見たりした事はありませんか?このbitと言う単位が今説明した線の組合わせ本数の事を示します。
コンピュータの中身は数字のやり取りが基本である事は何となくでも分かっていただけたでしょうか?
では、数字のやり取りを駆使するとして、どのような事ができるのかといえば「加減乗除」「数字の引き渡し(代入)」「数字の比較」「処理手順の分岐」が主なものです。余りの簡素さに「え!それだけ」と思われるかもしれませんが、本当です。どんなに高度な科学計算でも、ゲームでも、ワープロでも全てはここから始まります。塵も積もれば山となるって言うやつですよね。
まあ、さすがにこれだけ品粗な物から全てを作り出すのは大変なので、関数(コンポーネントとかオブジェクトとか色々な呼ばれ方が有ります)といわれるプログラムの部品が少しは用意されています。例えば、三角関数などの数値演算を行うものや、画面に絵を表示したりするものなどがあります。用意されている関数の種類や数は、言語毎に異なり、多いものでは1000を超えるものもあります。
ただし、関数の仕様は最初から全てを覚える必要はありません。一覧表でも目を通してどのような事が出来る関数が有るのかを把握しておく程度で、必要な時に詳細を見れば良いのですから。

ここで感の良い方なら「文字はどうやって扱うの?」と思われるかもしれません。実はCPUは文字も数字として扱います。言い方を変えると、CPUは人間の使う文字を理解する事が出来ません。インドやアフリカなど普段見ない言語を見たように、まったく理解してくれません。

例えば、「キーボードを押したら押したキーの文字を表示する」という処理を例にあげてみます。まず、キーボードにはボタン毎に数字が割り当てられており、例えば「A」を押すと数字の30が押されたとCPUは認識します。表示する時には「A」という文字の画像を表示をする事にします。つまり、入力は数字、表示は画像と言うように”文字”を文字として意識しているわけではありません。
「でも、英語を日本語に翻訳したり、音声を認識したりするソフトもあるぞ」などとも思われるかもしれませんが、これも「music」という文字が入力されたら「109(m)、117(u),115(s),105(i),99(c)」という5つの数字の並びなら、「35257(音)、35449(楽)」という並びに置き換える事で翻訳を実現したりしているのです。ほーらね、文字の操作も全て算数の延長線上で実現できるでしょ。(^^;)
ただし、数字しか扱えないはずのCPUが、あたかも文字列を扱えるかのようにプログラムを組めるよう、コンパイラが関数や文法を用意してくれていますので安心してください。 

いろいろ話してきましたが、ここでは「プログラムは数字のやり取りが基本」ということだけを理解してもらえれば十分です。それ以外の細かな話は、頭の片隅にでも置いておくていてください。