前言
相信各位读者之中,有很多人是从Windows开始接触计算机的,或是从Java、Python之类的高级编程语言开始接触编程的。Windows的图形化界面操作便捷,大大提高了计算机的易用性。使用高级编程语言,可以在不关注计算机内部操作的情况下轻松编写程序。显而易见,这是一个十分便利的时代。
然而,我们不能只看到令人欣喜的一面,享受时代的便利也要付出代价。事实上,越来越多的程序员有这样的烦恼——即便有了一定的编程能力,也无法在技术上进一步提高,或是没有足够的应用能力来编写原创程序。究其原因,是他们对于程序的底层工作原理缺乏足够的理解。
不能让自己的理解仅仅停留在“双击程序图标就可以运行程序”这种表面现象上,我们需要理解表面之下的底层原理,即“机器语言程序被加载到内存,然后由CPU进行解释和执行,从而完成对计算机系统的控制和数据运算等任务”。理解了程序的工作原理,就能真正提升技术水平,掌握应用能力。
本书针对想学习编程的人、想提升自身技术水平的初级程序员,以及所有的计算机用户,深入浅出地讲解了程序的工作原理。为了便于讲解,书中会提到很多计算机硬件,但本书的主题和重点依然是程序,也就是软件。
本书内容是《日经Software》连载专栏“程序是怎样跑起来的”的合集。本书自2001年10月推出第1版以来,受到了众多读者的欢迎,我们也收到了很多反馈,其中很多读者表示,通过阅读本书理解了CPU的寄存器和内存的工作原理,也理解了自己所编写的程序是如何工作的,对此我感到十分欣慰。不过也有一些编程经验较少的读者表示内容有点难。
因此,本书于2007年4月推出了第2版,增加了一些关于硬件的讲解,并将示例程序所使用的语言从之前的Visual Basic换成了更适合讲解硬件原理的C语言。此外,还在最后增加了附录介绍C语言的内容。觉得第1版内容有点难的读者,应该会对这样的调整感到满意吧。
在此次的第3版中,我重新对全文进行了修订,更新了其中出现的产品和开发工具,而且为了避免初学编程的读者感到困惑,在正文和注释中补充了大量的内容。此外,第3版还更新了第12章,介绍了使用Python进行机器学习的内容,并在本书末尾补充了Python的相关内容。我想,即便是读过第1版和第2版的读者,也一定会对这些内容感兴趣的。
了解本质非常重要,这句话对任何事物都是成立的。只有理解本质才能举一反三,才能够更容易地理解新技术。希望各位读者能够通过本书探究程序的底层原理,抓住程序的本质。
矢泽久雄
2021年4月