分类: IT职场
2012-01-11 22:48:26
一直以为算法是一门很重要的技术,奈何自己不是计算机专业的学生,而且一直没有时间去接触。
好不容易放寒假了,准备好好学习一下算法。前端时间在豆瓣网上看到一篇题为“出来拜上帝——Donald E.Knuth”的文章,看完之后,颇为激动,世界上竟有如此牛叉的大神,自己太嫩了。于是暗暗决心一定要好好把他的著作《计算机程序设计艺术》好好研读一番。
放假之前就去图书馆找这本书,找了半天,找到一本80年版的译本。。。。太圣经了把。。。封面上已经全部褪色了,基本上没人再借了。但是看书看得内容,封面只是一层皮,搞技术的也是看你的能力不看外貌的,我还是幸幸地把书借了过来。
回到家,从前言看是慢慢看。这本书给我的感觉是:书的内容做得很好,适于读者自学,但是难度很大,读得越多越觉着这个更适合数据的。网上也有人评论这本书:
你如果很功利,想“提高自己的编程技术”,那么止步吧。
如果你对数学没有梦幻般的热情和兴趣,那么止步吧。
这不是一本工具书,而是一本提高个人涵养的书。这本书70年代就已问世,毫无疑问很多东西在现在看来并不能用的上。所以如果你只想学“技术”,那么止步吧。
这本书适合作为对数学有极大的热情,对TCS有不错的经验的人提高涵养的书,值得休闲时刻细细钻研,值得你花个十年二十年认真去领悟。
顿时我的心沉了一半。
又看到一则评论:
总有人说因为这本书能提高编程水平,所以推荐看;还有人说经典就是经典,不得不看。个人觉得非常的反感。
当然他确实能给你一些tricky的灵感,但是
如果你不从数学的角度来读,不去理会他的数学思想,简直就是浪费时间。 TCS(Theoretic computer science)跟实际的计算机应用界差得很远,可以说是一个数学的世界。理论计算机科学也是从数学的一个小分支发展起来的。
在你连大O小o都搞不清楚, NP和NP-hard都搞不清楚,基本的插值多项式都不知道;或者连算法导论都没看,对数学分析没有兴趣,认为数学只是工具;写个算法不会用伪代码而一味的用C++或着JAVA来描述,那么可以说不必看这本书了,好高骛远。
这本书的内容不广,可以说窄,但是每一个点上都钻研的很有深度。还有对Mix的出现不是十分赞同,读者需要去学一遍他的汇编。不过那段用mix描述的电梯程序相当简洁,有兴趣的可以用高级语言改编一下玩玩。
这里是数学的世界,渗透着机器处理问题的新式思维,一本很多TCS著名学者都不敢轻言“看懂”的书。
不要人云亦云,因为“经典”而随随便便去阅读,要看这本书适合的读者。只有对数学和理论计算机有一颗虔诚安静的心,才能触及这本书的灵魂。
完了,还是先去把《算法导论》通读一遍的。
再分享一个算法公开课(麻省理工学院公开课:算法导论_全24集):