Push: Ctrl+Y

 技術で遊んで ときどき進む

ブックレビュー

コンピュータ・プログラミングの基礎を学習したい人へ『CODE - コードから見たコンピュータのからくり -』

bookreview-code

プログラミングはある面において数学のテストと似ている。
「数学」そのものについて知らなくてもテストが解けるように、「プログラミング」ひいては「コンピュータ」そのものについて知らなくてもコードは書ける。

プログラマとして生きていくなら毎日関わる「コンピュータ」。
関わるのに「知らない」ということは、本当は根っこの部分では超ストレスだった。「知らなくてもできる」というのは「できる」ことに対する嬉しさ半分、自分をだましているようで気が引ける半分。
最終的にはやっぱり、「わかりたい」!!
そんな人に贈るのがこの本、『CODE - コードから見たコンピュータのからくり -』だ。

 

コンピュータの基礎について知りたいと調べたとき、最初に出会った本は「平易な本」か「難しめの技術書」だった。
コンピュータの仕組みについて平易に書かれている本の大半は、例えを使っている。
例えられると「なるほど!」という気持ちになれるから気分が良いけれど、ちゃんとわかりたいと思ったときには邪魔になることが多い。
例えは下位の情報を抽象化してまとめるもの(「わかっている」ときに、理解をより深くするためのもの)であって、わかっていないのに抽象化された概念を学んでも意味がない。イメージ化された情報が先行すると学習には不利益になる場合もある、、気がする!

かといって、ちゃんと解説してある技術書でゼロとイチの話をされても頭に入り辛い。
基本情報技術者試験の解説本を読んだりしたが、いまや内容はほとんど思い出せない。。
読めば理解はできるけれど、自分の頭で再構築できるほどにはならなかった。

本書はこれらとは根本的に異なるアプローチで高度な内容を解説している。
コンピュータの仕組みを「コンピューターを作る物語・歴史を流れで」詳細に説明しているのだ。その違いは目次を比較すれば明かだろう。

 

CODE
第1章 親友
第2章 コードと組み合わせ
第3章 点字とバイナリコード
第4章 懐中電灯の解剖学
第5章 角を回って見る
第6章 電信とリレー
第7章 私たちの10個の数字
第8章 10に代わるもの
第9章 ちょびっとずつビットで
第10章 論理とスイッチ
第11章 ゲート
第12章 2進数加算器
第13章 でも引き算はどうする?
第14章 フィードバックとフリップフロップ
第15章 バイトとヘクス
第16章 メモリの構築
第17章 オートメーション
第18章 算盤からチップへ
第19章 2つの古典的マイクロプロセッサ
第20章 ASCIIとキャラクタの配役
第21章 バスに乗る
第22章 オペレーティングシステム
第23章 不動点、浮動点
第24章 高級言語、低級言語
第25章 グラフィカル革命
かんたん合格 基本情報技術者教科書
第1章 ハードウェア
第2章 ソフトウェア
第3章 コンピュータで扱うデータ
第4章 アルゴリズムとデータ構造
第5章 システム開発
第6章 コンピュータシステム
第7章 ネットワーク
第8章 データベース
第9章 セキュリティ
第10章 マネジメント
第11章 情報化と経営

 

最初は

  • 隣の家に住んでいる親友と夜にメッセージを送りあう方法

として、モールス信号や点字(バイナリ情報)を解説。これが、

  • 引っ越してしまった親友とメッセージのやり取りをする方法

になり、電池や電信の基礎の話に広がる。
自然と言語(相手とやり取りする情報)がゼロイチに変換できるということを受け入れられたところに、2進数・ビット・スイッチや回路・・とちょっとずつ難しくなっていき、気がつけばコンピュータの中身がわかるようになっている。
言葉を信号に変えて声の届かない人に伝えるという話が、より遠くに送るために電気信号になり、言葉を電気信号に置き換える仕組みとして「点く」「消える」の2進数が必要になる。ブールの論理学が出てくることで、スイッチを作って電卓をつくれるようになり、より便利にするのに記憶装置が必要。そうやって複雑なことをどんどんできるようになっていく合間合間に装置を効率化するための工夫が挟まって、今のコンピュータができていることがよく理解できる。

本書のアプローチがすごいのは、物語になることで記憶に残りやすくなること・そして、「何故その形になったのか?」という基本的・根本的な理解を得られるところだ。
プロセッサもバスもOSも、それ単体で学ぼうとすると小難しいことになりがちなのに、「流れ」でみると当たり前のことみたいに受け入れられる。

コンピュータをわかりたいけど取っ付きづらくて辛まっている人へ、本書から始めることをおすすめします。

 

-ブックレビュー
-, ,

おすすめの記事

1
React + Redux入門① - Reduxの概念を理解

React+Reduxでサイトを作っているので、復習がてら「検索画面を作成する」 ...

2
React + Redux + D3.js アニメーション:ドラッグ&ドロップでキングスライムを作った

はい、今回は要素のドラッグ&ドロップを中心に作ってみました。 Mater ...