2009年10月30日星期五

读书:风云《游戏之旅-我的编程感悟》

对于一本技术图书的好坏我有两个最简单的评断标准,一是是否能吸引人,这本书就像一个好游戏一样让人沈浸其中,不能自拔,上个一个周末分“两口气”把它仔细读完了。第二个标准就是我是否做很多笔记,在读这本书的过程中我在我的Google docs做了非常多的笔记。以我的标准来说这本书绝对是五星级的好书。虽然我不是游戏程序员,但是我也得到了非常多的收获,我不仅从风云的亲切自然的文笔中了解他的一些成长经历,而且还“似乎”进入了一个陌生但是令人兴奋的游戏设计领域。通过阅读这本书还有一个收获,就是进行了一些关于游戏开发的方法,游戏引擎,游戏引擎中的优化等等知识的“扫盲”。
s2198972 “第二章算法,程序的灵魂”是我最喜欢的章节。如何进行算法层面的优化,本书也谈到了几点,看完深有体会,以下是部分书摘。

1 数学方法的改进

2 预运算来节省时间(空间换时间来避免重复运算)或是重复运算来节省时间。

3. 简化算法求得近似解来取代精确解(或最优解)

4. 改进数据组织方式,用更少的操作处理更多的数据,甚至避免冗余数据的处理

我也非常喜欢“第九章C和C++”和“第十章 调试”,强烈推荐仔细阅读。我们使用C和C++,但是有没有在不同的层面去*思考*一下它们而不是仅仅使用它们,书中关于C和C++的一些精彩诠释也令我得到很多启发,以下是部分书摘:

“C++和C一样,都是最贴近计算机固有模型的,C++的每一行代码,都和C一样有明确的目的,没有去干多余的事情。”

“C语言是对汇编语言的一种抽象,正如汇编语言是对机器底层指令的一个最小幅度的抽象一样,是为了人类能更方便地控制机器。但是,人在使用C语言控制机器时,并没有比汇编语言有观念上的不同,也就是说,程序员依旧是按机器模型来思考问题。在面对问题时,问题的描述往往并不符合机器思考的模型,程序员的工作也就是在两者之间搭上一座桥梁,让问题的描述可以用机器的思维来解决。”

“C++则采用了另一套方法来减轻程序员解决问题的复杂度,那就是面向对象。它是一种通用的方法,面对问题,我们把问题中的事物都表示为对象,对象有自己的行为,对自己遇到的问题提出符合机器模型的解决方案,或把自己划分为更小的对象集合。这样,程序员就可以在对象的级别用对象本身的术语描述问题,而这些术语最终都会被直接对应到机器模型上。”

八卦一下,书中有一些关于一些编程语言的有趣观点:

“JAVA更像一个实验室研究出来,有着浓厚的学术气味,外观优美超过它本来应该具有的人们所期望的实用性。”

“而C#则是工程师的结晶,外加了许多商业味道,被微软强烈地推广。”

“脚本语言如Python会像C++这样的主体开发语言的一种有益的补充。”

风云来自实践的这本书,是我读过最有趣生动,亲切的本土技术图书,同时也是一本极好的教材。

在这本书中,我最有感触并最喜欢的一句话是“多年的编程经历让我明白了一个道理:绝大多数情况下,没有解决不了的问题,只有因为平时缺少练习而惧怕问题的复杂度,畏惧的心理让我们选择避让,采取并不那么好的方案去解决问题。”一句很平实的大实话。真正的“高手”之路,无论什么领域,其实就是多思考,多动手,知难而进吧。

没有评论: