肯·汤普森(Ken Thompson)说“我会用'e'拼写创作”的意思是什么?


59

1
其实,他很有可能并不意味着什么,他说:他可能是指他会拼creat2 “电子的-毕竟,一个已经存在。当然,隐含的消息是UNIX证明了它原本应该进行的方式,没有任何实质性的改变,只需要修复此[一个]错字即可。
DietmarKühl'17

Answers:



33

他不仅指man 2 creat系统调用。他还提到了在可能的情况下保存每个小人物的过时趋势,有时这只会造成混淆,尤其是在现在,当键入和存储另一个人物很少成为障碍时。


15
我认为在这个问题的背景下,他仅指的是creat()。他要说的是,除了创建文件的系统调用中有一个小的拼写错误外,他对Unix所做的一切与众不同。

15
@jmucchiello,这不是拼写错误。这是一个故意的(尽管是非标准的)缩写。它适合与大量使用类似的缩写fcntllsmv,等,在一般。
马修·弗拉申

6
同意,但是即使我们有要存储的结核病,我也喜欢这些abbrvtns :)
tgkprog

2
电传键很难按下。保存一些字母是有益的。首先可以消除的是元音和多余的辅音。
Erkin AlpGüney17年

24

它是指UNIX系统调用来创建新文件。某些机器上的链接器仅限于最多6个字符的标识符。显然,Ken必须使用这样的链接器,因此创建系统调用被缩短为可以满足此限制的创建。具有讽刺意味的是,创造也是如此。

另请参阅:第九诫是什么意思?


15
6个字符的限制转换为5,因为编译器(为了避免用户符号与编译器生成的符号冲突)'_'在用户变量/函数名称之前添加了a ,因此'_'在生成符号时请小心不要使用。
vonbrand

3
@vonbrand:不过,这似乎并不能解释其存在unlinkumount可能存在的原因,我认为creat
Dolda2000

@ Dolda2000好吧,链接器很可能有此限制,而编译器则没有。所以umount会发生冲突与umounumounx或什么,但名称将被允许。但这纯粹是猜测:)
罗安2015年

23

我迟到了六年,但我相信现有的答案都错过了汤普森的名言。

我会用'e'拼写creat。

肯·汤普森(Ken Thompson)没有为用于打开并可能创建文件的函数的名称感到遗憾。相反,他表示Unix正确完成了,即没有什么不应该以不同的方式完成的。

微妙的一点是,Unix的结构是合理的,而实现的罚款。人们将需要费力才能找到在Unix中需要改进的地方。因此,关于常见系统调用名称的显而易见的挑剔。


3
是的,他想告诉我们,可以在很小的方面改进UNIX体系结构。但是基本上UNIX做到了。顺便说一句。creat是系统调用,不是CLI命令。
ikrabbe
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.