tawara's blog

雑記。個人の見解です。

コンピューターの三大原則!

こんにちは、たわらです。

コードを書く上で、概念やら理論やらが整理されていないと、頭が混乱して手が止まってしまうタイプなので、抽象度の高い本を探していました。職場にこの本があったので読んでいます。

amzn.to

のっけから、コンピューターの三大原則について説かれていて、感心してしまいました。

三大原則

1 コンピューターは、入力、演算、出力を行う装置である(ハードウェア)

コンピューターのハードウェアはIC(Integrated Circuit 集積回路)から構成されていて、個々のICにはピンがたくさんついている。このピンは入力用か出力用のどちらか! なるほど、あのムカデみたいな足はこれだったのか! 足の一つから入力された情報を演算して足の一つから出している、ということなんですね。すっきり。

2 プログラムは、命令とデータの集合である(ソフトウェア)

命令とは、入力・演算・出力をコンピューターに指示するもの。この命令を並べたものがプログラムのこと。で、ひとかたまりの命令群に名前をつけて、「メソッド」や「関数」などと呼ぶ。引数・処理・返り値が入力・演算・出力に相当しているのですね!

データは、命令の対象となる入力情報 / 命令の結果によって得られる出力情報のこと。プログラミングではデータに名前をつけて「変数」と呼ぶ。

命令は数学の関数の構文が使われる。

 y=f(x)

yが出力情報で、xが入力情報で、fが演算ということ。

余談ですが、あまりにも関数が多くなりすぎたために、似ている機能を寄せ集めてひとつにしたのがオブジェクト指向のクラスという概念らしい。この本の後半に登場する。

3 コンピューターの都合は、人間の感覚と異なる場合がある

代表的な例は、なんでも数値に表すこと。色も文字も公開鍵も秘密鍵も全部数値のこと。ソースコードマシン語に変換することをコンパイルといい、コンパイルを含む変換作業をビルドというらしい。

最後に

ざっくりまとめると、入力・演算・出力の3つが大事で、コンピューターはそれらを数値で処理する、ということですね。この出力情報を入力情報として扱って常に結果を変化させることをフィードバックというのではなかったかしら、、、まあそれは別の話。

参考文献

コンパイル」と「ビルド」の違い|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

https://wa3.i-3-i.info/diff502programming.html