C言語に関するよくある勘違いのパターン

 ここでは、筆者なりに感じた「C言語に関するよくある勘違い」の類型パターンをいくつか紹介します。連載等で紹介したことのある類型パターンを含みます。

賢いつもりの僕

 地道に努力して周囲から評価される人物になるという手順を省略して、既に僕は有能で賢いと信じ込みたい者達。最先端をやっていれば優秀であるかのように思ってもらえる可能性があるため、彼らは最先端技術をファッションとして身にまといたがる。彼らの多くは、C言語のような単純で古い技術は分かっていて当然と信じ込み、他人の間違いを指摘して正しいC言語というものを滔々と語るが、その内容が間違っていることが多い。

C言語モノカルチャー

 全ての問題をC言語を使うことを前提で考え、語る。明らかにC言語向きではない題材であってもC言語で書くことを前提に語るので、効率が良くないことが多い。また、C言語と本来関係のない技術についても、C言語の常識を前提として語るので、論点がずれがちだが本人は気づかない。

セキュリティ猿

 コードにセキュリティ的なリスクが僅かでも発見されると猿のように騒ぎ立てるタイプ。そもそも、C言語はリスクを取って自由を得ることを特徴とするプログラミング言語なので、リスクをゼロにすることは現実的ではない。逆に、リスクを無くすことが至上命題であればそもそもC言語を使うのは明らかに良くない選択肢だが、それでもC言語のソースコードを前提としたセキュリティ語りばかりが延々と続くことも多い。このようなケースでは上記の「C言語モノカルチャー」の類型も併発している。

移植性幻想

 特定環境や処理系に依存したコードをけして書いてはならないとするタイプ。たとえば、ポインタをintにキャストすることや(必ずポインタと同じビット幅がintにあるとは限らない)、memsetで配列をクリアすること(実数やポインタが0.0や空ポインタになるとは限らない)を誤りと見なす。しかし、それらの問題を神経質にすべて励行しても、手間が掛かる割に依存性を全て除去できないことも多い。C言語は、環境や処理系によって結果が決まる規定も多いため、当然の結果といえる。ちなみに、依存性無しに容易に書けるコードをわざわざ依存性のある書き方で実装するのは明らかに無駄であるが、それとは別問題である。


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS