《30天自制操作系统》中文版终于和国内读者见面了,作为本书的4位译者之一,我负责翻译了本书约三分之二的内容。这是我参与翻译的第一本译著,感到激动之余也颇为紧张,因为我知道译者的水平对于一本译著质量的重要性——好的翻译可以成就一部作品,蹩脚的翻译也可以毁掉一部作品——正如当初引来无数臭鸡蛋的第一版《乔布斯传》中译本一样。

这本书的标题一出,立刻引起了很多反响。一些读者表示,以前看过类似“21天学会C语言”之类的书,感到很坑爹,因此对这类形如“XX天”标题的书往往怀有戒心,认为这多半只是噱头,很不靠谱。说实话,我没有看过其他以XX天命名的书,不过我也大概能理解这些读者的感受。在我看来,这本书的标题并不仅仅是一个噱头。类比一下,“30天学会核物理”可能看起来很“假大空”,因为你没办法定义“学会”这个概念的边界。怎样算学会呢?每个读者会有各自不同的理解,因此往往有的人对结果表示满意,而另外一些人则正好相反。如果说“30天自制微型反应堆”又怎么样呢?虽然你可能还是觉得太难了,但至少这个标题能给你一个具体的目标,30天之后能做出一个反应堆来,不管它多么简陋,一定具备一个反应堆的关键性质。我认为这本书正是属于后者,不管这个操作系统多简单,它是一个真正意义上的操作系统——更何况它还真不那么简单。正如封面上所说的,这个系统虽然很小,但却能实现图形界面、多任务等高级功能,这些都是实实在在的,跟着作者的思路和脚步,保证人人都做得出来的——即便你只是抄抄代码。

这本书的定位是零基础的读者,作者甚至找了初中生和高中生志愿者来试读这本书,以保证这本书的语言尽可能通俗易懂,可想而知作者把这本书的阅读门槛设定得有多么低。书中的语言风格非常轻松幽默,作为译者,我很喜欢这样的风格,因为可以把很多好玩的口语或者网络用语代入进去,让大家看起来更有意思,翻译起来也惊喜连连。从技术角度来看,这本书并没有过多地解释技术细节,作者认为对某些细节先有一个大概的认识就行,然后通过实践再加深理解,编写操作系统这件事的最终目的还是为了有趣、好玩,技术细节讲得太多自然就不好玩了。因此,想从这本书系统学习计算机原理、汇编语言、C语言等知识是不现实的,但通过编写操作系统这个过程,你一定能够获得与系统学习这些知识完全不同的宝贵体验。

这本书的一大特色是“从失败中学习”,每一次我们为这个操作系统实现一些功能,一开始总是不顺利的,里面会有一些漏洞和缺陷,甚至根本不能工作。这些漏洞应该说都是作者刻意安排的(或者是作者以前开发OSASK系统时所亲身经历过的),作者花了很大篇幅来引导读者去寻找并发现这些漏洞,并从这些错误中学习如何想方设法让系统变得更加完善。我认为这种思路是非常有趣的,也是符合实际开发的过程的,一个东西怎么可能一下子就做得那么完美呢?用作者的意思来说,先体验了不完美的东西再努力去改进它,才能让你更有成就感呀!市面上的技术类书籍,大部分都没有这种“试错”的过程,主要是因为“试错”本身需要精心的安排,而且需要占用大量的篇幅。我认为这本书所采用的写作手法是非常难得的,也是我认为值得向大家推荐这本书的主要理由之一。

如果你是一位高手,或者在编写操作系统方面有所造诣的读者,你可能会觉得这本书的讲解并不是那么系统和有条理。的确,这本书并没有对每一个技术细节进行详细地讲解,就连汇编语言和C语言的语法也只是避重就轻地介绍,你甚至觉得这个操作系统在很多方面处理都很简陋(比如文件系统、内存管理、设备驱动等等),根本算不上一个实用的操作系统,甚至连作者自己都说:“这本书无论在哪个方面都只有半瓶醋。”不过我们必须注意到,作者是在带领大家从零开始编写一个操作系统,而并不是用一个现成的Linux等内核为基础来做,后者也许才是目前所谓自制(定制?)操作系统的主流方式,但是这样真的能让你了解系统底层的真正机制吗?我看未必,一个Linux内核已经帮你搞定大部分底层工作了,你大可以把内核看作一个黑箱,只要往上面连接各种模块就OK了。只有从零开始,才能真正了解系统底层是如何运作的,而这些知识,对于你以后在其他内核基础上制作操作系统来说,也一定是非常有帮助的。如果你看了这本书觉得很坑爹,千万别忘了看一看最后一章中一个叫做“这也能叫自制操作系统?太坑爹了!”的专栏,作者早就预料到了大家的各种吐槽,在终点等着你们呢!(笑)看了这个专栏,你就会明白作者在有限的篇幅中,是如何谋划布局和取舍内容的,真心不容易,赞一个。

可能大家从目录上面也发现了,这本书涉及到了“日文显示”的相关知识。在这个部分如何翻译的问题上,我和出版社讨论了很多次,由于操作系统的编写都是在底层动刀子,可以说是牵一发而动全身,我不想在这里破坏原书的结构,也不想擅自改动原来的代码,因此,在原汁原味保留原书文字的基础上,我补充了一些实现中文显示的相关内容,以体现日文显示和中文显示在实现上的异同。好在基本上只要替换字库和编码方式,就可以实现中文显示,甚至比日文实现起来还简单些(比如不用考虑不同的编码标准和半角片假名问题)。这部分补充的内容是我自己写的,但我在这方面也不是专家,不敢班门弄斧,补充的内容篇幅也并不多,如果有错误或者疏漏,也欢迎各位高手随时拍砖。

在这本书最后的编辑过程中,为了确认某些术语的译法,我还和作者川合秀实先生通过几封邮件(这说明作者在书里给大家留的那个邮箱地址是保证可用的哟!),川合先生是个很认真很友好的人,他不像Matz(松本行弘)那样在技术界鼎鼎有名,只能算是一个普通的技术者吧,因此能够写出这样一本好书,实在是非常难得的。最后也感谢其他3位译者,以及图灵公司的各位编辑的共同努力,使得这本书能够和中国的读者见面,希望大家都能从中获益。

周自恒 2012年8月 上海