对于程序员来说,最重要的素质,一是数学建模能力,二是细心。这本《编程之美》反复强调的其实也就是这两条,其中尤以第一条更为重要。毕竟细心是一种可以后天培养的素质;而数学建模能力即使可以培养,也要花费更多的精力与更长的时间才能收到一点效果——如果能收到效果的话。
所以说到底,所谓编程之美,不如说就是数学之美。而这本书里的所有题目与其说是在讲解一个问题该如何编程实现,不如说就是在讲解一个问题该用哪种数学模型解决。但此书的问题恰恰就在这里:写作者们对于如何寻找合适的数学模型语焉不详。一个问题抛出之后,没有一点分析与思考,或者只有很简单的一点思考,立刻便抛出了对应的数学模型,中间没有(或者是几乎没有)半点过渡、提示、分析,接下来则是进入了具体的编程实现。换句话说,本书的重点似乎在于如何实现一种算法,而非如何找出合适的算法。但恰恰是后者才是真正重要的东西。
所以我要说,对于真正立志于编程之道的人、真正需要培养数学建模能力的人来说,本书并没有太大的价值。需要本书的大约也就是本书序言中所说的,是那些想要知道“微软需要什么样的技术人才,重视什么样的能力,如何甄别人才”的人。换言之,你可以以此书衡量自己是否符合微软的标准,但你不要指望自己能够通过这本书成为微软需要的人。再换言之即是:微软只管用人,不管培养。
这一点我很厌恶。
------------------------------------------------
顺便对于那些有志于编程的同学,给一点我个人的推荐:
数据结构、计算方法、数学建模,这几个方面的能力一定要扎实。当然,数学建模之前需要掌握高等数学。
其余的东西只要保持基本限度的了解即可。只要你具备足够的理解力和相当的知识面,即使没有一定的深度也可以很快补上。况且你不知道自己将来会和哪个方面深入打交道。
语言方面,学Java或者.Net之前一定要先学C,这个没有讨价还价的余地。
另外说到数学建模,其实去找几本编的比较好的数学建模的大学教材,比看《编程之美》有用的多。甚至有些数学科普读物也比《编程之美》好,比如面向儿童的《少年科学》——我从小看的杂志,现在已经不看很久了,前几天在书展上看到,还挺让人怀念,不过这是题外话了——那上面经常会登一些很有趣数学游戏,又有详细的解释说明,对于培养数学建模能力很有用处。
再比如像由《科学美国人》同名专栏文章结集翻译出版的《数学游戏》(http://www.douban.com/subject/3178576/,有电子版),也比《编程之美》有趣的多了。
2008-09-22 21:52:08 weer
如果不理解底层的实现机制而只是在上层调用接口的话,很难做出优秀的架构/实现。了解底层可以使你在选择接口的时候知道为什么使用这一个而不使用另一个。
==================
在写c代码的时候还不是调用接口,只是名称不同而已。有谁会去把函数的源代码看一遍再用?
//
使用C不只是了解它的接口
C是最接近计算机系统结构的高级语言,
它跟汇编不在一个层次, 但是相对于其他高级语言, 是最接近的
2009-04-09 09:46:05 xiao_p
@丁丁虫
如果说用c了解底层,那你更应该学的是汇编。
操作系统也好,虚拟平台也罢,都是针对某个东西编程,有那麽大的区别吗?你能了解clr、jvm的API,你就了解不了win32的,linux的API了吗。。。
//
用C了解底层不是指API.
了解API是一回事, 了解C背后的计算机体系结构是另一回事
就好比了解clr/jvm的API是一回事, 了解clr/jvm的内在原理是另一回事
我是本书的责任编辑,非常感谢您对《编程之美》的关注,谢谢。同时我也希望可以与您分享一下出版此书的一些体会。比如,在做这本书的时候,我们多次探讨了出版本书的主要目的,其实是为了让更多的人感受算法的乐趣,让读者学会思考,学会探索,享受编程的乐趣。书出版之后我们收到了不少读者的反馈,有的说与朋友一起探讨书中的问题非常有趣,感觉回到中学那种以解题为乐趣的年代,也有的推荐大家对每一道题目都好好揣摩揣摩,必能受益良多。在互动网上您可以看到相关的评论:http://www.china-pub
如果您有更多的建议和意见,欢迎随时与我联系,我的邮箱是yangxg@broadview.com.cn,再次对您的支持表示感谢。