Что имел в виду Кен Томпсон, когда сказал: «Я произнесу тварь с помощью« е »»?


59

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

Ответы:


56

Это системный вызов Unix, который создает файл: в командной строке Unix введите, man 2 creatчтобы узнать больше.

Страницы руководства также доступны онлайн в эти дни:


25
Кстати, он , наконец , сделал это: github.com/golang/go/commit/...
myaut

33

Не только он относится к man 2 creatсистемному вызову. Он также ссылается на устаревшие тенденции экономии на каждом крошечном персонаже, где это возможно, иногда это только сбивает с толку, особенно сейчас, когда ввод и хранение другого персонажа редко становится препятствием.


15
Я думаю, что в контексте вопроса он имел в виду только creat (). Смысл его в том, что в Unix не было ничего, что он сделал бы иначе, кроме этой маленькой орфографической ошибки в системном вызове для создания файла.

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

6
Согласитесь, но я люблю эти сокращения даже тогда, когда у нас есть туберкулез для хранения :)
tgkprog

2
Клавиши телетайпа трудно нажимать. Было выгодно сохранить несколько писем. Первыми, которые могли быть устранены, были гласные и избыточные согласные.
Erkin Alp Güney,

24

Это относится к системному вызову UNIX для создания новых файлов. Линкеры на некоторых машинах были ограничены идентификаторами не более 6 символов. Видимо, Кен должен был работать с таким агентом , и , следовательно, создать систему вызов был сокращен до созда , чтобы соответствовать этому ограничению. Ирония в том, что творение тоже делает.

Смотрите также: что означает 9-я заповедь?


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

3
@vonbrand: Это, кажется, не объясняет, как unlinkили umountмогло существовать, однако, что я думаю, современно creat.
Dolda2000

@ Dolda2000 Ну, вполне возможно, что компоновщик имел это ограничение, а компилятор - нет. Так umountчто столкнулся бы с umounили umounxили как угодно, но имя будет разрешено. Но это чистое предположение :)
Luaan

23

Я опоздал на шесть лет, чтобы ответить, но я полагаю, что дошедшие до нас ответы не соответствуют сути цитаты Томпсона.

Я заклинание сотворил бы с «е».

Кен Томпсон не оплакивает название функции, используемой для открытия и, возможно, создания файла. Скорее, он говорит, что Unix был сделан правильно, то есть нет ничего важного, что должно было быть сделано по-другому.

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


3
Да, он хочет сказать нам, что архитектура UNIX может быть улучшена в очень крошечных аспектах. Но в основном UNIX сделал это правильно. КСТАТИ. creatэто системный вызов, а не команда CLI.
Икраббе
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.