本物のC

附録:恣意性


恣意性(arbitrarity)とは要するに「丸暗記しなければならない」度合いの事です。

自然言語の例

代表的な例はモノの名前でしょう。

日本語(やまとことば)に於いて「みず」は英語の「water」、ラテン語の「aqua」と同じモノを指しますが、これらの言葉で指される〈水というモノ自体〉に「みず」とか「water」とか呼ばれる必然性は全くありません。必然性が無いからこそ色々と言語によって異なる呼び方をされているとも言えます。

〈熱い〉〈明るい〉といった性質についても同様に、恣意性の高いものにならざるを得ません。

一方で元から音であるモノや音に強く関係するモノは、その音を真似る事で恣意性の低い名前が付けられます。鳴き声から名付けられた鳥の「カッコウ」などはその好例でしょう。

またモノに言葉を割り当てる際、他の言葉の組み合わせを選ぶとその言葉自体の恣意性は低くなります。

例えば日本語では温度の高い水に「ゆ」という新たな言葉を与えていますが、英語の場合は既にある言葉(恣意的な語とモノの関係)を組み合わせる事で「hot water」という表現を生み出しています。言うなれば「恣意性の再利用」をしているのです。

逆に一見恣意的に見える言葉でも、それが他の言葉の組み合わせになっていると判れば新たにその言葉を覚える必要はなくなります。次の様な英単語はそうした恣意性の解体が可能な例です。

プログラミングに於ける名付け

言葉の組み合わせによって恣意性の削減が可能な訳ですが、削れば削るほど表現は冗長で単調になっていくので、自然言語の場合恣意性が低いほど良いという訳でもありません。

しかしプログラミングに於いては、自然言語の様にリアルタイムでのコミュニケーションをする訳ではないので、多少冗長になっても恣意性が低い名前を用いた方が利点が大きくなります。(特に、補完が効く開発環境では入力の手間を考える必要もありません。)

恣意性が低いほどコードを読むに当たっての労力が少なく済み、これも可読性を向上させる一つの手段となります。恣意性の高い名前が頻出するコードほど読む為にはそれらの名前の意味を新たに把握しなければならず、他人に無駄な負担を与える邪悪な存在と言えるでしょう。