twitterで誰か(たぶんエンジニアとして有名な人)がおすすめしているのを見て買って読んでみた。 結論から言うと非常によかったので、 何が良かったのかを記載しておく。
断片化した知識が全て一つのストーリーで繋がった
僕はjavascriptからプログラミングに入ったので、 プログラム実行時に下層で何が行われているのかの知識がそもそも薄かった。
現在はC#をやっていることもあって下層を意識する機会が増え、 また問題発生時の対応力を高めるためにも下層で何が行われているのかに興味を持ち、疑問に思ったことは適宜webで調べて細かい知識をためていた。
- ソースコードはコンパイルされて機械語に変換されたものがバイナリ実行ファイルらしい
- CPUはメモリからプログラムを読み込んで実行しているらしい
- メモリにプログラムが格納されるらしい
- 標準ライブラリがあってコンパイル時にリンクされて使われるらしい
- (ライブラリは)動的に読み込まれたりもするらしい
- ファイル操作はストリームってのを使ってやるものらしい
- コマンドプログラムの引数の書式がよくわからない。調べたら使えるけど
- プログラムが実行されるとプロセスが作られるらしい
- シェルのパイプは標準出力と標準入力をつなぐらしい。
こんな感じで断片的に知識を得ていたが、結局自分がどれくらい理解できているのかが解らなかった。 さらに、知識間の関連を持てていないのでしばらくするとまた忘れてしまう。 忘れてしまうと、何を理解していたのかも解らなくなってしまって、 いつかまた業務中などに同じ疑問を持つときまで学び直すこともできなかった。
そういった状況だったが、 この本を読んだことで、プログラムが実行される全体の流れをわりと細かく認識できるようになった。
脳内にマップが作られ、これらのバラバラと存在していた知識がマップのどの部分で行われている事だったのかが解ってガッチリ身についた感覚があった。
業務などで疑問に思って都度都度調べて対応していたりすると、こんな感じで断片的な知識のみが溜まっていく事が多い。 たまに知識を整頓する為に、こういう書籍を読んでいくことは有用だと思った。 こういう本が存在することは本当にありがたい。
あとこの本、わりと難しい内容をものすごくわかりやすく説明してくれているので「説明テクニック」の参考書としても有用なのではないかとおもった。