技術的な理由はありますか?これは初期のLinuxまたはUnixのアーティファクトですか?もしそうなら、それが持続する理由はありますか?
技術的な理由を考えることはできません-歴史的に、それは単なるASCIIです。どのように読み込まれ、次に入力されるかは、コーダーの手にかかっています。
unix-history-repo / usr / src / cmd / passwd.c
char *uname;
insist = 0;
if(argc < 2) {
if ((uname = getlogin()) == NULL) {
printf ("Usage: passwd user\n");
goto bex;
} else {
printf("Changing password for %s\n", uname);
}
} else {
uname = argv[1];
}
アーカイブのマニュアルページを閲覧するのにしばらく時間を費やしてきたので(たとえば: 1BSDはBill Joyの最初のBerkeley Software Distributionでした)、ユーザー名を指定するものは何も見ませんでした。それは存在しないと言うことではありませんが、私はそれを見ていません。
したがって、私たちは歴史的な人間の文脈に取り残されています。1980年に技術を始めたとき、ログインには常に本名を使用していました。通常、長さの制限がない限り、最初のイニシャルと最後のフルネーム。ログイン名がメールアドレスとして使用されたため、これは重要でした。当時、誰も匿名のメールを送信していませんでした。もちろん、いくつかの例外があったに違いありません、私はそれらを思い出しません。しかし、全体としては、これが事実であると信じています。
また、rfc5321#page-63によると、電子メールの「名前」が数字で始まることに制限はありません。gmailはすべての数値のユーザー名を作成します。(今すぐ入手、彼らは速くなっています)。
したがって、[0-9]で始まるユーザー名を拒否するコードがある場合、「名前として数字を使用する理由は何ですか?」繰り返しになりますが、数字で始まるユーザー名を拒否する歴史的なUNIXコードが存在する可能性が非常に高いと言わざるを得ません。まだ見ていません。初期のパスワードテーブルは手動で編集されたもので、90年代初頭であっても頻繁にそれを行ったことを確かに覚えています。
なぜそれが続くのかについては、stroustrup、C ++ 11FAQ、新しい標準ライブラリはいつ利用可能になるのでしょうか?
問題をより困難にするために、委員会が悪いことに同意したとしても、古い機能を削除することは実行不可能であることを覚えておいてください:経験は、ユーザーがすべての実装者に互換性スイッチ(またはデフォルトで)で廃止され禁止された機能を提供し続けることを強制することを示しています何十年もの間。