変数名とかに日本語を使うことについて、ちょっと違った切り口から。
日本語を使うことを容認して、中国語やアラビア語を使ってはならないというのは不公平であろう。
もちろん、敢えて日本で使う理由はないが、中国やアラブのプログラマは、当然使ってよい。
そうすると、変数名やメソッド名などの名前に使える文字列は、任意のUnicode文字列でなければならない。
Unicodeとなるとついて回るのが、合成文字の扱いである。
変数を定義するところでは合成済み文字(単一のUnicode文字)を使っていて、参照するところでは複数の文字が書いてあったらどうだろうか。
これは同じ変数名とみなすべきか否か。
もし同じ変数名としなければならないとしたら、合成文字を解釈するエンジンを処理系に内蔵しなければならない。
OSが持つエンジンを利用すると、処理系を走らせるOSによって、コンパイルできたりできなかったりするコードができてしまうからだ。
これは、OSでさえ完全な文字処理を実装できていないところ、処理系実装者に大きな負担となってのしかかる。
なお、この問題は、コメントと文字列定数にUnicode文字を使う場合には発生しない。
コメントは他の文字と照合する必要はないし、文字列比較の場合にはOSが提供するエンジンを使ってよいからである(その場合、コンパイルした後のプログラムが動くOSと動かないOSが出てくることになる)。
コンパイルと実行を常に同時に行うインタプリタ系言語処理系では、変数名のマッチングも実行時にやるのだから、OSの機構を使っても良いかもしれないが。
とは言うものの。
処理系実装者がどれだけ苦労しようが、使う側としては知ったこっちゃないのは確かである。
我々プログラマが、既存の処理系を使って日本語コードを書いたからといって、それが今から処理系製作者の負担としてフィードバックされるわけではない。
だからこれは、変数名等に日本語を使うべきか否かという問題に対するコメントではないし、英語を使えということでもない。この文脈で言えば、ローマ字は構わないのだから。
だが、これから登場する、あるいはバージョンアップする処理系に対して、任意のUnicode文字のサポートを要求すると、中の人は大変だろうなぁ、と思うだけだ。