从Unix看文言文为什么短

文言文为什么短?

我是搞网络的工人,略懂文字,从Unix视角谈。

Unix/Linux程序很像文言文,列举一些:

ls, pwd, sed, awk, ab, bc, cd, cc, cat, dd, df, ex, fg, ip

不是干这一行的基本不明白上面这些命令是干什么的。

再看一些文言词:

汝 子 若 君 尔 彼 其 或 所 何 安

是不是很像。这里面有什么关联?

  • 存储开销
    Unix早期磁盘磁带昂贵,古代龟甲竹简丝帛纸张昂贵,信息越短越好。

  • 传输开销
    Unix早期直到1990年代,网络带宽小且昂贵,古代书信运输手段有限且昂贵,信息越短越好。

  • 持久化开销(写开销)
    Unix早期键盘简陋,分时使用终端,需快速输入,古代识字写字成本高,会挤兑农时,信息越短越好。

短信息实际是一种压缩,虽有利于存储,传输和持久化,但解压缩成本也高,无论Unix命令还是文言文,都需要时间来记忆,会就会,不会就不会,Unix尚有manual,文言文就只能靠昂贵的教育了。

无论是Unix短名字,还是文言文,随着时间的发展都成了一种文化,虽然我们现在依然会说ipt,但大多数人还是喜欢iptables这个名字,同理,我们也不会再满嘴之乎者也。

时至当代,存储开销,传输开销,持久化开销已不再是问题,Linux程序逐渐以system替换了sys,以network替换了net。

然而上述只是一条线,还有另一条线。

文言文对应的有口语白话文,Unix程序对应的有源代码,或者叫编程语言写的程序。

持久化存储的信息需压缩至简,这是受到一些限制不得已而为之,但如果日常交流也这般,非但不会有收益,还会平添开销,你先跟对方说个谜语,再自己解释这个谜语,岂不是冗余?

因此在无需存储,无需传输的直接交流场景,就是口语白话文了。

看一下sed源码中的一处定义:

/* Sed operates a line at a time. */
struct line
{
  char *text;                   /* Pointer to line allocated by malloc. */
  int length;                   /* Length of text. */
  int alloc;                    /* Allocated space for text. */
};

虽然很难理解sed是stream editor的缩写,但看它的源码却无任何障碍,源码不光是编译成二进制,更重要是它还是工人之间交流的媒介。如果你写的源码不能表意,交流成本就会变高,甚至不得不重写。

与文言文相对的白话也是为了交流,它重点考虑的是对方听懂。简单讲就是要直白。

直白的源代码,直白的口语,最大的优势是它们可以最小成本地适应变化。

编程语言不断变化,不断有新的编程语言问世,日常口语也根据地域,时间发生变化,直白的语言不需编解码,不需压缩解压缩,因此应对变化更灵活。

编程语言一直在演变,但二进制却没变,我们的口语也一直在演变,但写出来的文字却很稳定,这便是。

秦始皇书同文,并没有要求语同言,不是因为他做不到,而是他故意的。

写是一回事,说是另一回事,“写”是为了跨时空交流的,必须考虑存储,传输,持久化成本,“说”是为了当下交流的,是否直白几乎是唯一的考量。

浙江温州皮鞋湿,下雨进水不会胖。

你可能感兴趣的:(unix,linux,服务器)