個人的には使う気になりませんが,使えないなんてのはただの制約でしかないと思っていますから賛成です。
----------------
以下技術的な話です。
どんな文字を許すかという基準はUnicodeを参照して明確にすればよいでしょう。
Unicodeでは各文字に対して様々な属性 (property)を付与していますが,中でも一般カテゴリ値 (General Category Values)が数字,記号,空白などといった分類を提供しています。
これは大分類と小分類の2字からなっており,例えばLu (letter, uppercase; 大文字)やSm (symbol, math; 数学記号)という具合です。
http://www.unicode.org/Public/UNIDATA/UCD.htmlから入手できるUnicodeData.txtが一覧になっています。
これを具体的に使用したものとしてC#が挙げられます。
C# 3.0言語仕様(
http://msdn2.microsoft.com/en-us/vcsharp/Aa336809.aspxから入手可)の「2.4.2 Identifiers」をまとめると,次のようになっています。
- 1文字目はLu, Ll, Lt, Lm, Lo, Nlに属す文字と下線 (U+5F)
- 2文字目以降はそれに加えMn, Mc, Nd, Pc, Cfも使用可能
これを当てはめると次のようになります。
- 仮名漢字は全てLoに属するので使用可能
- =(全角, U+FF1D)はSmなので使用不可能
- 1(全角, U+FF11)はNdなので2文字目以降に使用可能(現在の半角数字と同じ扱い)
ほか特記すべきこととして,「2.3.3 White space」で空白文字にタブなどのほか,Zsに属す文字全てを指定していることがあります。
つまり全角空白が半角空白同様に使用可能なのです。
あとは改行がCR (U+0D), LF (U+0A), CR LFの並びのほか,NL (U+85), 行区切り (U+2028), 段落区切り (U+2029)となっているところも注目点でしょうか。
そもそもABってUnicode使った文字コードのソースをコンパイルできたけって気がしますけど。