Co miał na myśli Ken Thompson, gdy powiedział: „przeliterowałbym twór za pomocą„ e ”.”?

59

Ken Thompson, twórca Uniksa, został kiedyś zapytany, co by zrobił, gdyby miał to zrobić jeszcze raz. Powiedział: „przeliteruję kreację na„ e ”.”

O czym mówi Ken? Czy istnieje polecenie „creat”?

Kusalananda
źródło
1
Właściwie, to on najprawdopodobniej nie znaczy to, co powiedział: pewnie oznaczało, że on pisze creatz dwóch „E-tych - w końcu, jeden jest już obecny. Oczywiście, domyślnym komunikatem jest to, że UNIX okazał się taki, jak powinien być, bez żadnych istotnych zmian wymagających jedynie naprawienia tej [jednej] literówki.
Dietmar Kühl,

Odpowiedzi:

33

Nie tylko odnosi się do man 2 creatwywołania systemowego. Odwołuje się także do przestarzałych trendów oszczędzania na każdej małej postaci, tam gdzie to możliwe, czasami jest to mylące, szczególnie teraz, gdy pisanie i przechowywanie innej postaci rzadko stanowi przeszkodę.

P Shved
źródło
15
Myślę, że w kontekście pytania, które odnosiło się tylko do creat (). Chodziło mu o to, że w Uniksie nie było nic, co zrobiłby inaczej, z wyjątkiem tego małego błędu pisowni w wywołaniu systemowym, aby utworzyć plik.
15
@jmucchiello, to nie jest błąd ortograficzny. Jest to celowy (choć niestandardowy) skrót. To pasuje do intensywnego używania skrótów, takich jak fcntl, ls, mvitp, w ogóle.
Matthew Flaschen
6
Zgadzam się, ale uwielbiam te skróty nawet wtedy, gdy mamy TB do przechowywania :)
tgkprog
2
Klawisze telegazety są trudne do naciśnięcia. Korzystne było uratowanie kilku liter. Pierwszymi, które można było wyeliminować, były samogłoski i zbędne spółgłosek.
Erkin Alp Güney
24

Odwołuje się do wywołania systemowego UNIX w celu utworzenia nowych plików. Łączniki na niektórych komputerach były ograniczone do identyfikatorów o maksymalnie 6 znakach. Najwyraźniej Ken musiał pracować z takim łącznikiem i stąd tworzyć połączenia system został skrócony do creat dopasować to ograniczenie. Ironią jest to, że tworzenie też.

Zobacz także: Co oznacza 9. przykazanie?

ubiyubix
źródło
15
Limit 6 znaków przetłumaczony na 5, ponieważ kompilator (aby uniknąć kolizji symboli użytkownika z symbolami generowanymi przez kompilator) wstawił '_'wcześniej nazwy zmiennych / funkcji przed użytkownikami i uważał, aby nie używać go '_'podczas generowania symboli.
vonbrand
3
@vonbrand: Nie wydaje się to jednak wyjaśniać, w jaki sposób unlinklub umountmoże istnieć, ale moim zdaniem są współczesne creat.
Dolda2000,
@ Dolda2000 Cóż, całkiem możliwe, że linker miał to ograniczenie, podczas gdy kompilator nie. Więc umountbędzie kolidować z umounlub umounxczy cokolwiek innego, ale nazwa będzie dozwolone. Ale to czysta spekulacja :)
Luaan,
23

Spóźniłem się z odpowiedzią sześć lat, ale uważam, że wszystkie zachowane odpowiedzi pomijają sens cytatu Thompsona.

Pisałbym „twór” za pomocą „e”.

Ken Thompson nie lamentuje nad nazwą funkcji używanej do otwierania i tworzenia pliku. Wyraża raczej, że Unix został wykonany poprawnie, tzn. Nie ma nic ważniejszego, co należałoby zrobić inaczej.

Subtelny Chodzi o to, że Unix architektura jest dźwięk, a implementacje są w porządku. Trzeba będzie jeździć rowerem, aby znaleźć coś, co można poprawić w Uniksie. Tak więc oczywiste nitpick o nazwie wspólnego wywołania systemowego.

dotancohen
źródło
3
Racja, chce nam powiedzieć, że architekturę UNIX można ulepszyć w bardzo małych aspektach. Ale w zasadzie UNIX zrobił to dobrze. BTW. creatto wywołanie systemowe, a nie polecenie CLI.
ikrabbe