文言文為什么短?
我是搞網(wǎng)絡(luò)的工人,略懂文字,從Unix視角談。
Unix/Linux程序很像文言文,列舉一些:
ls, pwd, sed, awk, ab, bc, cd, cc, cat, dd, df, ex, fg, ip
不是干這一行的基本不明白上面這些命令是干什么的。
再看一些文言詞:
汝 子 若 君 爾 彼 其 或 所 何 安
是不是很像。這里面有什么關(guān)聯(lián)?
存儲開銷
Unix早期磁盤磁帶昂貴,古代龜甲竹簡絲帛紙張昂貴,信息越短越好。
傳輸開銷
Unix早期直到1990年代,網(wǎng)絡(luò)帶寬小且昂貴,古代書信運(yùn)輸手段有限且昂貴,信息越短越好。
持久化開銷(寫開銷)
Unix早期鍵盤簡陋,分時(shí)使用終端,需快速輸入,古代識字寫字成本高,會擠兌農(nóng)時(shí),信息越短越好。
短信息實(shí)際是一種壓縮,雖有利于存儲,傳輸和持久化,但解壓縮成本也高,無論Unix命令還是文言文,都需要時(shí)間來記憶,會就會,不會就不會,Unix尚有manual,文言文就只能靠昂貴的教育了。
無論是Unix短名字,還是文言文,隨著時(shí)間的發(fā)展都成了一種文化,雖然我們現(xiàn)在依然會說ipt,但大多數(shù)人還是喜歡iptables這個(gè)名字,同理,我們也不會再滿嘴之乎者也。
時(shí)至當(dāng)代,存儲開銷,傳輸開銷,持久化開銷已不再是問題,Linux程序逐漸以system替換了sys,以network替換了net。
然而上述只是一條線,還有另一條線。
文言文對應(yīng)的有口語白話文,Unix程序?qū)?yīng)的有源代碼,或者叫編程語言寫的程序。
持久化存儲的信息需壓縮至簡,這是受到一些限制不得已而為之,但如果日常交流也這般,非但不會有收益,還會平添開銷,你先跟對方說個(gè)謎語,再自己解釋這個(gè)謎語,豈不是冗余?
因此在無需存儲,無需傳輸?shù)闹苯咏涣鲌鼍?,就是口語白話文了。
看一下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的縮寫,但看它的源碼卻無任何障礙,源碼不光是編譯成二進(jìn)制,更重要是它還是工人之間交流的媒介。如果你寫的源碼不能表意,交流成本就會變高,甚至不得不重寫。
與文言文相對的白話也是為了交流,它重點(diǎn)考慮的是對方聽懂。簡單講就是要直白。
直白的源代碼,直白的口語,最大的優(yōu)勢是它們可以最小成本地適應(yīng)變化。
編程語言不斷變化,不斷有新的編程語言問世,日常口語也根據(jù)地域,時(shí)間發(fā)生變化,直白的語言不需編解碼,不需壓縮解壓縮,因此應(yīng)對變化更靈活。
編程語言一直在演變,但二進(jìn)制卻沒變,我們的口語也一直在演變,但寫出來的文字卻很穩(wěn)定,這便是。
秦始皇書同文,并沒有要求語同言,不是因?yàn)樗霾坏?,而是他故意的?/p>
寫是一回事,說是另一回事,“寫”是為了跨時(shí)空交流的,必須考慮存儲,傳輸,持久化成本,“說”是為了當(dāng)下交流的,是否直白幾乎是唯一的考量。
審核編輯:劉清
-
UNIX
+關(guān)注
關(guān)注
0文章
296瀏覽量
41614 -
編程語言
+關(guān)注
關(guān)注
10文章
1951瀏覽量
35023
原文標(biāo)題:從Unix看文言文為什么短
文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論