Czy istnieje techniczny powód? Czy jest to artefakt z początków Linuksa lub Uniksa, a jeśli tak, to czy istnieje powód, dla którego trwa?
Nie mogę wymyślić przyczyny technicznej - historycznie to tylko ASCII. Sposób wczytywania, a następnie wpisywania jest w rękach programisty.
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];
}
Ponieważ spędziłem trochę czasu na przeglądaniu archiwalnych stron man (na przykład: 1BSD było pierwszą dystrybucją oprogramowania Berkeley Software Billa Joya ), nie widziałem nic, co określałoby nazwy użytkowników. Nie oznacza to, że nie istnieje, ale go nie widziałem.
Pozostaje nam zatem historyczny kontekst ludzki. Kiedy zaczynałem w technice w 1980 roku, zawsze używaliśmy naszego prawdziwego nazwiska do logowania. Zwykle pierwsze pełne i ostatnie imię i nazwisko, chyba że istnieje pewien limit długości. Było to ważne, ponieważ nazwa logowania została użyta jako adres e-mail. Wtedy nikt nie wysłał anonimowego e-maila. Oczywiście muszą być wyjątki, nie pamiętam ich. Ogólnie jednak uważam, że tak jest.
I zgodnie z rfc5321 # page-63, nie ma żadnych ograniczeń, aby „nazwa” e-maila zaczynała się od cyfry. gmail utworzy wszystkie numeryczne nazwy użytkowników. (zdobądź to teraz, idą szybko).
Więc jeśli istnieje kod, który odrzuca nazwę użytkownika rozpoczynającą się od [0-9], to prawdopodobnie powstał później z pewnym programistą, który zastanawia się „dlaczego miałbyś mieć liczbę jako nazwę?”. Jeszcze raz muszę powiedzieć, że równie dobrze może istnieć historyczny kod uniksowy, który odrzuca nazwę użytkownika zaczynającą się od cyfry. Po prostu tego nie widziałem. Wczesne tabele haseł były ręcznie edytowane, z pewnością pamiętam, że często to robiłem, nawet na początku lat 90.
Jeśli chodzi o to, dlaczego się utrzymuje, zacytuję stroustrup, C ++ 11FAQ. Kiedy będą dostępne nowe standardowe biblioteki?
Aby utrudnić problem, pamiętaj, że wyeliminowanie starszych funkcji nie jest wykonalne, nawet jeśli komitet zgodzi się, że są one złe: doświadczenie pokazuje, że użytkownicy zmuszają każdego implementatora do udostępniania przestarzałych i zbanowanych funkcji pod przełącznikami zgodności (lub domyślnie) przez dekady.