プログラムは書けるけど、それだけじゃダメなの?
ダメではないですが、足りない事はあるかもしれませんね。
先日、IT系の基礎知識を身に付けるための良書とされる「プログラムはなぜ動くのか」という書籍を読んだので、その書評を書かせて頂きます。
なぜ本書を読んだか
自身の問題点
私は大学の頃の専攻は非情報系の学科です。このため、仕事に必要なスキルは実務を通じて身に付けた物がほとんどです。
ただ、バリバリの情報系の方や、ベテランの技術者の方に比べると知識の幅広さで勝てないと感じる事が多いです。
特に、プログラムよりも基本的な部分の知識の不足を感じていました。具体的には、OSやCPUなどです。
こうした部分の知識があると、ただ実装するだけでなく、より効率的に実装する事ができます(という事を話には聞いていました)。
本書を読んだきっかけ
先日、職場のデキるタイプの先輩と話をしていた時に
俺が新人の頃に、XXさんにコードレビューを依頼したら、OS的にはこういう実装は良くないって、メッチャ指摘されてさ~
という話がでました。
そうなんですね~。(OS的に良くない実装って何のことや?)
恥ずかしながら、これまでコードを書く時には、特にOS的にどうか?といった事はあまり考えていませんでした。
本書にはOSやCPUなどの話もあるため「これを読めば先輩とのスキルの差を埋めるのに役立つのでは?」と考えて本書を読むことにしました。
どういった人にオススメか?
本書を一通り読んだ結果、以下の様な人にお勧めです。
- 非情報系の出身のITエンジニア
- プログラミングの経験はある
- プログラミングよりもっとITの基礎的な知識を付けたい
- ただプログラムを書ける人より一歩成長したい人
知らないと絶対に無理、という訳ではありませんが、知っていると役に立つ場面もあるという内容です。
本書の参考になった点
ざっくりと本書の内容の紹介
内容としては、プログラムをコンピュータはどう処理しているか、CPU、メモリ、OSとはどんな物か?何をしている物か?といった事が書かれています。
個人的に勉強になった箇所
特に勉強になったと感じるのは以下の事です。
- 浮動小数点の誤差の原因
- DLLを使う事の利点
- ディスク領域におけるクラスタについて
- OS・CPU・プログラムの関係
- 64bit版と32bit版でのプログラミングについて
- 並列処理で値が想定通りにならない原因
日頃あまり気にしていなかった事、改めて説明しようとすると詳しくは説明できない事を勉強するのに適した内容でした。
本書を読んで説明できる様になった事(一部紹介)
少しだけですが、本書を読んで私の理解が深まった内容を書きます。
浮動小数点の誤差について
浮動小数点型の変数では誤差がでるのは、演算プログラムを書いた人なら常識だと思います。
私の認識では「言語仕様で有効桁が決まっているから」というものでしたが、本書で2進数の話と関連付けて説明されると、誤差がでる原因がより納得出来ました。
※10進数で1/3を少数で表すと、0.3333…となってしまい上手く表現できません。プログラム的にはデータを2進数で表すため、10進数では有限桁でも2進数では無限桁になってしまう場合があります。このため、10進数で計算した結果とは微妙な誤差が出る場合があります。
OSが変わるとアプリが動作しない理由
非情報系の出身でもOSが変わればプログラムは動かない、というのも常識として知っています。(同じアプリでもiOS用とAndroid用は別ですし、IT系の人でなくともご存知かと思います。)
本書を読めば、OSが違うとはどういう事か?といった点の理解を進める事ができます。
※簡単に言うと、アプリはOSと連携して動作しますが、OSが違うとアプリとOSのやり取りに使う言葉が変わるため、OSが変わるとアプリとの連絡が上手く行かなくなります。
まとめ
書籍「プログラムはなぜ動くのか」は、プログラミングの基本的なことから勉強したい、勉強し直したい、という方にお勧めです。
コンピュータの根本的な部分の内容であり、2,3年で役に立たなくなる知識ではないので、若手の内に読んでおくことをオススメします。
ご参考になりましたら幸いです。
以上
コメント