文言文為什么短?
我是搞網絡的工人,略懂文字,從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瀏覽量
41416 -
編程語言
+關注
關注
10文章
1938瀏覽量
34598
原文標題:從Unix看文言文為什么短
文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論