目次
ハードウェアを知る
当然ですが、プログラムはコンピュータ上で動いています。
その為、ハードウェアについての見識はソフトウェアであるプログラミングにも役立ちます。
なのでここでは、プログラムを書く上での最低限のハードウェアに関する知識を解説します。
自分の分野はソフトウェアだと言わずに、広い範囲に目を向けていきましょう。
広く知ることは深く知ることにも繋がります。
コンピュータは電気で動く
プログラムはコンピュータ上で動きます。
ではコンピュータは何で動いているでしょう。
これも当たり前のことですが、コンピュータは基盤の上の回路に電気を供給して動いています。
(このような表現は厳密には正しくありません。ですので、電気電子を専門としている方に怒られそうですが、ここではその分野に疎い方やプログラミングの初心者に向けた簡単な説明をしています。そもそもこの間違いを理解できる方は本項目を読む必要はないでしょう。)
電気や回路というと難しい物理学の話で、アレルギーのある方もいるでしょう。
しかし、ここでは電力の計算や回路の評価をしようというわけではありません。
物理的には、電気信号で動いているということを知っていてもらいたいのです。
電子回路では正弦波のような電気の波に情報を乗せて回路を動かします。
そのアナログ(連続的)な情報をデジタル(離散的)なデータとして読み込まなければなりません。
その際、データを段階化して読み取るのですが、読み取る段階の差が大きければ大きいほど読み込み間違いは起こりにくくなります。その最も差が大きい、言い換えれば段階が少ないのが2段階です。
そのためコンピュータにおいては2進数が重要になります。
コンピュータの構成要素
コンピュータにはどのようなものが入っているのでしょうか。
大まかに分類すると5種類で、それらは「コンピュータの5大装置」と呼ばれています。
これらを一つずつ見ていきましょう。
演算装置
コンピュータの大本である計算機能です。データの処理や加工を行います。
制御装置
その他の5大装置を管理し、指示を与えます。
CPU(Central Processing Unit)が演算装置と制御装置としての機能を担っています。
記憶装置
データの記憶を行います。
HDDやメモリがこれにあたります。
入力装置
キーボードやマウスなど、ユーザーからの指示を受け取るデバイスです。
出力装置
ディスプレイやスピーカーなどユーザーが認知できるようなフィードバックを与える装置です。
通常、入力装置や出力装置は周辺機器と呼ばれ、商品としてのコンピュータ本体には含まれません。
ただし、ノートPCや一体型デスクトップPCなどはディスプレイやキーボードがついています。
記憶装置の仕組み
記憶装置には主記憶装置と補助記憶装置の二つがあります。
主記憶装置
CPUが処理するデータの一時保存用の記憶装置です。メモリとも呼ばれます。
一時保存しかしないので通電している時のみデータを保持する揮発性メモリが使われます。
プログラムでいうと、変数などのデータが保存してあります。
補助記憶装置
HDDやSSDなどの、データを長期的に保存する記憶装置です。
「記憶する」というイメージから、こちらが主記憶装置だと思われがちですが、コンピュータの源流は計算機であるという点からデータの一時保存を行うのが主記憶装置です。
プログラムでいうと、外部ファイルが保存されるのが補助記憶装置です。
外部装置
コンピュータの主たる機能であるCPUと主記憶装置を除く、補助記憶装置や入出力装置をここでは外部装置としています。
外部装置はハードウェアですから、勿論電気信号で動きます。
しかし、printf()やfgets()など、外部装置を扱うときにそれを意識することはありません。
それはOSやミドルウェアがハードとソフトの間に入っているからです。
電気信号への命令の変換のような、複雑でかつ利用頻度の高い機能はOSやミドルウェアがその機能を担うことで効率化しています。
つまりプログラマーはそれらを意識せずとも、C言語であれば関数を呼び出すだけで外部装置の恩恵を享受することができます。
このような集約・分業の考え方はIT業界には深く根付いています。