らんらん技術日記

日々の学習メモに

読書感想:Cプログラミング専門課程(藤原博文著)

僕は仕事柄、Cのプログラムを書くことが"たまに"あるのですが・・・
最近、自分のコーディングスキルは低いのではないかと感じてきました。

別に、これまでは十分なレベルだと思っていたわけではないのです。
ただ年相応のレベルというか、年を重ねるうちに、成長するものと思っていました。
予想外だったのは、C(というかプログラム)を書く機会があまりないことです!
たまに書く機会があると、我ながらいつも思うのです

「まるで成長していない・・・」

と。そんなわけで、意識して勉強しようかなと思い、久しぶりにC言語の本を手に取ってみました。


藤原博文 著: Cプログラミング専門課程
www.amazon.co.jp

この本を選んだ理由は、数年前に退社された先輩から頂いた本だからです。
頂いたままお蔵入りさせていたのですが・・・。

感想

初版が1994年です。
発展が著しいコンピュータサイエンス分野にあって、いつの時代の本だよって感じですよね。
そんな訳で僕はお蔵入りさせていたのですが・・・。
しかし今回読んでみて、それは勘違いだったことに気づきました。

この本は今でも通用する、C言語の名著です!

実際、アマゾンの最新レビュー(2019年、2018年)でも高い評価を受けています。
思い出してみると、先輩も「この本は凄くいいよ」って渡してくれました。
当時はその心を解することができず、未熟だったなぁ。。。
本書で触れているパソコンや開発環境は、残念ながら時代遅れです。
しかし、そもそもC言語は、ANSI Cが1989年に制定されて現在に至るまで、文法に大きな変更はありません。
筆者が記したC言語の心の部分は、今でも力強く輝きを放っているように感じました。


さて、僕がこの本を素晴らしいと感じたのは、バグに焦点を当てている点です。
たいていのC入門書は、ポインタや関数等の使い方は解説しますが、誤使用による危険性にはあまり触れていないと思います。
この本では、Cでバグがどのように発生し、プログラムにどのような影響を与えるのかを、執拗に説いています。
参考までに、本の中から一部フレーズを抜粋します。

(スコープについて、p82)
そもそも、C言語に安全なんて言葉はありえません。アセンブラと同レベルの万能で、かつ便利な言葉ですが、同様に危険な言語です。初心者がC言語を使用するのは「気違いに刃物」を持たせるようなものです。

だいたいこんな調子で、全350ページに渡り、Cの危険性について述べているのです。

Cがなぜ危険かというと、コンピュータのメモリの仕組みに直接アクセスできるからです。
ポインタを使ってプログラムの中身を書き換えるとができるし、
キャストによってデータの解釈をいかようにすることもできるし、
動的メモリ領域の管理も好きなようにやれます。
この仕組みはとても便利な反面、かなりやっかいです。

自分では最新の注意を払ってプログラムを書いたとしても、
他人のプログラムによって普通にバグが発生することがあります。
あるいは一見正しく動いているプログラムであっても、
どこかのタイミングでプログラムの一部が破壊されることで、再現困難なバグとなることもあります。

なのでCプログラマとしては、バグの発生原因を知っておく必要がある。
また、他人が使うことを想定して、バグの発生を抑制するコーディングを心掛ける必要がある。

といったことが、本書で学べると思います。
僕自身のことを述べると、
今時はオブジェクト指向の時代やー、
いかに使い回しが効くコードを書くかが重要なんやー、
なんて思っている部分があります。
それはそれで大切だと思うのですが、C言語を扱う以上は、まずは安全なコードであることを優先すべきだなと感じました。

以上です!

追記

急にレビューを書いてみたのは、自分用メモ + 文章を書く練習のためですが・・・
全然内容がまとまらず、自分の文章能力の低さに呆然としました。
今後も何か本を読んだら、挑戦していきたいです。