最近では、C言語でプログラムを実装する機会があるSEはすくないと思います。ただしWindowsやLinux等のOSやドライバの実装等、システムの基盤となる部分にはまだまだC言語は使わていますので、OSの内部アーキテクチャを理解したり、トラブルシューティング等でダンプの解析を行ったりする際には、C言語の概念をある程度理解することはシステムエンジニアとして必要です。
C言語の文法はある程度知ってるけど…、というSEに次にオススメしたい書籍が「Cプログラミング専門課程」です。
■本書の内容
char *a = "ABC"
char a[] = "ABC"
の違いについて、きちんと説明できるでしょうか?
初心者向けのC言語の解説だと、ポインタと配列は基本的に一緒というような記載がされているケースがあります。まあ単純な業務処理ではあれば一緒と考えて問題ないケースもないわけではないですが、実際はメモリへの格納のされ方が異なりますが、本書を読むことで、上記の違いがスッキリ理解できるようになります。
本書の基本的な記載スタイルは、C言語でこのように実装するとこのようにメモリに格納されます、というものになります。本書の内容を理解した上でC言語のソースを読むと、「ああ、この処理でメモリのこの部分にこんな感じでデータが格納されているな」ということが理解できるようになります。またメモリリークが発生した場合、簡単なものであれば机上のソースを見るだけで原因を特定できるようになると思います。
また
- 配列とポインタの違い
- バイトオーダー
- アラインメント
- キャスト
あたりを「メモリ」の観点から丁寧に説明されています。
■どのような人におすすめか
基本的にはC言語をあまり使う機会がない若手のSEにオススメします。上記の通りC言語で実装する機会は無くとも、C言語の知識をもつことはSEにとって役に立つ場面が多いですので。今ならAmazonのマーケットプレイスで送料込みで600円程度で入手できますので、ぜひ読んでみてください。