给想读的人一些建议
这篇书评可能有关键情节透露
写作背景
作为一名WEB工程师,我并非计算机科班出身,但对“软件(机器码)如何控制机器”这一话题非常感兴趣。为了深入了解这个问题,我学习了汇编语言、C语言、计算机组成原理和数字电路基础,并使用Logisim设计了一个CPU。然而,我发现Logisim实现的CPU无法解决我对总线系统和输入输出系统的所有疑惑。尽管如此,我对CPU的理解已经有了很大的提升。
于是,我决定手动实现一个玩具CPU,并找到了这本书。整体来说,它为我提供了很多帮助。
适合读者
本书适合那些对教科书内容不满足的读者,如《计算机组成原理》等相关书籍的学习者。本书可以作为实践参考,帮助读者理解书本上抽象的概念,同时培养动手能力。此外,从事嵌入式开发的朋友也会从本书对处理器的一些介绍中受益。
对于那些对软件领域非常感兴趣且想深入了解硬件/软件协同工作的朋友,本书也是非常适合的。尽管涉及硬件,但不需要你有硬件基础。
需要具备的基础
作为软件领域的一员,我从软件工程师的角度来回答这个问题。
- 数字逻辑电路基础 该部分是可选的。如果你不打算成为硬件工程师,那么不需要掌握硬件部分的知识。如果有时间,可以看看逻辑门、组合逻辑电路、时序逻辑电路和真值表等内容。
- 计算机组成原理 该部分建议具备。了解这些原理有助于更好地指导实践。书中很多内容来源于《计算机组成原理》,没有这方面的知识,书中的内容可能难以理解。
- 汇编语言 该部分是必须的。可以是x86、MIPS、ARM、RISC-V等任意一种。
- 工具链 该部分是可选的。这些工具有很多教程,可以轻松掌握,如Linux基础、GCC工具链和虚拟机等。
书中内容
本书使用Verilog HDL代码实现了一个小型的CPU+总线+外部设备的物理计算机。认真实践书中的内容,可以让你对计算机的软硬件有一个清晰的认识。相比于其他书籍,如《计算机组成原理》、《CSAPP》、《计算机组成与设计:硬件/软件接口》,本书更具细节和实践性,最终产物是一个真实可运行的物理计算机。
书中的不足
- 代码可读性不佳,在命名方面有所欠缺。
我的感受
软件和硬件本质上是相似的,都是调用接口。软件依赖硬件,硬件依赖物理。
近年来,程序员就业形势严峻,尤其是前端和后端领域。很多培训机构开始转向嵌入式行业。然而,无论是前端、后端、人工智能还是嵌入式,都是计算机领域的一部分,都需要深入理解计算机如何工作。
如果你在一个子领域没有深入钻研,转到另一个领域也未必能找到出路。计算机领域的任何方向都有前途,只要你有坚定的目标和深入的探索。
计算机相关领域本质上是工程学、逻辑学、数学和算法的综合。如果选择对自己有利的领域并深耕下去,计算机领域的任何方向都有前途。以下几点尤为重要:
- 工程学 软件架构是最重要的。学会管理、维护和发展一个庞大的有机体是非常关键的。
- 数学 尤其在人工智能领域,数学是最重要的工具。
- 算法 掌握基础的数据结构与算法有助于提升程序性能。快速查找数据在大流量场景中尤为重要。
总之,无论是前端、后端、人工智能还是嵌入式,都是计算机控制的一部分。深耕某一领域才能更好地发挥计算机的潜力。