新・闘わないプログラマ No.203

大きな欠点


C言語には、極めて大きな、致命的な欠点があります。
それは、
「なんだよ、この宣言。『int (*pf[10])(int, void (*)(char *));』って、なんのことだかさっぱりわからんぞ。なんちゅう文法じゃ」とか、
「何でnull pointerにするために整定数のゼロを代入するんだよー、ポインタ型と整数型は相互に代入できないはずじゃなかったのかよ。こんな一貫性の無い、汚い文法にしたやつ、出て来い」とか、
「どうしてCには文字列型って無いんだ? いちいち配列で文字列を扱うのは面倒だぞ。欠陥言語じゃないのか?」とか、
「『if (a = 0)』とか『if (10 < a < 20)』などという素直な書き方でどうして思ったような動きをしてくれないんだ? それに構造体は直接代入できるのに、配列は代入できないのはなぜだ? もうちょっと考えた文法にしてくれよ」とか、
「関数の定義で、関数の型を省略するとint型になるのは変ではないか。省略したら『値を返さない』という意味にするのが一番自然だろう?」とか、
「型のビット数が決まっていないのは、移植性のあるプログラムを作る上で厄介だ。なんで『int型は32ビット』とか決めちゃわなかったんだろう?」とか、
別にそういうことではありません。
まあ、この中には、今現時点で新たにC言語と同じ使い方が可能な言語を新たに設計したとしたら、当然改良すべき事柄であるものもありますし、また単なる言いがかり(C言語がC言語であるためには、それを変えちゃあまずいでしょ)というのもありますが、とりあえず、ここで話題にしたいのはそういう欠点ではありません。では何かと言うと、それは、

名前が悪い

と、これです。これに尽きます。
いやまあ「名前が悪い」と言っても別に、電車の中で「はじめてのC」とかいう本を読んでいて、周りの乗客に誤解されて恥をかいてしまった、とかそういうベタな話でもありません。じゃあ何が悪いと言うと…。

先日、ある種のプログラムというかシステムというか、そういうのをC言語で作っているような事例を知りたくて検索サイトで探してみようとしたわけです。で、キーワードとして「hogehogeシステム and C言語」として検索して見ると…0件。
ううむ、そういう事例は無いのかなあ、そんなはずないんだけどなあ。いや、でも待てよ、「hogehogeシステムでCでプログラムを書いた事例」とかいうような文は「hogehogeシステム and C言語」という検索では引っかからないなあ。「プログラムをCで書く」って感じでC言語のことを単に「C」と書くことも多い(というか、それが普通か)しなあ。んじゃキーワードを「hogehogeシステム and C」にしたらどうだ…あれ? 1万数千件もヒットしてしまったぞ。がーん、「C」などというアルファベット1文字じゃ、キーワードに入れても入れなくても結果はほとんど同じかあ。
これじゃあ、検索のしようがないじゃないか…しくしくしくしく。

これがCじゃなくてC++なら、今言ったような問題は発生しないわけです。「C++」と言ったら、まあ十中八九(いやそれ以上)、C++言語のことを指しているでしょうから。中には「++」演算子を持つ言語のソース中の行とマッチする場合もあるでしょうけど。
というわけで、C言語の最大の欠点は「名前が悪い」ということに、勝手に決定させていたきます…異論は認め…ないわけでもないような気がしないでもなくて ←弱気。

まあ今は、ちょっとした疑問、それも「こんな疑問、いったいどこで調べたらいいんだ? 辞書にも百科事典にも載っているわけないし」というような下らない疑問でも、検索サイトを使えばあっという間に解決してしまうような便利(なのか?)な時代だったりするわけですけど、この検索サイトを使う上での最大の敵が、「固有名詞でありながら、かなり一般的な単語や文字、またはそれらの組み合わせである」というやつかな、と私の経験上、そう思います。
そういえば、以前、MacOS Xのドライバ関連のサポートがどうなっているか検索サイトを捜したときに、「MacOS X」というキーワードではうまく検索が出来なかったなあ。「X」がほとんど無視されちゃって、結局「MacOS」とドライバのサポートのページがぼろぼろ出てきて全然使い物にならなかったことが…「MacOS X」というフレーズで検索がちゃんとできればいいのでしょうけど、どこもそれがいまいちだったということで。

というわけで、固有名詞の命名をされる方には、一般的な単語、もしくは少ない数のアルファベットの組み合わせ、というようなものは絶対に避けていただきたい、とかように主張させていただきたいわけですが…あれ? そういえば「Lepton」などという名前を付けているのはいったい誰だっけ?

[前へ] [次へ]

[Home] [戻る]


mailto:lepton@amy.hi-ho.ne.jp