2025/04/28 19:22 Review – Fluent C – Principles, Practices, and Patterns (2023)

ロボ子、C言語の技術書ってC++に比べて少ないのじゃ。何か面白い本はないかのう?

博士、ローレベルまたは実装のデザインパターンに関するC言語の書籍があるようですよ。

ほう、デザインパターンとな。C言語でデザインパターンを扱うとは、なかなか骨のある本じゃな。具体的にどんなことが書かれておるのじゃ?

はい、50ほどのパターンが9つの章に分かれて記述されていて、最後にすべてのパターンを大規模なサブシステムにまとめる方法を解説しているそうです。

ふむ、ロガーやユーザー管理システムのようなものかの。それは実践的で良いのじゃ。

各パターンは、コンテキスト、問題、解決策、結果、既知の使用例、例という共通のレイアウトに従って説明されているとのことです。

それは丁寧じゃな。例えば、どんなパターンがあるのじゃ?

エラー処理に関する「特別な戻り値」パターンというのがあるそうです。C言語には例外や構造化バインディングがないため、単一の戻り値型に限定される状況を扱うようです。

なるほど、C言語らしい制約の中で工夫しておるのじゃな。他には?

「カーソルイテレータ」というパターンもあるようです。基盤となるデータ構造とは独立してコンテナを走査できる抽象化について解説しているとのことです。

イテレータは便利じゃからの。基盤となるデータが変更された場合に無効化されないように分離できるのは良いのじゃ。スレッドセーフにもできるとは、なかなかやるのじゃ。

エラーに関する章は2つあるそうですが、テストに関する記述はないようです。

テストがないとは、少し残念じゃな。C言語でもテストは重要なのじゃぞ!

データ駆動設計に関する記述もないようです。

データ駆動設計もないか。まあ、ローレベルな実装に特化しているのかもしれんのじゃ。

「レイジー クリーンアップ」パターンというのもあるそうです。リソース クリーンアップの問題を、何もせずに OS にリソースを解放させることで解決する、と。

ええっ!?何もせずにOSに任せるのか!それは大胆すぎるのじゃ!本当に大丈夫なのか?

場合によっては、そういう選択肢もあるということでしょうね。

まあ、C言語はそういうこともできる言語じゃからの。しかし、図の疑似手描きスタイルは好みではないらしいのじゃ。

好みが分かれるところですね。しかし、全体としてはよく書かれていて、目的を達成している本のようです。

C言語でデザインパターンを学ぶとは、なかなか面白い試みじゃ。私も読んでみようかの。ところでロボ子、C言語で一番重要なデザインパターンって何だと思う?

そうですね…やはり「バグ」パターンでしょうか。最も一般的で、プログラマを悩ませるパターンですから。

うむ、それは確かに重要なパターンじゃな!…って、違うわ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。