コンピュータとは一体どんな仕組みなのでしょうか…?
プログラミングを始めたんだけど挫折しそう…
最近プログラミングの勉強を始めたそこの『あなた』
プログラミングって結構難しいですよね。
でも、もしかしたらプログラミングを難しく感じる原因は『コンピュータの仕組みを理解していないから』かもしれないんです。
本記事では『コンピュータの仕組みの概要』について解説していきます。
コンピュータの大まかな仕組みを知れば、プログラミングの理解しづらい部分がだいぶ減るので、ぜひ参考にしてみてください。
本記事ではプログラミング初心者向けにコンピュータの概要をご説明しています。
コンピュータの詳細な説明を知りたい場合は、専門書や論文などでご確認ください。
コンピュータの正体とは…?
突然ですが質問です。
コンピュータって一体なんでしょうか…?
コンピュータはスマホやパソコンだけでなく、電子レンジなどの身近な家電にも使われいています。
だから、コンピュータはたくさんの機能がありそうですよね。
でも、実はコンピュータって、そんなすごい機械じゃないんです。
信じられないかもしれませんが、コンピュータの正体は電気を使って計算をする『電子計算機』です。
そのため、コンピュータは基本的に計算しかできません。
しかし、『計算スピードが恐ろしく早い』という最大の特徴を活かすことで、たくさんの機能を実現しているのです。
コンピュータの計算機能
コンピュータは圧倒的な計算スピードを持っています。
そのため、人間には難しい次のような計算をすることが可能です。
- 式を組み合わせることができる
- 昔の計算結果を転用できる
- 計算結果によって、計算式や計算方法を変更することができる
まず、コンピュータはたくさんの計算式を組み合わせることができます。
例えば次のような問題をご覧ください。
問題①は中学校で習った連立方程式です。
『上の式のY』に『下の式』を代入すれば解くことができます。
きっと、『X=3、Y=14』が答えであることを導き出せるでしょう。
一方、右の問題②はどうでしょうか。
この問題も時間をかけて計算すれば『X=1、Y=-1、Z=3、W=-2』という答えがでるのですが、諦めてしまう人もいると思います。
ですが、コンピュータであれば一瞬で解けるんです。
コンピュータは正確かつ高速な計算が可能なので、たくさんの式を組合せても数秒で計算できるのです。
また、このような計算を行う際にコンピュータは計算の途中結果を保存しています。
そのため、『計算の途中結果』を『他の計算』に使うことができるのです。
さきほどの問題①の連立方程式であれば、先に求めたX=3を他の計算に使えるイメージになります。
他にも計算結果によって計算式や計算方法を変えることもできます。
例えば次の図をご覧ください。
こちらは、『スーパーで買った商品の税込み価格を算出する処理』になります。
2021年の間では『酒以外の食料品は消費税が2%減税される』ので、購入した商品に応じた税込み金額を計算する必要があるのです。
計算の流れとしては最初に商品のバーコードをスキャンして、金額と商品情報を読み取ります。
そして、その情報から『お酒以外の食料品』かどうかを判断するのです。
お酒以外の食料品なら『価格×1.08』、それ以外であれば『価格×1.1』で税込み金額を算出するような仕組みになっています。
この例のように、コンピュータは計算結果や入力した数値によって、使用する計算式を変更することができるのです。
また、他にも『公式では解けない問題』だって解くことができます。
コンピュータは計算式に適当な数値を当てはめて、最適な答えを導くことができるのです。
先程の問題②であれば、X,Y,Z,Wに適当に数字を当てはめて、ドンピシャの答えを見つけるイメージですね。
この方法だと人間では答えにたどり着かないことも多いのですが、コンピュータは桁違いの計算スピードを持っています。
そのため、非効率に見えるこの方法を使っても、時間をあまりかけずに最適な答えを導くことができるのです。
このようなスゴ技を組み合わせて、たくさんの機能を実現しているのがコンピュータになります。
コンピュータの仕組み
続いてはコンピュータがどのように計算しているのかを知るために、コンピュータの仕組みを知っておきましょう。
コンピュータはざっくり2つの部品で構成されています。
- CPU
- メモリ
コンピュータを構成する1つ目の部品はCPU(Central Processing Unit)です。
日本語に訳すと『中央演算処理装置』という意味になります。
演算とかかれている通り、主に計算をおこなう部品になるのです。
CPUはプログラムを読み込んで、ひとつひとつの式をすごいスピードで計算しているイメージでいいでしょう。
2つ目の部品はメモリです。
メモリは名前の通り計算結果を記憶しておく場所になります。
プログラムでは計算の途中結果を再利用することがたくさんあります。
そのため、たくさんの計算結果を保存できる場所が必要なのです。
ちなみにCPUの中にも計算結果を保存できるレジスタという部品があります。
しかし、容量がとても少なく、計算結果をあまり保存できないので、別途メモリが必要になるのです。
コンピュータの五大装置
コンピュータが計算しかできないなら、どうやってパソコンが成り立っているのか気になってきますよね…?
実はパソコンって『コンピュータの5大装置』といわれるもので成り立っています。
五大装置とは『演算装置・記録装置・入力装置・出力装置・制御装置』のことです。
演算装置と記録装置は先ほどご説明した通りです。
演算装置のCPUで計算をおこない、計算結果を記録装置のメモリに保存していきます。
入力装置と出力装置もイメージしやすいでしょう。
入力装置はマウス・マイク・キーボードなど、出力装置はディスプレイやスピーカーなどが該当します。
入力装置は計算に必要な情報を入力する役割を持っており、出力装置は計算結果を人間に伝える役割を持つ装置なのです。
そして、残ったのが『制御装置』です。
ピンとこないかもしれませんが、制御装置はコンピュータに接続されている全ての機器をコントロールする役割を担当しています。
コントロールと言ってもあくまで同期させることが目的なのです。
例えば、パソコンの電卓機能で『1+2=』という計算をする場合を考えてみましょう。
まず、CPUと同期されているキーボードで『1+2=』という文字をタイピングします。
すると入力装置が『1』『+』『2』『=』というデータを生み出すのです。
このデータを制御装置によって記録装置のメモリに受け渡しています。
そして、データの受け渡しが終わったら、制御装置がCPUの演算機能を発動させます。
制御装置がメモリからCPUに受け渡すデータを使いながら計算して、3という計算結果がでてくるのです。
そして、制御装置によって『3』という計算結果をメモリに受け渡して保存します。
その保存したデータを出力装置に受け渡すことで、ディスプレイに『3』が表示されるのです。
このように、接続している機器を同期させて、データの受け渡しを行うのが制御装置になります。
で、この制御装置はどの部品が担当しているのかというと、次の論文が言うようにCPUなんですね。
制御装置と演算装置は中央処理演算装置(CPU)と呼ばれる。
「CPUは計算しかできないって言ったじゃないか!」と思われたかもしれませんが、CPUの制御機能は計算に必要なデータを移動させているだけです。
なので、CPUのメイン機能は演算であり、制御機能は計算を成り立たせるための補助機能なのです。
コンピュータの仕組みからわかるプログラミングの特徴
コンピュータの仕組みが分かって気になるのは、『コンピュータの仕組みとプログラミングにどのような関係があるか』ですよね?
実は、コンピュータは計算しかできないということに着目すると、プログラミングには次の特徴があると考えることができます。
- プログラムには型がある
- 保存場所の指示が必要
- データ容量に関する指示が必要
最初にわかることはプログラムには型があるということです。
コンピュータは計算を行うので、やってほしい計算があるなら『その計算を実現する計算式』をコンピュータにわたす必要があります。
そして、この計算式がプログラムに当たるのです。
数学にも公式があるように、プログラムの計算にも公式に近いものがあります。
つまり、プログラムも決まった型(式)で作り上げる必要があると言えるのです。
2つ目はメモリに関する指示が必要なところです。
先ほどご説明した通り、CPUはたくさんの計算結果をメモリに保存します。
そうなると「あれ?どこにしまったっけ?」という状態になってしまうのです。
このような事態を防ぐためには、計算結果の保存場所を決めておく必要があります。
C言語では、保存場所を明確にして置くために、変数の定義やポインタなどの機能が搭載されているのです。
他にも、計算結果のデータ容量も指示する必要があります。
円周率の『3』と『3.14159265359』では数字の桁数が異なるので、データの容量が変わってくるからです。
4桁しか入らないメモリに12桁の数字は入らないので、エラーになってしまうんですよ。
このような状態にならないためにも、データの容量の指定に値する『データの型式』も指示する必要があるのです。
おわりに
以上がコンピュータの仕組みになります。
たくさんの機能を持っていそうなコンピュータが計算しかできないということに、驚かれたのではないでしょうか?
でも、計算に特化しているということで、プログラミングの理解しにくい部分も少しは理解できるようになると思います。
プログラミングでつまづいたときに、「なにが計算に使われるのか」という観点でわからない部分を考えると、ヒントが見えてくることが多いのです。