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