Head First 丛书得到读者的广泛赞誉,李松峰老师也有文章介绍:

《Head First C 中文版》是一本非常好的书,正如程亦超老师在译者序中说的:

本书最大的特点是每次在引出新概念前都会先提出一个问题,让读者知道怎样做(how)之前先知道为什么这么做(why),并在解决问题的过程中不断提出新问题,让读者去解决,从而加深理解;书中还设有很多 Q&A 环节,提出并回答了一些读者在学习过程中可能遇到的问题;作者还使用了大量拟人手法,例如让编译器化身公众人物在访谈节目中现身说法,抑或让静态库和动态库对簿公堂。谈笑风生之间,这些抽象的概念一个个活灵活现,跃然纸上。无论你是音乐发烧友、推理迷,还是填字游戏爱好者,都可以在这本书中找到吸引你的元素。

……

我在翻译的过程中力求真实传达作者的意图,无论是一个技术上的概念,还是一段幽默。为了减轻阅读压力,我还将书中部分代码中的字符串也译为中文,希望不是画蛇添足。

的确,程亦超老师的翻译非常给力,准确真实地传达了作者的意图。试举几例:

第4章 使用多个源文件:分而治之第 199 页中谈到 make 工具时:

199

这个“艺名”用得好,把 make 在不同操作系统中有不同的名称准确传神地表达出来了。

第3章 创建小工具:做一件事并把它做好第 117 页:

117

这是使用错误数据作输入时运行程序的场景,没有达到预想的目的。后面就顺理成章地推出了标准错误(stderr)。

第5章 结构、联合与位字段:创建自己的结构第 237 页:

237

这是一个修改结构中的某个字段的程序,也没有得到预期的结果。就此讲解了C 语言中参数是按值传递给函数的,由此引入了结构指针。

第10章 进程间通信:沟通的艺术第437页:

437

这个多进程程序没有产生预想中的数据,使用“透明的”解释"TMD"很巧妙,好象想要的数据是透明的,我们看不到。由此引入进程间通信的标准做法:重定向输入、输出,然后让进程相互等待。

第11章 网络与套接字:金窝,银窝,不如 127.0.0.1 的草窝第 476 页:

476

这里的客户端程序没有得到服务器程序的响应,把 TMD? 解释为“它没答?”非常贴切。下一个小节的标题就是“妈妈说要检查错误”,由此说明“一定要检查系统调用的错误”。

第12章 线程:平行世界第 511 页:

511

这里的多线程程序运行出现了错误,由此讲解了线程间同步。相关内容也可参见:《Head First C 中文版》审读笔记(三)。美中不足的是,这里的“甜蜜的”和第 237 页的重复了,最好能另外想一个解释。

译者序中提到:

为了减轻阅读压力,我还将书中部分代码中的字符串也译为中文,希望不是画蛇添足。

这当然不是画蛇添足,而是非常有必要的。但是还做得不够好,书中有些代码中的字符串已经译为中文了,但相应的程序运行结果的屏幕截图还是英文的,对不上号。而有个别程序运行结果的屏幕截图中输出的是中文,但书中的源程序中的字符串还是英文,也对不上号。这些我都已经在审读意见中提出了,希望本书正式出版时能够修正这些缺点。此外,还有不少程序代码中的字符串也应该译为中文,但没有翻译。空军在审读时指出了不少这方面的问题。