文言文为什么短?
我是搞网络的工人,略懂文字,从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
+关注
关注
0文章
296浏览量
41390 -
编程语言
+关注
关注
10文章
1928浏览量
34536
原文标题:从Unix看文言文为什么短
文章出处:【微信号:LinuxDev,微信公众号:Linux阅码场】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论