みんなのコンピュータサイエンス の感想記事です。
全体の感想
読んで良かった。200 ページという少ない文量なので、サクッとコンピュータサイエンス(以下: CS)の概観をつかむことができる。自分は CS を専攻したことがなかったので、とても勉強になったし、今まで身につけた知識が整理された。
具体的には以下のような人にオススメ。
- これからアルゴリズムについて勉強していこうと思っている人
- 基本情報技術者を取得したい人
- 基本情報技術者を取得したが、知識が体系化されていないと感じている人
本書の構成
1 章:基礎
2 章:効率
3 章:戦略
4 章:データ
5 章:アルゴリズム
6 章:データベース
7 章:コンピュータ
8 章:プログラミング
9 章:おわりに
お気に入りの箇所
ちまたでは「アルゴリズムとデータ構造」という書籍やフレーズをよく見ますが、なぜこの 2 つがセットで語られるのかピンときていませんでした。
しかし以下のフレーズを読んで腹落ちしました。
ほとんどのアルゴリズムは特定のデータ構造の対象でしか動作しません。事前にアルゴリズムを選択すれば対象をアルゴリズムに応じたデータ構造にするとこができます。
言われてみればそりゃそうなんですが。
このフレーズを読むまでは
- データ構造がある
- それに適したアルゴリズムを使う
というアプローチしか考えていませんでした。
しかし、アルゴリズム->データ構造というアプローチもあるんだなと。
このアプローチで LeetCode の問題を解いていくと色々発見がありそうだなと思いました。
※ LeetCode は問題で型が指定されているので、そこまで影響ないかもですが。
その他良かった点
4章:データ
言語によらないデータ構造やそれに対する処理の名前(例:stack に対する push,list に対する slice など)を知ることができます。
例えば Go 言語の slice などもこの前提知識があればスッと理解できるはず。
6章:データベース
RDB 以外にも NoSQL,地理情報 DB などのデータベースについても触れられている。
7章:コンピュータ
CPU,メモリ、ストレージなどの知識。自作 PC を組んだときに L2 キャッシュとか謎フレーズが出てきて、「どうせ多ければ多いだけ良いんだろ」と雑に考えていたが、理解。
最後に
良い本でした。
物理本で買ったので後輩や駆け出しエンジニアに貸したい。
半年後とかにもう一度読み返したい。