Що мав на увазі Кен Томпсон, коли він сказав: "Я б написав креатив із" е "."


59

1
Насправді він, швидше за все, не мав на увазі сказаного: він, мабуть, мав на увазі, що він буде заклинання creatз двома 'е' - адже один вже присутній. Звичайно, неявне повідомлення полягає в тому, що UNIX виявився таким, яким він мав бути, без істотних змін, що вимагають лише виправлення цього [одного] друку.
Дітмар Кюль

Відповіді:


56

Це системний виклик Unix, який створює файл: У рядку оболонки Unix введіть, man 2 creatщоб дізнатися більше.

Ці сторінки також доступні в Інтернеті сьогодні:


25
До речі, він нарешті це зробив: github.com/golang/go/commit/…
myaut

33

Він не тільки стосується man 2 creatсистемного виклику. Він також посилається на застарілі тенденції економити на кожному крихітному персонажі, де це можливо, іноді це лише заплутано, особливо зараз, коли введення та зберігання іншого символу рідко є перешкодою.


15
Я думаю, що в контексті питання він мав на увазі лише create (). Справа, яку він робив - нічого не стосується Unix, він би зробив інакше, за винятком цієї невеликої орфографічної помилки в системному виклику для створення файлу.

15
@jmucchiello, це не орфографічна помилка. Це навмисне (хоч і нестандартне) абревіатура. Це узгоджується з інтенсивним використанням скорочень , як fcntl, ls, mvі т.д., в загальному.
Метью Флашен

6
Погодьтеся, але я люблю ці abbrvtns, навіть коли у нас є ТБ для зберігання :)
tgkprog

2
Клавіші телетайпу важко натиснути. Було вигідно зберегти кілька листів. Першими, які можна було усунути, були голосні та зайві приголосні.
Еркін Альп Гюней

24

Він посилається на системний виклик UNIX для створення нових файлів. Лінкери на деяких машинах обмежувались ідентифікаторами не більше ніж 6 символів. Мабуть, Кену довелося працювати з таким лінкером, і тому системний виклик create був скорочений до create, щоб відповідати цьому обмеженню. Іронія полягає в тому, що створювати теж.

Дивіться також: Що означає 9-та заповідь?


15
Обмеження на 6 символів переведено на 5, оскільки компілятор (щоб уникнути зіткнення символів користувача з створеними компілятором) передбачив '_'імена змінних / функцій користувача перед користувачем, і обережно не використовував їх '_'при створенні символів.
vonbrand

3
@vonbrand: Це , здається, не пояснює , як unlinkабо umountможе існувати, проте, що я думаю , є сучасниками creat.
Dolda2000

@ Dolda2000 Ну, цілком можливо, у лінкера було це обмеження, тоді як компілятор цього не зробив. Так umountби зіткнутися з umounчи що umounxзавгодно, але ім'я буде дозволено. Але це чисті міркування :)
Луаан

23

Мені не вистачає шести років, щоб відповісти, але я вважаю, що всі відповіді, що існують, не вникають у цитату Томпсона.

Я б написав create з "e".

Кен Томпсон не скаржиться на ім’я функції, яка використовується для відкриття та, можливо, створення файлу. Швидше, він висловлює, що Unix було зроблено належним чином, тобто немає нічого серйозного, що мало би бути зроблено інакше.

Тонке справа, що Unix архітектура звуку, і реалізація в порядку. Потрібно було б на велосипеді знайти що-небудь для покращення в Unix. Таким чином, очевидна нитка про назву загальної системної виклику.


3
Правильно, він хоче сказати нам, що архітектуру UNIX можна вдосконалити в дуже крихітних аспектах. Але в основному UNIX зробив це правильно. До речі. creat- це системний виклик, а не команда CLI.
ikrabbe
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.