文言文為什麼短?
我是搞網絡的工人,略懂文字,從Unix視角談。
Unix/Linux程序很像文言文,列舉一些:
不是幹這一行的基本不明白上面這些命令是幹什麼的。
再看一些文言詞:
是不是很像。這裡面有什麼關聯?
存儲開銷
Unix早期磁盤磁帶昂貴,古代龜甲竹簡絲帛紙張昂貴,信息越短越好。
傳輸開銷
Unix早期直到1990年代,網絡帶寬小且昂貴,古代書信運輸手段有限且昂貴,信息越短越好。
持久化開銷(寫開銷)
Unix早期鍵盤簡陋,分時使用終端,需快速輸入,古代識字寫字成本高,會擠兌農時,信息越短越好。
短信息實際是一種壓縮,雖有利於存儲,傳輸和持久化,但解壓縮成本也高,無論Unix命令還是文言文,都需要時間來記憶,會就會,不會就不會,Unix尚有manual,文言文就只能靠昂貴的教育了。
無論是Unix短名字,還是文言文,隨着時間的發展都成了一種文化,雖然我們現在依然會說ipt,但大多數人還是喜歡iptables這個名字,同理,我們也不會再滿嘴之乎者也。
時至當代,存儲開銷,傳輸開銷,持久化開銷已不再是問題,Linux程序逐漸以system替換了sys,以network替換了net。
然而上述只是一條線,還有另一條線。
文言文對應的有口語白話文,Unix程序對應的有源代碼,或者叫編程語言寫的程序。
持久化存儲的信息需壓縮至簡,這是受到一些限制不得已而為之,但如果日常交流也這般,非但不會有收益,還會平添開銷,你先跟對方說個謎語,再自己解釋這個謎語,豈不是冗餘?
因此在無需存儲,無需傳輸的直接交流場景,就是口語白話文了。
看一下sed源碼中的一處定義:
雖然很難理解sed是stream editor的縮寫,但看它的源碼卻無任何障礙,源碼不光是編譯成二進制,更重要是它還是工人之間交流的媒介。如果你寫的源碼不能表意,交流成本就會變高,甚至不得不重寫。
與文言文相對的白話也是為了交流,它重點考慮的是對方聽懂。簡單講就是要直白。
直白的源代碼,直白的口語,最大的優勢是它們可以最小成本地適應變化。
編程語言不斷變化,不斷有新的編程語言問世,日常口語也根據地域,時間發生變化,直白的語言不需編解碼,不需壓縮解壓縮,因此應對變化更靈活。
編程語言一直在演變,但二進制卻沒變,我們的口語也一直在演變,但寫出來的文字卻很穩定,這便是。
秦始皇書同文,並沒有要求語同言,不是因為他做不到,而是他故意的。
寫是一回事,說是另一回事,「寫」是為了跨時空交流的,必須考慮存儲,傳輸,持久化成本,「說」是為了當下交流的,是否直白幾乎是唯一的考量。
浙江溫州皮鞋濕,下雨進水不會胖。

END
《新程序員001-004》全面上市,對話世界級大師,報道中國IT行業創新創造
—點這裡↓↓↓記得關註標星哦~—
感謝你的閱讀、點讚、在看、留言
CSDN 5月寵粉季,點我參與抽獎!!!