我把 CS 能力分成以下部分

  1. 构建代码的思路(《SICP》),以及写项目的风格(《重构》,《代码大全》等)。这是抽象层,与语言,api 无关。最值得学的。

    但是很多国内的学校不会教。

  2. 实际知识层。硬件方向比如 CSAPP, 计网,软的比如《算法 4》等,与语言无关,与 api 有关。(比如系统 io)

    这个可以靠看 api 手册学习,也比较重要,但是国内教得并不好。

  3. 代码实现层,比如 《cpp primer》,《流畅的 python》。

    可以说是最不重要的一层,因为语言会更迭,库也会更迭,但学校教得最勤快,考试也会考,比如 printf 的 n 种格式化参数。

  4. 最容易被忽略的一层:与现实的交互。工具的使用者是人,是市场。

    宋人有善为不龟手之药者,世世以洴澼絖为事。客闻之,请买其方百金。聚族而谋曰:“我世世为洴澼絖,不过数金;今一朝而鬻技百金,请与之。” 客得之,以说吴王。越有难 ,吴王使之将。冬与越人水战,大败越人,裂地而封之。能不龟手一也,或以封,或不免于洴澼絖,则所用之异也。

    《。。。》目前还在看相应的书。