C'è un motivo tecnico per cui? È un artefatto dei primi tempi di Linux o Unix, e in tal caso esiste un motivo per cui persiste?
Non riesco a pensare a una ragione tecnica - storicamente, è solo ASCII. Il modo in cui viene letto e poi digitato è nelle mani del programmatore.
unix-storia-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];
}
Da quando ho trascorso un po 'di tempo a sfogliare le pagine man dell'archivio (ad esempio: 1BSD è stata la prima distribuzione software Berkeley di Bill Joy ), non ho visto nulla che specifica i nomi degli utenti. Questo non vuol dire che non esiste, ma non l'ho visto.
Quindi siamo rimasti con il contesto umano storico. Quando ho iniziato a lavorare nel settore tecnologico nel 1980, abbiamo sempre usato il nostro vero nome per gli accessi. Di solito il primo nome iniziale e il cognome completo a meno che non ci fosse un limite di lunghezza. Questo è stato importante poiché il tuo nome di accesso è stato utilizzato come indirizzo e-mail. Nessuno di allora ha inviato e-mail anonime. Ovviamente ci sono state delle eccezioni, non le ricordo. Nel complesso, tuttavia, credo che questo sia il caso.
E secondo rfc5321 # page-63, non ci sono restrizioni per avere un "nome" e-mail che inizi con un numero. gmail creerà tutti i nomi utente numerici. (prendilo ora, stanno andando veloce).
Quindi, se esiste un codice che rifiuta un nome utente che inizia con [0-9], probabilmente è nato dopo con un programmatore che pensa "perché dovresti avere un numero come nome?". Ancora una volta, devo dire che potrebbe benissimo esserci un codice unix storico che ha rifiutato un nome utente che inizia con un numero. Non l'ho visto. Le prime tabelle delle password sono state modificate a mano, certamente ricordo di averlo fatto spesso, anche agli inizi degli anni '90.
Per quanto riguarda il motivo per cui persiste, citerò stroustrup, C ++ 11FAQ, quando saranno disponibili le nuove librerie standard?
Per rendere il problema più difficile, ricorda che non è possibile eliminare le funzionalità più vecchie, anche se il comitato concorda sul fatto che sono cattive: l'esperienza mostra che gli utenti costringono ogni implementatore a continuare a fornire funzionalità obsolete e vietate sotto switch di compatibilità (o per impostazione predefinita) per decenni.