这本书我读了两遍,分別是两个印次。读第一遍是这书刚出版的时候买的第一版,读第二遍是因为最近认识了本书作者及编辑,我说以前看到本书的一些小错处,出版社就寄了第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星,我希望它能更加进步。
希望作者们和编辑能继续改善这本书(续版或在网上提供资源),并且能够继续出版这种有创新意念的书籍。
迟来的书评和感想──给喜爱编程的朋友
对“迟来的书评和感想──给喜爱编程的朋友”的回应
《编程之美》热门书评
-
迟来的书评和感想──给喜爱编程的朋友
181有用 3无用 Milo 2010-02-24
这本书我读了两遍,分別是两个印次。读第一遍是这书刚出版的时候买的第一版,读第二遍是因为最近认识了本书作者及编辑,我说以前看到本书的一些小错处,出版社就寄了第7次印刷本给我。在新年前花了一个星期把书尽量仔细地看了一遍,发现这印次仍有一些小问题及程序的bugs,已连同其他意见回馈给作者。 我其实不太喜欢...
-
我所了解的微软面试
81有用 0无用 蓬山远 2012-11-11
2014 05 22本文是一年半以前写的了。这一年半之间微软发生了很大的变化,我自己也发生了很大的变化,时过境迁,世殊事异。大家就看个乐子好了,不宜再当作经验去套用了。------------------------------------------------------------------...
-
数据结构和算法是程序的根本——为什么?!
49有用 0无用 bluedavy 2009-07-10
转自博客。应该是差不多两个月前收到了这本书,一直到最近才抽出时间来看了下,这本书的开篇的第一题现在基本已经成了经典中的经典了,相信很多人都因为这个控制CPU使用率的题从而买了这本书的,在我自己看过这本书后我同时相信买了这本书的人应该会觉得非常的值得,要写出合理实现需求、高性能以及大数据量的程序,数据...
-
一本未看完的书 一段未走完的旅途
21有用 3无用 Dear Al 2010-03-29
答应了Lisa写这篇书评 买这本书是大四的时候了 大学接近尾声 作为一名计算机软件方向的本科毕业生 我们学校竟未开过一门类似于算法导论之类的课程 哦 对了 是有一门类似的数据结构 它和Linux是我大学阶段最喜欢的专业课了 不过那些内容 唉 那时候很喜欢在CSDN上瞎晃 于是便迷恋上了高纳德 接受了...
-
享受用程序语言思维的乐趣
20有用 0无用 gaomiao 2009-07-17
闲暇时喜欢翻书,但也许是习惯了屏幕前飞快的阅读速度,如今看书已不像原先啃书那般细致。阅读时往往对引出道理的故事很感兴趣,而到了讲道理的细节,便一扫而过。然而最近在读的《编程之美》一书,却是无论如何也无法像读其他书籍那样浮光掠影般翻看,而是字斟句酌,生怕遗漏了半点细节。如果说在看《算法导论》这样的经典...