コンピュータという言葉を聞いて最初に思い浮かべるものはどんなものでしょうか。
おそらくほとんどの人がノートパソコンもしくはデスクトップパソコンを思い浮かべるかと思います。
パソコンは「パーソナルコンピュータ」の略ですのでそのイメージで間違っておりませんが、コンピュータそのものを説明するにはちょっと物足りないですね。
そこで、今回はコンピュータというものが一体どのようなものなのかを簡単に説明していこうと思います。
プログラミングを始めたばかりの方や、これから始めたいと思っている方の役に立てれば幸いです。
#コンピュータとは
ざっくりいうと・・・
電子演算装置。高速度で計算やデータ処理、また、情報の記憶保存・検索などができる装置。
です。
ごめんなさい、まだブラウザバックしないでください。
もう少し噛み砕いて説明していきます。
##コンピュータは計算機
先の説明でもありました通り、コンピュータは計算機です。
昨今のパソコンというものを想像すると、「ゲームができるもの」「エクセルが使えるもの」「インターネットにつながるもの」などであり計算機という印象は少ないかもしれません。
しかし、それらすべての機能のもとになっているのは「計算機として成り立たせるための構造」です。
##最初のコンピュータ
人類史上最初のコンピュータは、**ENIAC(エニアック)**だと言われています。
ENIACは17000本以上の真空管を使い、床面積は100m2、重量30トン、消費電力150kWという容易に想像もできないような規模の超大型コンピュータでした。デカすぎてドン引き。
最近のPCは大きくても70cm2、重くて2Kg、消費電力30Wほどですので、ENIACの規模の大きさがわかりますね。
https://ja.wikipedia.org/wiki/ENIAC
ENIACは第二次世界大戦中に複雑な計算(弾道計算)を行うために開発されたみたいです。
もともとアメリカの砲兵隊は、ほぼ手計算で弾道を計算していたようで、「さすがにこれじゃあ正確に砲弾を打つまでに時間かかるよね」ということで、とにかく早く正確に計算できるものが必要になりました。
ということで、ENIACが誕生したわけです。
自動で計算してくれる計算機として開発をしているうちに、**ワープロやらゲームやらにも使えんじゃね?**となって今日のパソコンになっていったわけです。(スティーブ・ジョブズ様様ですよ)
つまり、コンピュータは『手動で計算していたものを自動で機械に処理させよう』という目的から生まれた計算機であると言えます。
めっちゃ余談ですが、ENIACで大量に使われていた真空管というものは、今日ではあまり聞かないものですよね。
なんでENIACを作るために大量に必要だったものが今は使われていないの?というと、トランジスタというものに取って代わられてしまったからです。
トランジスタは真空管よりもサイズも発熱量も価格も優れている完全上位互換ですので、真空管くんは淘汰されてしまいました。(今でもオーディオ業界では使われていたりします。アンプとかね)
トランジスタについてもいつかメモを残していこうと思います。
##ノイマン型コンピュータ
今日用いられているコンピュータは、ノイマン型コンピュータと呼ばれるものです。
これはジョン・フォン・ノイマンという、**半端ない数学者**が考案したものです。
ノイマン型コンピュータは、以下の五つの構成要素からなるという特徴があります。
1.演算装置
2.制御装置
3.記憶装置
4.入力装置
5.出力装置
また、ちょっとややこしい特徴として、プログラム内蔵方式であるという特徴もあります。
かつてのノイマン型ではないコンピュータでは、ある処理を実行して他の処理を実行しようとしたときに、コンピュータの配線をつなぎなおす必要がありました。
イメージとして、「エクセルをやるためのコンピュータ」にしようと思ってコンピュータの配線を行なった後に、パワポを使いたいと思った時は「パワポを使うためのコンピュータ」にするために配線をし直す必要があります。
めんどくさ!
ということで、ノイマン型コンピュータでは、主なプログラムの処理手順を主記憶装置にあらかじめ書き込んでおき、それを他の筐体に付け替えるだけで同様の機能を実現できるような、汎用的なコンピュータの仕組みを実現しています。
これでいちいち配線をつなぎなおす必要もありません。
やったー🙃
#コンピュータの構成要素
ノイマン型コンピュータの構成を知ることで、今使っているパソコンがどんなもので構成されているのかを知ることができます。
**コンピュータってなに?**と聞かれれば、この五大構成要素を備えた電子計算機だよといえば格好がつくと思います。
それぞれ詳細は説明していきますが、ざっくりとしたイメージは以下の図の通りです。
赤い矢印が、処理装置から送られる制御命令で、自分以外の装置に「あぁしろ」「こうしろ」と命令をします。
オレンジの矢印はデータの流れを示しており、主に入力装置から入力されたものをみんなで加工して、欲しい形になったら出力装置に渡します。
それでは、それぞれの装置のざっくりとした説明をしていきます。
##入力装置
外部から情報(データ)を取り込むための装置が入力装置です。
文字を入力するならキーボード。
音情報を入力するならマイクロフォン。
映像情報を入力するならカメラとなります。
入力装置がいろんなデータを取得して、演算装置や記憶装置へと引き渡し、次の処理に進みます。
##記憶装置
記憶装置は、情報を保存しておくための装置です。
記憶装置は記憶しておく期間や目的によってさらに二つに分けることが出来ます。
###主記憶装置
主記憶装置は、後述するCPUとよばれるコンピュータの脳みそと直接やりとりをするために情報を一時保存しておくための記憶装置です。
ちょっとした計算結果や単純命令の一次保存等のメモ帳的な役割が主な用途になりますので、容量自体はあまり大きくなく高速に応答する必要があるという特徴があります。
※CPUという装置はとにかくせっかちで早く作業をしようとしますので、主記憶装置は高速で動作する必要があります。
人間に例えると、メモ帳やポストイット的な役割です。
それらは面積よりも携帯性やすぐに使えることが求められますよね。
代表的な主記憶装置としては、メモリが挙げられます。
こんなかんじの見た目↓
###補助記憶装置
補助記憶装置は主記憶装置とは異なりCPUと直接やりとりはしません。
従って、CPUが行う高速な仕事には直接関わりませんので、そこまできびきびと応答する必要がありませんが、長期的にたくさんのデータを保存しておくという役割があります。
例えば写真や動画、アプリ等のデータは補助記憶装置に保存されていきます。
代表的な補助記憶装置としては、ハードディスクやSSDといったものがあります。
ちなみに、よく混同されがちな主記憶装置と補助記憶装置は度々その人のリテラシーを試してきます。
というのも、スマートフォンなどのスペックをみるときに「メモリ8GB搭載」と表記されているのを見て、
「え?! 8GBしか保存できないの?」
とか言ってしまうと、僕みたいなキモオタに早口でつっこまれますのでお気をつけください。
一般的にメモリは主記憶装置で、ストレージというと補助記憶のことを指します。
**メモリは一時保存が目的なので比較的に低容量(4GB~)**で、**補助記憶装置は長期保存が目的なので大容量(256GB~)**となります。
##処理装置 (演算装置+処理装置)
処理装置は、演算装置と制御装置をまとめた装置のことで、コンピュータ全体に指示を出しながら管理統制を行う脳みそのような装置です。これが所謂CPUです。
CPUはCentral Processing Unitの頭文字を取ったもので、日本語訳すると『中央処理装置』という意味になります。これは「コンピュータの中心になって、全体の管理統制をするもの」という機能をよく表した名称だなぁと感心しています。
↓見た目はこんな感じ
制御装置は他装置とのやりとり/命令系統を担い、演算装置はとにかく計算をしまくります。
プログラムを実行する時は制御装置が主記憶装置から情報や命令を取り出し、演算装置がそれらを計算・処理するという流れになります。
そのため、とにかくCPUが高速に動いてメモリが大容量であれば、高性能なコンピュータと言ってしまっていいでしょう。
この辺の流れはプログラミングをする上でも大変重要になってきますので、本格的にコンピュータアーキテクチャを学ばれたいという方は更に踏み込んで学ばれることをオススメいたします。
個人的なお勧めはO'Reillyのコンピュータシステムの理論と実装です。(アフィリエイトリンクじゃないです)
##出力装置
最後は出力装置です。
入力装置から処理装置などの装置を通ってきたデータは、この出力装置で使用者に認識できる形で出力されます。
代表的なものは、ディスプレイ、スピーカー、モーターなどです。
#まとめ
ということで、ざっくりとコンピュータについてまとめてみました。
コンピュータ(特にノイマン型)は、入力装置・演算装置・制御装置・記憶装置・出力装置からなる電子計算機のことだと説明すれば一応間違ってはいない説明になるかと思います。
個人的には今回みたいなコンピュータアーキテクチャとか、組み込みプログラミングとかが好きなので、もっとこれらの良さを伝えられるようなことができればと思っています。