【書評】プログラムはなぜ動くのか 第2版

中身の概要

データ分析のためにプログラミングを使う立場で計算機と付き合ってきたが、機会学習モデルをシステムとして本番環境にデプロイするようになってくると、コンピューターのこと知らなさ過ぎることの辛みが出てきたので、今年は計算機や情報工学についてもう少し詳しくなる目的で勉強を始めました。その第一弾がプログラムはなぜ動くのか 第2版です。

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

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

内容は、

  • CPUの仕組み
  • データの2進数での取り扱い方
  • 浮動小数点の扱い
  • メモリーの仕組み
  • コンパイルとアセンブリ
  • ハードウェアの制御

のようになっており、コンピューターをなんかよくわからんが計算してくれる箱だと思っている自分としてはこれがきっと基礎なんだろうなという内容が並んでいる。

解説のために出てくるCのコードをGoに置き換えながら読もうかと思いましたが、意外とC言語のコード少なく特別なこともしてなかったので、自身としてはあんまり効果なかったかなって感じです。一応リポジトリにコード置いて少しづつ進めます。

良かった点

特にメモリの仕組みや、コンパイル、アセンブリ言語のあたりはpythonでのデータ分析や機械学習モデリングをメインで取り扱っていると隠遁されていて意識していなかった部分だったので多少イメージがつくようになりました。 特に10章のC言語とアセンブリ言語を1対1で対応付けて解釈していく部分は、プログラミング言語の仕組みが腹に落ちた気がして、LLじゃなくても怖くないやん!となれたのはでかい。システムプログラミングをやろうと年末年始にC言語の勉強をしていたのはまじでためになっている気がする。CとGoそれぞれから作られたアセンブリの比較とかしたいな。時間あるときにやる。

会社のエンジニアも言ってたけど、この類の低レベルの話はすぐに何かが出来るようになるわけでもなく、誰かに褒められるわけでもないが、とはいえ知らないまんまだと新しい技術へのキャッチアップが進まんくなるというのはすごく納得感あるので継続して勉強していきたい。

次はGoならわかるシステムプログラミングやります。

Goならわかるシステムプログラミング

Goならわかるシステムプログラミング