close

作者 | dog250
出品 | CSDN(ID:CSDNnews)

文言文為什麼短?

我是搞網絡的工人,略懂文字,從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的縮寫,但看它的源碼卻無任何障礙,源碼不光是編譯成二進制,更重要是它還是工人之間交流的媒介。如果你寫的源碼不能表意,交流成本就會變高,甚至不得不重寫。

與文言文相對的白話也是為了交流,它重點考慮的是對方聽懂。簡單講就是要直白。

直白的源代碼,直白的口語,最大的優勢是它們可以最小成本地適應變化。

編程語言不斷變化,不斷有新的編程語言問世,日常口語也根據地域,時間發生變化,直白的語言不需編解碼,不需壓縮解壓縮,因此應對變化更靈活。

編程語言一直在演變,但二進制卻沒變,我們的口語也一直在演變,但寫出來的文字卻很穩定,這便是。

秦始皇書同文,並沒有要求語同言,不是因為他做不到,而是他故意的。

寫是一回事,說是另一回事,「寫」是為了跨時空交流的,必須考慮存儲,傳輸,持久化成本,「說」是為了當下交流的,是否直白幾乎是唯一的考量。

浙江溫州皮鞋濕,下雨進水不會胖。

END


《新程序員001-004》全面上市,對話世界級大師,報道中國IT行業創新創造


— 推薦閱讀 —
☞拼多多、京東、B站等80餘家公司被美國SEC列入「預摘牌」名單;騰訊Q幣充值大面積取消97折優惠;馬斯克抨擊蘋果抽成|極客頭條
☞「請解釋一下Twitter的前10行源代碼」
☞超越Safari,Edge成為全球第二大受歡迎的桌面瀏覽器

—點這裡↓↓↓記得關註標星哦~—


感謝你的閱讀、點讚、在看、留言

CSDN 5月寵粉季,點我參與抽獎!!!


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()