这是一本极其优秀切被严重低估的教材。
在看这本书之前,我看过算法导论和算法普林斯顿版,在读完这本书之后我也在看TAOCP当然还只看了一点点
但是直到看这本书,才让我有一种醍醐灌顶之感
而在此之前,我是完全不信任国内的教材的。和这个问题下面很多回答一样,把国内教材喷的一无是处。现在我觉得国内的书,也许很多的确垃圾,但是偶尔也是有好东西的。
国人尤其高级知识分子中普遍存在一种不自信。这种不自信体现在对于国内作者写的书籍不看内容直接否定,对国内出的科研成果不论内容直接贬低,对国外某某教授的有一句夸奖便大书特书,恨不得刻在墓碑上,我这里描述的甚至包括一些科学院的院士。
对一件事物的评判永远不是这个事物本身,而在论据中夹杂一大堆偏见傲慢。
单就入门教材,这本书对普通学生的友好程度是远高于算法导论的。算法导论太重了,尤其理论证明对于很多数学基础不好的人非常不友好。普林斯顿的算法跟严的书各有千秋,基本也都没有数学证明。都算对初学者比较友好。严的书门槛稍微高一点,普林斯顿算法因为当时是给美国的学生上,继承了美国人出书的特点,入门门槛较低,让很多基础差的人在一开始也能跟上,然后加深内容,提供大量参考文献和练习思考题。所以普林斯顿的书籍比严的书厚不少。而且为了给学生更直观的认识,加入了很多图片。算法示意图。而严的书,朴素简洁。能省则省,不愿意加一点额外的累赘。这就要求学生要有比较好的数学基础和想象力。这也是很多中国人写教材的风格。因为在中国人的文化骨子里喜欢那种惜字如金的风格,寥寥数笔便产生无数场景。
但是这种书往往对自学者的基础能力,自学能力提出了更高的要求。或者需要有经验的人把很薄的一本书讲厚,讲丰满。
而且还不喜欢加引用,让自学者想去查来源都不好查。
尤其理工科,很多时候更像笔记。一本小薄书就是这门课的重点,全书都是重点……
而且欧美人写书喜欢往书里面加奇闻趣事历史知识。而中国人写这方面,相对少。
这是两种体系,两种风格。
风格这种东西不可能十全十美,满足所有人的需求。你有什么样需求就选择适合自己的就可以了。没必要你不喜欢这种风格,就说它垃圾。没有足够的眼界和阅历学时,不能全面客观看待问题和差别,才是垃圾。
作为一个时代的产物,我觉得严的书是配的上优秀的。你说它有没有缺点,当然有。比如多加一些额外引用参考,比如算法思想介绍的不多但是实际上很重要,如果能以这种文笔写,读起来一定很美妙。作为一个时代的产物,必然有其局限性。再经典的东西都逃脱不了时代的,我们要做的认识到好的东西加以继承,认识到不好的,做好改进。一味地盲目否定,只会把好东西都丢光。综合来看,三七开吧!
我反对一味地贬低抹黑,至少在2022,对于很多人严的书还是值得看一看的。我看过国外超过100部计算机方面的专著,平心而论,我个人还是挺喜欢中国人的出书风格的,尤其在数据结构这种跟数学结合比紧密的方向。很精炼。
至少在过算法导论,TAOCP之前,看一看还是挺不错的。因为只有你看过前两本才知道原来不用证明算法只要理解怎么运行怎么回事,然后用伪代码结合自己的语言实现出来里面的算法是多么美妙的事情。直接,简洁明了,还很短。关键就是短。
TAOCP太多了,看得我痛不欲生,根本看不到尽头
读书一共两个过程,把厚的书读薄,把薄的书读厚。想读好两个过程必不可少,想读通,还要加上实践。
所有的外国书籍都很厚,你就得总结提炼,提炼完就是严这样。把薄书读厚,读厚了,就是国外大厚书的样子。因为有太多额外拓展但是不能全部记住。就必须抓重点。
反杠1.严书是伪代码,不能直接运行。
学习数据结构需要先学一门编程语言,为什么你先修课没学好然后骂数据结构书不行?算法导论也是伪代码,影响成为经典吗?TAOCP作者自己实现了一个语言,而且同一部书不同版本,语言都做修改了,影响成为经典吗?
自己不会写代码就骂算法书不行?ctrl cv习惯了,不会自己写代码了?
我看算法导论,TAOCP都是自己用c++实现算法,从来不直接抄,还用单元测试库,自己写测试用例
刚开始写
反杠2.大量使用m,n,p,q
算法导论也用了,TAOCP也用了。因为很多人尤其知识分子跪习惯了。你问我怎么知道,算法导论我基本都读过。
说到你们痛点了是不是不服?
下图算法导论第三章
” data-rawwidth=”1532″ data-rawheight=”2048″ data-size=”normal” data-default-watermark-src=”https://pica.zhimg.com/v2-d541465e375fab1cfad2475d9b7923e4_720w.jpg?source=3af55fa1″ class=”origin_image zh-lightbox-thumb lazy” width=”1532″ data-original=”https://pica.zhimg.com/v2-207b72accd22bffd8b38ed2594fc7dec_r.jpg?source=3af55fa1″ data-actualsrc=”https://pic2.zhimg.com/v2-207b72accd22bffd8b38ed2594fc7dec_720w.jpg?source=3af55fa1″>
” data-rawwidth=”1532″ data-rawheight=”2048″ data-size=”normal” data-default-watermark-src=”https://pica.zhimg.com/v2-d541465e375fab1cfad2475d9b7923e4_720w.jpg?source=3af55fa1″ class=”origin_image zh-lightbox-thumb lazy” width=”1532″ data-original=”https://pica.zhimg.com/v2-207b72accd22bffd8b38ed2594fc7dec_r.jpg?source=3af55fa1″ data-actualsrc=”https://pic2.zhimg.com/v2-207b72accd22bffd8b38ed2594fc7dec_720w.jpg?source=3af55fa1″>
” data-rawwidth=”1532″ data-rawheight=”2048″ data-size=”normal” data-default-watermark-src=”https://pic3.zhimg.com/v2-8cbf543095aa8fe99b78540a70b20a64_720w.jpg?source=3af55fa1″ class=”origin_image zh-lightbox-thumb lazy” width=”1532″ data-original=”https://pic1.zhimg.com/v2-587c4c041eaa07f0ef4de4535f11a535_r.jpg?source=3af55fa1″ data-actualsrc=”https://pic2.zhimg.com/v2-587c4c041eaa07f0ef4de4535f11a535_720w.jpg?source=3af55fa1″>
” data-rawwidth=”1532″ data-rawheight=”2048″ data-size=”normal” data-default-watermark-src=”https://pic3.zhimg.com/v2-8cbf543095aa8fe99b78540a70b20a64_720w.jpg?source=3af55fa1″ class=”origin_image zh-lightbox-thumb lazy” width=”1532″ data-original=”https://pic1.zhimg.com/v2-587c4c041eaa07f0ef4de4535f11a535_r.jpg?source=3af55fa1″ data-actualsrc=”https://pic2.zhimg.com/v2-587c4c041eaa07f0ef4de4535f11a535_720w.jpg?source=3af55fa1″>
x,y,z,p,q,T
TAOCP
第一卷1.2.1 拓展欧几里得算法,a,b,c,d,m,n
” data-rawwidth=”1532″ data-rawheight=”2048″ data-size=”normal” data-default-watermark-src=”https://pic1.zhimg.com/v2-f187391d213a74b4fef9c47e8af283ae_720w.jpg?source=3af55fa1″ class=”origin_image zh-lightbox-thumb lazy” width=”1532″ data-original=”https://pic1.zhimg.com/v2-8b4888bd8b513807c19df5de7306fd55_r.jpg?source=3af55fa1″ data-actualsrc=”https://pic4.zhimg.com/v2-8b4888bd8b513807c19df5de7306fd55_720w.jpg?source=3af55fa1″>
” data-rawwidth=”1532″ data-rawheight=”2048″ data-size=”normal” data-default-watermark-src=”https://pic1.zhimg.com/v2-f187391d213a74b4fef9c47e8af283ae_720w.jpg?source=3af55fa1″ class=”origin_image zh-lightbox-thumb lazy” width=”1532″ data-original=”https://pic1.zhimg.com/v2-8b4888bd8b513807c19df5de7306fd55_r.jpg?source=3af55fa1″ data-actualsrc=”https://pic4.zhimg.com/v2-8b4888bd8b513807c19df5de7306fd55_720w.jpg?source=3af55fa1″>
高纳德的书随处都是A,B,C
” data-rawwidth=”2048″ data-rawheight=”1532″ data-size=”normal” data-default-watermark-src=”https://pica.zhimg.com/v2-ee9c3ac845829c1492954fe2e9704bb1_720w.jpg?source=3af55fa1″ class=”origin_image zh-lightbox-thumb lazy” width=”2048″ data-original=”https://pic3.zhimg.com/v2-59ef6025981e0dbfbc0da30af9568af8_r.jpg?source=3af55fa1″ data-actualsrc=”https://pica.zhimg.com/v2-59ef6025981e0dbfbc0da30af9568af8_720w.jpg?source=3af55fa1″>
” data-rawwidth=”2048″ data-rawheight=”1532″ data-size=”normal” data-default-watermark-src=”https://pica.zhimg.com/v2-ee9c3ac845829c1492954fe2e9704bb1_720w.jpg?source=3af55fa1″ class=”origin_image zh-lightbox-thumb lazy” width=”2048″ data-original=”https://pic3.zhimg.com/v2-59ef6025981e0dbfbc0da30af9568af8_r.jpg?source=3af55fa1″ data-actualsrc=”https://pica.zhimg.com/v2-59ef6025981e0dbfbc0da30af9568af8_720w.jpg?source=3af55fa1″>
不照样被你们捧做天书。又有多少人看过么?
2018年以前,我基本不会写代码,但是从2015年我就天天逛知乎,退学前更是向往着成为程序员的美好生活,看着你们描述的国外的优秀。也跟着你们鄙视国内的一切。
后来我被迫工作,开始在工业届混开始学习写代码。2019年初,一个算法普林斯顿中的二分查找我写和调试了一个晚上。因为没照抄书里面现成的代码。
19.20.21.22一步一步走过来,从无到有
看的书多了,
见的人多了,
一次又一次被欺骗,被最爱的人骗,被最亲的人骗,被最好的然后背叛,被最崇拜的领导出卖
一次又一次被打压,
一次又一次被泼脏水,
也一次又一次看清一些人的嘴脸
如果我没有在程序员中很厚的积累,我就没办法有理有据地,喷这个问题下面的哪些回答,以及后面的人。毕竟算法导论在逼乎都算天书,TAOCP岂不是常人难以企及?因为我看过,我可以张手就来。
算法普林斯顿的确代码写的比较规范,但是这都哪年的书了,充分吸收借鉴前人经验,而且里面的示例代码java写的。
hi,man
you know
java就是用来写业务逻辑的,照着葫芦画瓢的确没啥问题。
但是你也应该知道,站在前人肩膀上,还不能青出于蓝而胜于蓝,那就太废物了。
就像c语言,里奇的书很经典,但是太老了,看c primer plus更友好。一样的道理。
里奇的c语言编程号称c语言圣经里面也是一堆a,b,c
还有go语言圣经
” data-rawwidth=”1080″ data-rawheight=”1562″ data-size=”normal” data-default-watermark-src=”https://pic1.zhimg.com/v2-c9f9e210ca8c392e1438b6acde635f03_720w.jpg?source=3af55fa1″ class=”origin_image zh-lightbox-thumb lazy” width=”1080″ data-original=”https://picx.zhimg.com/v2-12bd18544daafa62d286297718e43ce9_r.jpg?source=3af55fa1″ data-actualsrc=”https://picx.zhimg.com/v2-12bd18544daafa62d286297718e43ce9_720w.jpg?source=3af55fa1″>
” data-rawwidth=”1080″ data-rawheight=”1562″ data-size=”normal” data-default-watermark-src=”https://pic1.zhimg.com/v2-c9f9e210ca8c392e1438b6acde635f03_720w.jpg?source=3af55fa1″ class=”origin_image zh-lightbox-thumb lazy” width=”1080″ data-original=”https://picx.zhimg.com/v2-12bd18544daafa62d286297718e43ce9_r.jpg?source=3af55fa1″ data-actualsrc=”https://picx.zhimg.com/v2-12bd18544daafa62d286297718e43ce9_720w.jpg?source=3af55fa1″>
里面有很多a,b,c。这本书的一个作者就是跟里奇一起写的c程序设计语言,普林斯顿大学教授,awk中的k
是不是不服?
” data-rawwidth=”1532″ data-rawheight=”2048″ data-size=”normal” data-default-watermark-src=”https://pic2.zhimg.com/v2-70f06ad14bcc2d114a18650b047a863b_720w.jpg?source=3af55fa1″ class=”origin_image zh-lightbox-thumb lazy” width=”1532″ data-original=”https://pica.zhimg.com/v2-74a3b6f29d69f321202fc9670a507cab_r.jpg?source=3af55fa1″ data-actualsrc=”https://pica.zhimg.com/v2-74a3b6f29d69f321202fc9670a507cab_720w.jpg?source=3af55fa1″>
” data-rawwidth=”1532″ data-rawheight=”2048″ data-size=”normal” data-default-watermark-src=”https://pic2.zhimg.com/v2-70f06ad14bcc2d114a18650b047a863b_720w.jpg?source=3af55fa1″ class=”origin_image zh-lightbox-thumb lazy” width=”1532″ data-original=”https://pica.zhimg.com/v2-74a3b6f29d69f321202fc9670a507cab_r.jpg?source=3af55fa1″ data-actualsrc=”https://pica.zhimg.com/v2-74a3b6f29d69f321202fc9670a507cab_720w.jpg?source=3af55fa1″>
” data-rawwidth=”1532″ data-rawheight=”2048″ data-size=”normal” data-default-watermark-src=”https://pic4.zhimg.com/v2-0a0523cdf4c2436f78e4a8e1b9f41b6e_720w.jpg?source=3af55fa1″ class=”origin_image zh-lightbox-thumb lazy” width=”1532″ data-original=”https://pica.zhimg.com/v2-8ad80ca604dec458541a170dc095209a_r.jpg?source=3af55fa1″ data-actualsrc=”https://pic3.zhimg.com/v2-8ad80ca604dec458541a170dc095209a_720w.jpg?source=3af55fa1″>
” data-rawwidth=”1532″ data-rawheight=”2048″ data-size=”normal” data-default-watermark-src=”https://pic4.zhimg.com/v2-0a0523cdf4c2436f78e4a8e1b9f41b6e_720w.jpg?source=3af55fa1″ class=”origin_image zh-lightbox-thumb lazy” width=”1532″ data-original=”https://pica.zhimg.com/v2-8ad80ca604dec458541a170dc095209a_r.jpg?source=3af55fa1″ data-actualsrc=”https://pic3.zhimg.com/v2-8ad80ca604dec458541a170dc095209a_720w.jpg?source=3af55fa1″>
看到了吗?x,y,p,v,a,q
我在上面分别举了不止一位图灵奖,还有普林斯顿大学教授,mit教授的力作。
教你的是算法和数据结构,你计算机软件专业不学软件工程吗?企业没有代码规范吗?那东西看一看很快就可以改过来。有什么问题?至少我认为也就那么回事,如果你可以把算法学的清清楚楚,我不信你做不好变量命名?啥水平?