为什么创建系统调用称为creat
?
另外,为什么要调用缓冲区大小BUFSIZ
而不是BUFSIZE
?
还有其他这样的例子吗?
相关:(摘自评论)
What did Ken Thompson mean when he said, “I'd spell create with an 'e'.”
答案 0 :(得分:24)
从LSP(第28页):
是的,此功能的名称缺少e。 Ken Thompson,创作者 曾经开玩笑说,这封丢失的信是他最大的遗憾 Unix的设计。
答案 1 :(得分:9)
回到pdp-11
的时间,有一个名为radix50
的编码,将三个字符(从有限集合)打包成一个16位字。这引入了6个字母的文件名限制,3个用于扩展名,6个字母用于标识符等。
尽管如此,它并没有解释creat
。
答案 2 :(得分:5)
你必须记住,在过去,记忆是非常有价值的。编译器通常具有非常短的最大变量名称长度。我在最大长度为3的系统上工作。许多早期的C编译器将变量名称限制为6个字符。
答案 3 :(得分:5)
我最喜欢unixoid系统上的短名称疯狂的例子是umount命令(请参阅unix.stackexchange.org上的“Why is 'umount' not spelled 'unmount'?”主题,再次解释为六个字母 - 限制)。通过将一个字母减去一个字母所节省的时间与阅读联机帮助页面和咨询信息所花费的时间进行比较,比较多年来成千上万的Unix用户,这将是非常有趣的。