章節總覽#

用一句話來概括計算機的功能,就是傳輸、存儲和處理信息。要完成這些任務,就需要對信息本身進行編碼,對傳送目的地進行編碼,對存儲信息的物理單元進行編碼。因此,有效的編碼既是計算機科學的基礎,也是掌握這門學科的鑰匙。

本章的核心觀點包括:

  • 人類編碼與計算機編碼有本質差異:人類的編碼從具體到抽象,逐漸演變而來,主要考慮是否好記;計算機的編碼從一開始就是抽象的,有意識地被設計,以效率為首要考量。
  • 二進制編碼是計算思維的基石:將生活中的問題用二分編碼的思維重新思考,是從人的慣性思維轉向計算思維的關鍵。
  • 範圍和精度是一對矛盾:在編碼長度固定的情況下,信息的動態範圍和精度不可兼得,好的編碼是在兩者之間尋找平衡。
  • 利用信息的相關性可以壓縮編碼:非線性編碼和增量編碼利用前後數據的相關性,大幅縮短編碼長度。
  • 將最好的資源用在最重要的地方:哈夫曼編碼把較短的碼字分配給高頻信息,是信息壓縮的經典方法。
  • 稀疏矩陣的有效表示是工程實踐的基本功:用三元組取代二維數組存儲稀疏矩陣,可將存儲空間壓縮數十倍甚至億萬倍。

本章的關鍵啟示:在計算機行業裡,從業者有無經驗常常體現在動手開幹之前,能否站在計算機的角度審視一遍自己的想法。這是四級工程師和五級工程師的差異。