Out of Memory

本ブログは更新を停止しました。Aerieをよろしくお願いいたします。

目次

Blog 利用状況

ニュース

2009年3月31日
更新を停止しました。引き続きAerieを御愛顧くださいませ。
2009年2月3日
原則としてコメント受付を停止しました。コメントはAerieまでお願いいたします。
詳細は2月3日のエントリをご覧ください。
2008年7月1日
Microsoft MVP for Developer Tools - Visual C++ を再受賞しました。
2008年2月某日
MVPアワードがVisual C++に変更になりました。
2007年10月23日
blogタイトルを変更しました。
2007年7月1日
Microsoft MVP for Windows - SDKを受賞しました!
2007年6月20日
スキル「ニュース欄ハック」を覚えた!
2006年12月14日
記念すべき初エントリ
2006年12月3日
わんくま同盟に加盟しました。

カレンダー

中の人

αετο? / aetos / あえとす

シャノン? 誰それ。

顔写真

埼玉を馬鹿にする奴は俺が許さん。

基本的に知ったかぶり。興味を持った技術に手を出して、ちょっと齧りはするものの、それを応用して何か形にするまでは及ばずに飽きて放り出す人。

書庫

日記カテゴリ

忘れたころに再燃させる(日本語コードについて)

変数名とかに日本語を使うことについて、ちょっと違った切り口から。

日本語を使うことを容認して、中国語やアラビア語を使ってはならないというのは不公平であろう。
もちろん、敢えて日本で使う理由はないが、中国やアラブのプログラマは、当然使ってよい。
そうすると、変数名やメソッド名などの名前に使える文字列は、任意のUnicode文字列でなければならない。

Unicodeとなるとついて回るのが、合成文字の扱いである。
変数を定義するところでは合成済み文字(単一のUnicode文字)を使っていて、参照するところでは複数の文字が書いてあったらどうだろうか。
これは同じ変数名とみなすべきか否か。
もし同じ変数名としなければならないとしたら、合成文字を解釈するエンジンを処理系に内蔵しなければならない。
OSが持つエンジンを利用すると、処理系を走らせるOSによって、コンパイルできたりできなかったりするコードができてしまうからだ。
これは、OSでさえ完全な文字処理を実装できていないところ、処理系実装者に大きな負担となってのしかかる。

なお、この問題は、コメントと文字列定数にUnicode文字を使う場合には発生しない。
コメントは他の文字と照合する必要はないし、文字列比較の場合にはOSが提供するエンジンを使ってよいからである(その場合、コンパイルした後のプログラムが動くOSと動かないOSが出てくることになる)。
コンパイルと実行を常に同時に行うインタプリタ系言語処理系では、変数名のマッチングも実行時にやるのだから、OSの機構を使っても良いかもしれないが。

とは言うものの。
処理系実装者がどれだけ苦労しようが、使う側としては知ったこっちゃないのは確かである。
我々プログラマが、既存の処理系を使って日本語コードを書いたからといって、それが今から処理系製作者の負担としてフィードバックされるわけではない。
だからこれは、変数名等に日本語を使うべきか否かという問題に対するコメントではないし、英語を使えということでもない。この文脈で言えば、ローマ字は構わないのだから。
だが、これから登場する、あるいはバージョンアップする処理系に対して、任意のUnicode文字のサポートを要求すると、中の人は大変だろうなぁ、と思うだけだ。

投稿日時 : 2008年1月15日 11:24

Feedback

# re: 忘れたころに再燃させる(日本語コードについて) 2008/01/15 12:08 Mr.T

Mr.Tです、こんにちは。

アラビア語って、右から左に読むんじゃ
なかったでしたっけ?
変数名だけ逆読みってw

# re: 忘れたころに再燃させる(日本語コードについて) 2008/01/15 12:11 シャノン

> アラビア語って、右から左に読むんじゃ
> なかったでしたっけ?

そうそう。
そのあたりは国際化対応するときにも問題になりそうです。

# re: 忘れたころに再燃させる(日本語コードについて) 2008/01/15 13:24 凪瀬

右から左なんてまだ可愛いほうですよ。
日本人がもうちょっと自国文化を強く主張するなら、
テキストエディタには縦書き機能も備える必要が出るわけで。

> もし同じ変数名としなければならないとしたら、
> 合成文字を解釈するエンジンを処理系に内蔵しなければならない。

同じ変数名とはしないでしょうな。
似て非なる話に、全角アルファベットというのがありますね。
AとAは意味的には一緒なんだけど、歴史的事情から別の文字コードの
別の文字として扱われるわけですが、これを同じ変数としなければならないか?

もし、そのあたりを同一視したいのであれば、プログラム言語に
シソーラス検索のような機能を持たせる必要が出てくる。
これは、ロジックを明確に表現するというプログラミング言語の
要件からすれば、不要な機能といえるのではないでしょうか。
むしろ、こんな機能性を持たせると曖昧なプログラミング言語になってしまう。

# re: 忘れたころに再燃させる(日本語コードについて) 2008/01/15 13:46 シャノン

> AとAは意味的には一緒なんだけど、歴史的事情から別の文字コードの
> 別の文字として扱われるわけですが、これを同じ変数としなければならないか?

そのくらいなら構わないでしょうけど、やりはじめるとキリがないですからね。1 と 一 と 壱 とか。果ては one も、とか?
ただ、大文字と小文字を区別しない言語はありますね。
大文字と小文字を区別しない言語を肯定するならば、日本人としては、ひらがなとカタカナを区別しない言語をぜひ、とか言い出すと泥沼。

# re: 忘れたころに再燃させる(日本語コードについて) 2008/01/15 14:44 凪瀬

日本には半角カタカナという鬼っ子がいますしねぇ。
歴史的に存在しちゃってるから残っているけど消し去りたい物のひとつですな。

タイトル
名前
Url
コメント