タイトル
『コンピュータはなぜ動くのか』
-- 著:矢沢久雄
概要
ハードウェアの説明から始まり、ソフトウェアの内部での動きやネットワークについてなど、
コンピュータに関連する幅広い知識の基礎が丁寧に説明されています。
- コードはコンピュータにとってどのように解釈されているのか
- オブジェクト指向プログラミングの概念とは
- ネットワークの基礎中の基礎
- 暗号化技術の基礎的な考え方 ...など
日頃は意識せず使っているPCについての基本的な知識を得ることができ、
駆け出しエンジニアの私にとってはコンピュータの奥深さと自身の知識不足を痛感させられる内容になっています。
こんな人にオススメ
- エンジニアとして働き始めたもののコンピュータの知識に自信がない
- プログラミング以外の知識になると分からないことが多い
- 文系未経験からエンジニアを目指すため、プログラミングを勉強中
- 基本情報技術者試験の学習につまずいた
などなど、コンピュータの基礎知識をざっくりと得ておきたい人におすすめです。
個人的に参考になった範囲
1) 第2章 コンピュータを作ってみよう
この章では、コンピュータの根本的な動作原理を理解するために回線図と色鉛筆を使って疑似的なコンピュータを作成します。
コンピュータの内部構造 や 入力データの伝達方法 など、分かった気がしていた知識をしっかり理解し落とし込むことができました。
本書にも書かれていますが、
コンピュータ黎明期からの往年の技術者にとって当たり前の知識は
複雑化した技術の中で見えづらくなっており、コンピュータの本質を理解せずともある程度は動かせるようになっている、と感じました。
そんな中でハードウェア部分から理解し直す経験は非常に重要であると思います。
2) 第3章 一度は体験してほしいアセンブラ
この章は、「1と2を加算する」というプログラムを実行したときにコンピュータ内部がどのような動作が行われるかを説明した章になっています。
そのツールとして、マシン語(CPUが解釈できる、0と1のみの2進数で示す言語)の数値が意味する命令に英語の略語を割り当てたアセンブラを用いて、「1+2」の実行内容を紐解いていきます。
実際にCPUとメモリの間でデータが受け渡される様子なども解説されており、概念としてしか理解できていなかったCPUの汎用レジスタやメモリのアドレスなど、実際に動かしながら学ぶことができます。
ハンズオン形式で理解していくことによってイメージもし易くなり、業務で使用するJavaやC言語(高水準言語)についてのプログラム内部での動作も以前より解像度が高くなった気がします。
3) 第9章 ネットワークコマンドでネットワークの仕組みを確認する
この章では、Windowsで標準装備されているネットワークコマンドを用いて、MACアドレスとIPアドレスの違いやDNSサーバの役割など、ネットワーク分野の基礎中の基礎が説明されています。
私はこれまで(歴1年半ほどですが)ネットワーク分野に対して漠然とした苦手意識を持っていたため、理解を避けてしまっていました(全くと言っていいほど分かりませんでした)。
しかし、ネットワークコマンドを実際に動かしつつ図解でも説明されているため、非常に自然に理解することができました。
私と同じように「ネットワークが怖い」「MACアドレスってなに?」レベルの方は是非読んでほしいと思います。
最後に
今回は『コンピュータはなぜ動くのか』という本の紹介をしました。
IT関連の知識量が無限に広がり続けている昨今、しっかりとコンピュータの本質を理解した上で業務に取り組むことが重要だと実感しました。
また、あくまでこの本は各分野の浅い部分を素人にもわかるように説明してくれた本だと思うので、ネットワークやコンピュータ内部のことなど、仕事に関連しそうなことはさらに詳しく学習していかないといけないと感じています。
URL