標籤:

從過去找原因

新技術面世時,處於特定社會環境中,或多或少會有限制條件。假若完全沒有限制條件,其他人早已想到做到,就不是新的了。為繞開某限制,有時會採用一些迂迴做法。當新技術普及開來,那些迂迴做法也就成為事實上的標準。慢慢地,當時的限制條件已經不存在了,再來看那種迂迴做法,就變得很奇怪了。

甚至僅僅是最初那批人的喜好,也會導致今天看來奇怪的做法。有多種可能時,結合當時環境和限制,往往可以排除大部分可能性。有時只有唯一可能性,有時剩下幾種沒什麼優劣之分的可能性,這樣就憑個人喜好挑選一種。某人可能喜歡扔硬幣,就扔硬幣來決定。幸運被挑中的做法就成為標準,延續到今。

因而,從過去找原因就變得很有必要。回顧過去,翻查當時的環境、限制,甚至當初那批人的性格和喜好,今天看來難以解釋的事情,會變得很自然而合理。

試舉兩個例子:

ADM-3A 終端機

在 Unix 風格的操作系統裡面,包括 Linux, macOS,當前用戶的主目錄被稱呼為 Home 目錄。這個 Home 目錄會用波浪符號~來表示。

第一版的 Unix 系統是在 1971 年出現的,1972 年重新用 C 語言編寫 Unix。當時流行 Lear-Siegler ADM-3A 終端機,看看它的鍵盤布局。

右上角的 Home 和 ~ 是放在一起的。

ADM-3A 鍵盤布局也解釋了為什麼 vi 中使用 hjkl 來表示方向鍵。當年 Bill Joy 就是在 ADM-3A 終端機中敲出了 vi。vi 常用的 Esc 鍵在 ADM-3A 處於今天 Tab 的位置,按起來也算順手,不像今天這樣處於反人類的左上角。

刪除鍵編碼 127

ASCII 編碼是有規律的,並非隨意亂排。計算機是二進位編碼,我們將每 32 個字元作為一個組。組 0,編碼從 0 到 31 都是控制字元,組 1、2、3,編碼從 31 到 126 都是可顯示字元。而 127 代表刪除鍵。

為什麼刪除鍵作為控制字元,要編碼為 127,而不放在組 0 呢?

刪除鍵編碼為 127,可追溯到打孔機。打孔機的紙帶中,對應位為 0 就不打孔,對應位為 1 就打孔。一卷全新空紙帶上完全沒有孔,自然表示全 0,也就對應於 ASCII 的控制字元 Null。那在打孔機上打錯字元時怎麼辦好呢?紙帶中不能將已打的孔填上,於是當打錯字乾脆將其全部打孔,表示這一個字元被省略或者刪除。全部打孔就是二進位的 7 個 1,對應十進位編碼 127。於是刪除鍵編碼為 127。

有關 ASCII 更詳細內容,請看為什麼ASCII被擺放成現在這個樣子?

其它補充

  • CD為什麼採用44.1kHz採樣頻率

另一種解釋是 441000 是個特別的數字,是最小几個素數的平方相乘, 441000 = (2 * 2) * (3 * 3) * (5 * 5) * (7 * 7),這些素數因子可能有助於系統實現時的頻率合成。

  • Unix 時間戳,1970年1月1日

另外有關時間戳和Bill Gates 的一個有趣的故事,可以看這裡我的第一次 BillG 評審。阮一峰翻譯的《Joel談軟體》第一章也是故事。

  • 相關概念,路徑依賴理論

推薦閱讀:

Matplotlib設計的基本邏輯
編程中所講的「思維深度」的本質是什麼?
編程-前端jsp頁面開發
GacUI 動畫系統 (1)

TAG:編程 |