C++0xの識別子はユニバーサルキャラクタ名と、その他の実装依存の文字が使える。したがって、Unicodeを識別子に使えるC++0xコンパイラは、規格違反ではない。
Unicodeが識別子に使えると、コードの表現力が圧倒的に増すだろう。たとえば、
typedef int 整数 ; 整数 合計 = 1 + 2 + 3 ;
もっと突き進めると、以下のようなコードも書けるであろう。
台形の面積 = ( 上底 + 下底 ) * 高さ / 2 ; 円の面積 = 半径 * 半径 * π ;
素晴らしい。とても分かりやすい。日本語は空白を必要としない文字なので、とても使いやすい。あるいは、Σとかλなどの、ギリシャ文字を数学的な関数の名前に使いたいという人は多いであろう。そのほかにも、世の中には将棋の駒なんていう文字もある。
興味深い文字もいくつかある。たとえば空白だ。Unicodeには空白文字がかなり沢山ある。
= + ;
この規格を真に受けて、Unicode識別子をサポートしたコンパイラが出ると面白いことになりそうだ。
問題は、あくまで実装依存なので、ポータブルではないことだ。それに、VBなどでは日本語の識別子も使えたと聞くが、あまり喜ばれてはいなかったと聞く。
white spaceワロスww
ReplyDelete