シマウマ de 考察

海外駐在5年目突入のリーマンが書くブログ。最近はThe Economistの記事を中心に書いてます。

コンピュータはなぜ動くのか?

ずっとブラックボックスだったコンピュータについてそろそろ理解してたほうがいいんじゃないかと思ったので、コンピュータがどう動くかについて勉強することにした。

本のタイトルが自分の欲求と完全にマッチングしていたので、この本で勉強することに決めた。

www.amazon.co.jp

早速第一章の重要な点と言葉の意味を忘れないために記載しておく。

 

第一章 コンピュータの3大原則とは

コンピュータを取り扱ううえで絶対的な基礎となることはたった3つだけである。これを「コンピュータの3大原則」と呼ぶことにする。早速紹介しよう。

  1. コンピュータは、入力、演算、出力を行う装置である
  2. プログラムは、命令とデータの集合体である
  3. コンピュータの都合は、人間の感覚と異なる場合がある

現在では高度に複雑化してしまったように思えるコンピュータだが、その基本的な仕組みは驚くほどシンプルであり、初期のコンピュータの時代からは何も変わっていない。だからここで紹介した3大原則を頭に入れて考えると、複雑に見えるものもシンプルに理解できるようになるのだ。

ここからは個々のワードを紹介していく。

コンピュータ:ハードウェアとソフトウェアから構成されている。

ハードウェア:入力、演算、出力を行う装置であり、たくさんの「IC (Interegrated Circuit、集積回路)」から構成されている。個々のICには数多くのピンがついており、入力用または出力用のいずれかである。ICは外部から入力された情報を内部で演算し、その結果を外部に出力する。

ソフトウェア:すなわちプログラム(同じものとして捉えてよい)。命令とデータの集合体。どんな高度で複雑なプログラムであっても、その内容は命令とデータから構成されている。

命令:入力、演算、出力をコンピュータに指示するもの。コンピュータに対する命令を書きならべたものがプログラムである。

プログラミング:プログラムを書きならべる行為。プログラミングでは、ひとかたまりの命令群に名前を付け、「関数」「ステートメント」「メソッド」「サブルーチン」「副プログラム」などと呼ぶことがある。どれも同じ意味であるが、コンピュータ業界では同じことを表すのにさまざまな用語があることが多くある。注意が必要。

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

コンピュータの都合:何でも数値で表すこと。すべての情報を数値で表すのである。一般の人がコンピュータを敬遠する原因のひとつである。たとえば、人間は色の情報を「青い」とか「赤い」という言葉で表す。これをコンピュータに置き換えるなら、青色は「0,0,255」、赤色は「255,0,0」、青色と赤色を混ぜた紫色は「255,0,255」のように数値で表されるのだ。

コンピュータが進化を止めない理由:まだ完成の域に達していないから。コンピュータ技術が進化する目的はただ一つ「人間に近づくこと」である。人間に近づくには、コンピュータの都合で人間の感覚に合わなくなっている部分を解消する必要がある。MS-
DOSからWindowsに進化した理由も、二足歩行ロボットをわざわざ開発するのも、すべてはこの目的に近づくためである。ちなみに現状のWindows以上に人間に近いユーザー・インターフェースを目指すことを「ユーザー体験(ユーザー・エクスペリエンス)」と呼ぶ。

プログラミング手法:プログラミング手法にも進化がある。コンポーネント・ベース・プログラミング(Component Based Programming)やオブジェクト指向プログラミング(Object Oriented Programming)と呼ばれるものだ。これも人間がモノづくりをするのと同様の感覚でプログラミングできることを目的とした進化の結果である。

 

本書で紹介されているクイズも記載しておく。

初級問題
Q. ハードウェアとソフトウェアの違いは何ですか?

A. コンピュータ本体、ディスプレイ、キーボードなどのように、目に見える装置となっているものがハードウェア。コンピュータによって実行されるプログラムの命令とデータがソフトウェアである。ソフトウェア自体は目に見えない。

中級問題
Q. 「リンゴ」という文字列は、半角文字で何文字ですか?

A. 4文字。

上級問題
Q. コード(code)とは何ですか?

A. コンピュータで取り扱うために数値化された情報をコードと呼ぶ。コンピュータは、本来数値でない情報であっても、内部的に数値として取り扱う。