イルカの肌はナスのよう

おいでくだすった あなたへ キス を

CS関連の本をいろいろ読んだ(2022年度)

2022年度は、コンピュータサイエンス(以降CS)の理解を深めるために、何冊か書籍を読んできました。 理由としては、エンジニアとして今後も生きていくうえで、CSを勉強しておきたいと考えたためです。 学びたい分野としては、CPU、コンピュータの動作原理、アルゴリズムとデータ構造などです。
本日紹介する中には途中までしか読めていないものもあり、不完全燃焼ではあるのですが、一旦の区切りとしてそれぞれの感想を記載します。  

読んだ本の感想

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

  • タイトル:コンピュータはなぜ動くのか~知っておきたいハードウエア&ソフトウエアの基礎知識~
  • 著者:矢沢久雄
  • 発売日:2003/6/2
  • ISBN-10:4822281655

IT業界に身を置く方であれば皆さんご存じの「○○はなぜ動くのか」シリーズです。こちらの「コンピュータはなぜ動くのか」は、CSを学ぶ一冊目として非常に有名な本です。 この本は、コンピュータに関わる広い分野を説明しています。

CPUやアセンブリの部分などは読みやすくも重厚であり、読んでよかったと思いました。
コンピュータについて学びたいと思ったすべての人におすすめです。

コンピュータはなぜ動くのか~知っておきたいハードウエア&ソフトウエアの基礎知識~

プログラムはなぜ動くのか

  • タイトル:プログラムはなぜ動くのか 第2版 知っておきたいプログラムの基礎知識
  • 著者:矢沢久雄
  • 発売日:2007/4/1
  • ISBN-10:4822283151

こちらも「○○はなぜ動くのか」シリーズですが、プログラムの動作についての本です。 2進数、誤差、メモリ、ディスク、コンパイル、OS、シミュレーション、アセンブリなどについて記載されています。

特にアセンブリの章は内容が濃く、とても読み応えがありました。 「低レイヤについて学びたい」と思っていた私にとってはピッタリの本でした。読んでよかったです。

プログラムはなぜ動くのか 第2版 知っておきたいプログラムの基礎知識

思考する機械 コンピュータ

  • タイトル:思考する機械 コンピュータ (草思社文庫)
  • 著者:ダニエル ヒリス
  • 発売日:2014/6/3
  • ISBN-10:4794220588

こちらもCSに関して有名な書籍です。 ブール代数から始まり、論理回路オートマトン情報理論、並列回路、遺伝アルゴリズムなどが説明されています。
「コンピュータをコンピュータたらしめるのはその理論である」といった主張のもと、理論的な側面について深く書かれています。
この本を読むと、著者の主張が伝わってきますし、著者のコンピュータへの愛と理解がすさまじいことが分かります。

しかし、私にとっては難しかったです。あくまで文字ベースなので、結果的にフワっとした理解で終わってしまった感じがしました。
まだ勉強を続けて、自分の理解が深まった後で読み直してみたいと思っています。

思考する機械 コンピュータ

揚げて炙ってわかるコンピュータのしくみ

  • タイトル:揚げて炙ってわかるコンピュータのしくみ
  • 著者:秋田純一
  • 発売日:2020/8/19
  • ISBN-10:4297116014

こちらは別のブログ記事でまとめました。 さらっと楽しく読めるよい本です。 https://jigokukamakiri.hatenadiary.com/entry/2023/02/06/212838

コンピュータシステムの理論と実装

  • タイトル:コンピュータシステムの理論と実装 ―モダンなコンピュータの作り方
  • 著者:Noam Nisan(著), Shimon Schocken(著)、 斎藤康毅(翻訳)
  • 発売日:2015/3/25
  • ISBN-10:4873117127

この本も言わずとしれた本です。 こちらは通称「Nand2Tetris」と呼ばれていますが、その名のとおり、NAND回路から始まって、一つ一つコンピュータの構成要素を組み立てていき、 作成したコンピュータの上でアプリを動作させる、という内容の本です。

私は2章の途中で挫折してしまいました・・・。本当に自分でひとつひとつを組み立てていくので、かなりの時間がかかります。 業務で忙しいときもある中で、モチベーションを保ってこの本をやりとげるのは難しかったです。 しかし、この本をやりとげたらエンジニアとして世界が変わるだろなとは思いました。とりあえず、今は本棚に置いておきます。

コンピュータはなぜ動くのか~知っておきたいハードウエア&ソフトウエアの基礎知識~ | 久雄, 矢沢, 日経ソフトウエア |本 | 通販 | Amazon

動かしてわかる CPUの作り方10講

  • タイトル:動かしてわかる CPUの作り方10講
  • 著者:井澤 裕司
  • 発売日:2019/8/21
  • ISBN-10:4297108216

こちらもCPUを構築することでその原理を学ぶための本です。 この本の特徴ですが、アーキテクチャを決定し、論理回路から初めてCPUを作成していくボトムダウン方式ではなく、 ソフトウェア側を作成してからハードウェア側を作るトップダウン方式を採用しています。 それによって、CPUの全体像が把握しやすくなっています。 最終的にはパイプライン処理も実装し、かなり高度なCPUが作成できます。

私が読んだ感想として、必要な知識の一つ一つをごまかさず丁寧に説明されていると感じました。 私としては、上記の「コンピュータシステムの理論と実装」よりも取り組みやすいと思いました。 今この本の2週目を読んでいるところなのですが、この本の内容が理解できれば、低レイヤについて詳しくなったと自身を持って言えると思っています。 2月~3月中でやりとげたいと思います。

動かしてわかる CPUの作り方10講 | 井澤 裕司 |本 | 通販 | Amazon

独学コンピュータサイエンティスト

  • タイトル:独学コンピューターサイエンティスト Pythonで学ぶアルゴリズムとデータ構造
  • 著者:コーリー・アルソフ(著)、清水川貴之(翻)他
  • 発売日:2022/8/26
  • ISBN-10:4296070347

アルゴリズムを勉強するためにLeetCodeを進めていたのですが、その副読本として買いました。 アルゴリズムとデータ構造という広い分野の中で、重要な内容をピックアップして丁寧に解説しており、必要十分な内容だと思いました。 コードもpythonで書かれているので、とっつきやすいです。おすすめです。

独学コンピューターサイエンティスト Pythonで学ぶアルゴリズムとデータ構造 | コーリー・アルソフ, 清水川 貴之, 新木 雅也, 大村 和子, tell-k |本 | 通販 | Amazon

最後に

何冊か読んできた感想ですが、まだまだ長い道のりだなと思います。 しかし、これからも自分で考えて手を動かすことをコツコツ続けていれば、チョットデキルと言えるレベルまではいけそうな手ごたえは感じました。 先人たちの叡智に触れられることを感謝して楽しみたいと思います。