为什么要使用像time
and这样难以理解的系统调用名称creat
而不是getCurrentTimeSecs
and createFile
or,也许更适合Unixget_current_time_secs
和create_file
.这让我想到了下一点:为什么有人想要cfsetospeed
不带驼峰大小写或至少下划线的东西以使其可读?当然,调用会包含更多字符,但我们都知道代码的可读性更重要,对吗?
答案1
这是由于当时的技术限制。 POSIX标准创建于20世纪80年代,参考了1970年诞生的UNIX。当时的一些C编译器将标识符限制在6或8个字符长,从而确定了变量和函数长度的标准名称。
相关问题:
答案2
dr_ 是对的,但还有另一个原因——可用性。过去,您没有像键盘一样舒适的打字工具。如果你幸运的话,你会拥有类似于老式打字机的东西。如果你不幸运,你必须处理需要实际体力工作才能操作的系统(例如,需要很大的力气才能按下“键”),或者你手动在卡片上打孔。
这意味着即使在 6-8 个字符的限制内,您也试图使命令尽可能短。这就是为什么你有ls
代替list
和creat
代替create
。那个时代的代码充满了诸如a
、x
和i
- 当然x2
还有朋友之类的变量。打字是一项繁重的工作 - 今天,您打字所消耗的精力listIndex
比以前“打字”的消耗要少i
- 而且速度也不再那么慢(特别是使用自动完成等附加技术)。
真正的问题是 - 为什么这么多 Unix 习惯用法仍然存在,尽管它们不再受欢迎?
答案3
除了其他答案之外,我想指出,Unix 的开发是对 Multics、CTSS 和其他当代操作系统的反应,这些操作系统的命名约定明显更加冗长。您可以在以下位置体验这些操作系统:http://www.multicians.org/devdoc.html。例如,http://www.multicians.org/mspm-bx-1-00.html给出change_name
重命名文件的命令;比较Unix mv
。
此外,系统调用名称非常短的主要原因坚持是向后兼容。您会注意到,较新的 API 往往更加明确;例如,gettimeofday
而不clock_gettime
只是time
.
(即使在今天,使用whateverIndex
而不是i
for 循环索引也会导致自动代码审查失败我的书 ;-)
答案4
Dennis Ritchie 对 C 设定了一个限制,即它不会依赖 Fortran 不需要的任何链接器功能。因此,外部名称有 6 个字符的限制。