这本书我读了两遍,分別是两个印次。读第一遍是这书刚出版的时候买的第一版,读第二遍是因为最近认识了本书作者及编辑,我说以前看到本书的一些小错处,出版社就寄了第7次印刷本给我。在新年前花了一个星期把书尽量仔细地看了一遍,发现这印次仍有一些小问题及程序的bugs,已连同其他意见回馈给作者。
我其实不太喜欢这书的书名《编程之美──微软技术面试心得》,因为本书和面试直接有关的文章其实只有开头的8页,本书的内容其实是一些编程题目集锦。或许潜书名是《算法及数据结构的有趣题目集锦──附详细分析及解法》,不过我也明白这样的书名可能会影响销路。
说一个故事,四五年前我为面试出了一条笔试题目,恰巧和本书的题目2.1很相似,计算一个无号整数(我要求32-bit,书中的是8-bit)在二进制中1的个数。当时心想这个题目很简单吧,谁知有些应征者在这题上交白卷,更难找到一些能写到更优化答案的人了,并以为自己做出的解法已经是最优。不过,几年后,我才知道原来这个问题是有正式的学名,叫Hamming Weight (http://en.wikipedia.org/wiki/Hamming_weight),除了有更快的算法外,在SIMD 4.2 也有指令去计算。当时就为自己的无知感到惭愧。
本科学习和社会工作,在性质上是有很大的分别。在学习算法和资料结构时,通常都是一个一个单元去学习。但在工作上,一个程序员必须把知识融汇贯通,解决一些没有标准答案的问题。这需要程序员有解难能力、足够知识和熟练技能等等。这本书可以作为这方面的测试。
本书的题目中,除了1.1和1.10和操作系统相关,其他题目都是纯算法/数据结构的问题,不涉及其他计算机领域(例如程序语言/范式、计算机架构、软件工程、数据库等等),可以考虑加入纯算法和资料结构以外的有趣题目,使内容更贴近书名。对我而言,本书大部份的题目是有趣的,而且当中可以学到一些新知识,训练头脑,甚至引起兴趣去进一步研究。
本书除了适合学生去阅读,也适合喜欢编程的人。如果是喜欢编程的人,可能会觉得这本书就是一本有趣的IQ 题目书籍,会去用来挑战自己的能力。
本书也有些美中不足,列举如下:
- 阅读第一遍时,找到错误但找不到联系方法(如e-mail),这在新印次改善了。但可能因为某些原因,现时的网站并没有勘误表。
- 阅读第二遍时,仍然发现内文的错处和程序的bug。有些程序中变量名前后不一,较大的bug是4.7的程序有错误理解题目。
- 可能是因为多个作者的原因,文中有些程序的编程风格有点差异(例如单行的if/for/while 是否用{} ),建议尽量统一。另外我提了一些改善程序「美」的意见,不在此详述了。
- 内文有些数学算式混合了C/C++/C#的写法(如<=、!=),建议用正式的数学符号。如果数学算式能排版成LaTex 质素就更好。
- 一些问题或解答中用到的方法是经典的,建议最少提及它们的中英文名字,如能提供一些参考文献就更好。
虽然这本书已经是国内原创书籍的一个很好的例子,但我对这本书的期望很高,所以请作者们不要怪我只给4星,我希望它能更加进步。
希望作者们和编辑能继续改善这本书(续版或在网上提供资源),并且能够继续出版这种有创新意念的书籍。
to 楼上:那只是对你起了反作用。不过,以我不多的读书经验,我还是不会因为一个副标题就轻易否定一本书的。也不会因为某本书畅销,就认为一定不是好书。我会获取更多的信息来判断。不过,恭喜楼上,你最终是个理性的读者。期待你的书评和读书笔记。阅读愉快:)
正标题挺好。副标题太功利了。就是因为副标题的缘故,一直没入这本。直到前阵子看到一系列很不错的读书笔记。
估计编辑也莫有预料到,原本想促销的副标题恰好起了反作用。
我也是最近才去买的这本书,还是因为自己大学的班导生推荐的,他去过微软的研究院,和我特别推荐了这本书,这本书的价值真的很高。对于学习和工作,因为还在象牙塔里面的我不知道外面的世界,不过学习的过程中总是当兵作战的问题是有些让人无奈,想贯通却发现真的很难实现,不知是教育的悲剧,还是我们的悲剧
今晚又寫了關於另一題目《分层遍历二叉树》的博文 http://www.cnblogs.c
@猎户
多谢您的批评,我是这本书的编辑,可以详细讲一讲您发现的这些错误么?我的邮箱和GTalk都是lispython@gmail.com,希望和您多交流。
今晚写的blog《《编程之美: 求二叉树中节点的最大距离》的另一个解法》,把原来的代码减少为1/3左右,较易读及降低了空间复杂度 http://www.cnblogs.c
“我其实不太喜欢这书的书名《编程之美──微软技术面试心得》,因为本书和面试直接有关的文章其实只有开头的8页,本书的内容其实是一些编程题目集锦。或许潜书名是《算法及资料结构的有趣题目集锦──附详细分析及解法》,不过我也明白这样的书名可能会影响销路。 ”
呃,本人就是看到这个书名失去了兴趣。。。