豆瓣
扫码直接下载
感觉喜欢这本书的人不要浪费太多的时间在他身上,有那个时间可以用两本轻量级的书来代替,数据结构讲的较多的《数据结构与算法分析》C语言描述和算法讲的较多的《算法导论》
建议你在看完《数据结构与算法分析》C语言描述和《算法导论》之后再来看TAOCP,看是否还有很多新的收获,你就该明白这种方式是否落伍,也该明白它们不是同一层次的书(至少是从深度而言)
说他落伍,有可能是你从程序设计语言的角度来考虑了。如果看他的分析和讲解会觉得真正的严谨和美观。如果可以从思维方式来理解这套书的话,应该更好一些,但这套书的确不适合单单追求算法代码实现并应用到软件设计层次上的程序员。算法导论的内容虽然很广泛,但是总有一点浅尝辄止的感觉。不过算法导论也绝对是一本难得的好书。如果参考算法导论后面的部分参考文献一块看的话会好很多。
数据结构和算法,算法是什么,算法实际就是数学,无论是看《算法导论》还是TAOCP都需要很好的数学,TAOCP我感觉是一个最高的追求了,因为做软件的大部分还是学计算机的,数学很难达到那个高度,所以看TAOCP会很费劲,还有一个原因就像楼上说的,他讲解的语言是汇编,对大多数人还是不适应的,也是没有必要的。只会增加你的理解难度,不会给你带来任何好处,现在美国很多著名大学都是用java讲解数据结构,我想这就说明了我们要学的是数据结构和算法,怎么讲解简单就用什么讲解,没有必要增加一些没有必要的难度,而《数据结构与算法分析》却非常容易看懂,算法导论也就是数据结构和一些数学的算法综合的一本书,那些算法都需要很好的数学,例如《运筹学》等,实际我们学习计算机的除了学习一些基本的数据结构之外,然后那就是加强自己的数学能力,算法都是从数学来得,把数学学好才是硬道理。
只能够说楼主并没有真正用心去看过TAOCP及《算法导论》这两本书!虽然算法导论介绍了很多算法及部分的部分算法的数学知识,但事实算法导论不足以替代TAOCP! 两本书本来在风格上都已经有差别! 《算法导论》以算法介绍为主,当中只是涉及数学问题时,辅以公式说明问题。而未必会有很详尽的推导,这样的话,很可能到最后是用到某些算法是只会去套公式来用! 而TAOCP注重的主体并不是一般简单的算法,而是针对问题的模型分析!进而对思考问题的思维进行培养! 如果以现时的人才来比喻,算法导论就更像应用型人才,而TAOCP则是研究型人才! 说到数学的问题嘛,楼主说很多计算机科的达不到那个高度,当真?一半对一半错吧,正确的一面,可以说,由于平时学校教育问题,很多人是没那个推导技巧或者是一时半刻改得过来!例如我们很多时候,学高数都有教级数,但我相信有很多一部分学生连最简单基本的部分求和技巧都掌握不了! 另外一半,那些数学真的很难?其实并不是全部都很难,有部分题或者部分公式只不过可能需要简单的将求和号换成积分号,解分部积分再变换一下就出答案,但问题是如何能够将求和转成积分运算?当中有什么条件限制等等?或者是如何将积分转换成相应的极限形式?这些对于中国计算机科学生是个重要的难题(其实对美国学生可能也是)! 鉴于上边的问题,斯坦福大学才会有那门叫《具体数学》的课程出现,D.E.K也为那们课,与其它合作者写了那本名叫《具体数学》的书! 想不被困于《算法导论》或TAOCP的数学知识上的,都该去看一看《具体数学》! 还有,能够做TAOCP轻量化替代品的,个人认为是《算法之美》! 说到汇编增加理解难度?那很明显楼主还不清楚作者搞那套东西的原意! 首先因为只有通过汇编,才真正简单直接表达计算机的运行状况,内存布局,相对地,C++已经负累太多(更别说JAVA那类衍生类的语言),单单C++编译器背后执行的东西就够多了,更别说JAVA\C#那类背后有即时解释器和托管管理控制、GC等方面支持的东西! 而且为何要用MIX汇编而非X86,因为X86为了兼容前边的一些设计失误,已经有太多并不简洁的地方(这个无需争辩,自己看Linux内核源码,比对一下其它的汇编就知)!觉得汇编增加难度实属悲哀啊! 很多JAVA程序员们口头都是那句“我们不需要重新创造轮子”,但事实上如果不了解轮子的构造,那么你永远就别想去通过细微改善材质搞出更好的轮子! 要会用算法和追求对算法更好的改善是不同的目标! TAOCP并不是算法婴幼儿的奶粉,而是给上了年纪(有算法经验)的人补钙用的!
最简单的,例如3-4+5-6+……±N,能够写出不用循环的程序吗? 看TAOCP的,只要弄明白1.2.3的内容,不明的看一看《具体数学》第二章,随手就已经可以写出一个只需要运行5步左右的算法(在长整数表示范围内,超出长整数范围的,要大数处理,当然就不可能),一个循环也不用! 如果是学算法导论的,附录A的习题全部能解的话可以一个循环也不用,但光会公式不会推导的,那老老实实找资料吧!算法导论公式是很多,但提及出处、推导的不多(推导最多是在习题,但问题是习题不是全部有答案,网上所谓答案,有很多推导题不全的),国内的计算机科教育,随便地要去熟练自如地用算法导论的公式,也是压力山大! 所以说TAOCP能够由《算法导论》进行轻量化的替代,那还倒不如去《具体数学》
对于一些人数学不是问题,对于一些人汇编也不是问题,但是对于大部分人这些都是有问题的,大环境和个人因素都有,算法不是计算机的全部,我要表达的意思是大部分人能把我说的那两本理解了就够用了,理解TAOCP不是说理解就理解的,当然对于科班高手来说没问题,但是那种人又有多少呢?又有多少人有那么多时间来研究算法呢?不是每个人都需要达到楼上说的那种程度的,但是能达到当然更好(我想谁都想这样),但是现实不是这样的。所以对于大部分人是没时间也没能力研究透彻TAOCP的,还不如把我说的那两本研究好!
其实TAOCP,光看内容并不算是那种完全不能明白的,难的是习题!不过TAOCP的好处是答案推导得比较完整! 算法导论,公式很多,但都是应用级的公式,要是不做习题,用的时候就只能够套着来用!
TAOCP的难度,最关键的点其实是一个,找资料,因为TAOCP当中有部分公式可能需要看很多书,例如我之前提到的《具体数学》!想光看TAOCP就能够完全明白一整套书,别说计算机科学生,就算是数学科学生都有危险! 不过上网找资料的能力确实在很多人当中都是一个重要的问题,因为从小习惯老师教,就去学的学习方式! 至于说时间问题,工作了的人要抽时间出来的确难度高,特别是做开发的人(我现时算是做外包,压力稍没那么大),但有很多大学生、研究生,大二就买了那套书,但看了十几页,觉得看不下去,就放到一、二边,时间都花去拍拖、逛街等地方上! 还有一个,TAOCP刚开始接触,很多人看TAOCP的速度,初期太快了,使到后期很多内容不明白,兴趣也越来越少,最后把书放到一二边。 以中国计算机科学生普遍水平来说,如果以看一般数据结构书的速度来看TAOCP,顶多看一、两个星期就看不下去!因为前边章节的东西都掌握不了,甚至有些人是直接跳过数学与MIX部分(第一章),那到后边看链表、看树、汇编代码当然就不会明白!兴趣也越来越低!最后算法提高不了,青春也浪费! TAOCP等等大部头的阅读,关键是随心而行,而不能追求速度,也不可能给自己定下一年半载要看完的目标,最好的方法是CR阅读!但问题是很多人却希望尽快读完,结果最后意兴阑珊,书本束之高阁!
至于什么科班不科班、高手不高手,与一般人的差别只不过是他们更努力或者更懂得学习方法! 我有两个朋友,一个化学大本生,一个生物大本生,他们没有接受过正规的计算机教育,读化学的那位,只是大学时对计算机有兴趣,去研究破解等技术,而现时已经熟悉TCP/IP有关的开发,现时在某国有集团旗下负责做对外售票系统开发的公司做PM,另外一位读生物的,是大三时有兴趣,被计算机科的学兄拉去帮忙而接触计算机的,现时已经自己开软件外包公司接工程!
至于能否达到某种水平或者够用不够用,这个就是个人目标与努力问题,工作上够用和要写出尽可能快的算法,是不同层次的目标,而抱着不同目录去看《算法导论》,最终结果都差别很大! 例如抱着上边提到的后一种目标去看《算法导论》,那必需要真正理解,并要会大部分习题,那么其学习到最后,可能和看TAOCP的效果没区别,每章的注记我不知有没有朋友是有留意的,里边提到大量书籍的!那些习题和思考题很可能要参考该类书!
顺带提多一样吧,如果英文阅读有问题的,那看《算法导论》就要比TAOCP轻松得多了! TAOCP前两卷,翻译上不够细致问题一大堆,例如除和除以等问题,Follow by及Follow这类差别,翻译有时不太细致,而且有些部分翻译省略了(省略部分例如下降阶乘幂等那里)!有时看到关键内容,那样的翻译足够你纠结几天导致兴趣直线下降 我最初是想看电子版中文的,就是在部分问题上太纠结,对比英文原版后,只能买英文原版来看
线性思维。。。。。。。。。
请问计算机或者编程入门该看什么书?我想了解当下处理系统等等知识
你的数学能力到哪?
数学能力这事,基本复变函数的运算、定理来源证明可以明白,看到公式可以明的程度
> 去计算机程序设计艺术(第1卷)的论坛
我送给自己的生日礼物(二把刀程序员)
王垠的看法(早睡早起小蜜蜂)
有货了!(方東美)
谁给个本书算法(骗子 猪)
绝对的天书(邻家の躺平人)
建议你在看完《数据结构与算法分析》C语言描述和《算法导论》之后再来看TAOCP,看是否还有很多新的收获,你就该明白这种方式是否落伍,也该明白它们不是同一层次的书(至少是从深度而言)
说他落伍,有可能是你从程序设计语言的角度来考虑了。如果看他的分析和讲解会觉得真正的严谨和美观。如果可以从思维方式来理解这套书的话,应该更好一些,但这套书的确不适合单单追求算法代码实现并应用到软件设计层次上的程序员。算法导论的内容虽然很广泛,但是总有一点浅尝辄止的感觉。不过算法导论也绝对是一本难得的好书。如果参考算法导论后面的部分参考文献一块看的话会好很多。
数据结构和算法,算法是什么,算法实际就是数学,无论是看《算法导论》还是TAOCP都需要很好的数学,TAOCP我感觉是一个最高的追求了,因为做软件的大部分还是学计算机的,数学很难达到那个高度,所以看TAOCP会很费劲,还有一个原因就像楼上说的,他讲解的语言是汇编,对大多数人还是不适应的,也是没有必要的。只会增加你的理解难度,不会给你带来任何好处,现在美国很多著名大学都是用java讲解数据结构,我想这就说明了我们要学的是数据结构和算法,怎么讲解简单就用什么讲解,没有必要增加一些没有必要的难度,而《数据结构与算法分析》却非常容易看懂,算法导论也就是数据结构和一些数学的算法综合的一本书,那些算法都需要很好的数学,例如《运筹学》等,实际我们学习计算机的除了学习一些基本的数据结构之外,然后那就是加强自己的数学能力,算法都是从数学来得,把数学学好才是硬道理。
只能够说楼主并没有真正用心去看过TAOCP及《算法导论》这两本书!虽然算法导论介绍了很多算法及部分的部分算法的数学知识,但事实算法导论不足以替代TAOCP!
两本书本来在风格上都已经有差别!
《算法导论》以算法介绍为主,当中只是涉及数学问题时,辅以公式说明问题。而未必会有很详尽的推导,这样的话,很可能到最后是用到某些算法是只会去套公式来用!
而TAOCP注重的主体并不是一般简单的算法,而是针对问题的模型分析!进而对思考问题的思维进行培养!
如果以现时的人才来比喻,算法导论就更像应用型人才,而TAOCP则是研究型人才!
说到数学的问题嘛,楼主说很多计算机科的达不到那个高度,当真?一半对一半错吧,正确的一面,可以说,由于平时学校教育问题,很多人是没那个推导技巧或者是一时半刻改得过来!例如我们很多时候,学高数都有教级数,但我相信有很多一部分学生连最简单基本的部分求和技巧都掌握不了!
另外一半,那些数学真的很难?其实并不是全部都很难,有部分题或者部分公式只不过可能需要简单的将求和号换成积分号,解分部积分再变换一下就出答案,但问题是如何能够将求和转成积分运算?当中有什么条件限制等等?或者是如何将积分转换成相应的极限形式?这些对于中国计算机科学生是个重要的难题(其实对美国学生可能也是)!
鉴于上边的问题,斯坦福大学才会有那门叫《具体数学》的课程出现,D.E.K也为那们课,与其它合作者写了那本名叫《具体数学》的书!
想不被困于《算法导论》或TAOCP的数学知识上的,都该去看一看《具体数学》!
还有,能够做TAOCP轻量化替代品的,个人认为是《算法之美》!
说到汇编增加理解难度?那很明显楼主还不清楚作者搞那套东西的原意!
首先因为只有通过汇编,才真正简单直接表达计算机的运行状况,内存布局,相对地,C++已经负累太多(更别说JAVA那类衍生类的语言),单单C++编译器背后执行的东西就够多了,更别说JAVA\C#那类背后有即时解释器和托管管理控制、GC等方面支持的东西!
而且为何要用MIX汇编而非X86,因为X86为了兼容前边的一些设计失误,已经有太多并不简洁的地方(这个无需争辩,自己看Linux内核源码,比对一下其它的汇编就知)!觉得汇编增加难度实属悲哀啊!
很多JAVA程序员们口头都是那句“我们不需要重新创造轮子”,但事实上如果不了解轮子的构造,那么你永远就别想去通过细微改善材质搞出更好的轮子!
要会用算法和追求对算法更好的改善是不同的目标!
TAOCP并不是算法婴幼儿的奶粉,而是给上了年纪(有算法经验)的人补钙用的!
最简单的,例如3-4+5-6+……±N,能够写出不用循环的程序吗?
看TAOCP的,只要弄明白1.2.3的内容,不明的看一看《具体数学》第二章,随手就已经可以写出一个只需要运行5步左右的算法(在长整数表示范围内,超出长整数范围的,要大数处理,当然就不可能),一个循环也不用!
如果是学算法导论的,附录A的习题全部能解的话可以一个循环也不用,但光会公式不会推导的,那老老实实找资料吧!算法导论公式是很多,但提及出处、推导的不多(推导最多是在习题,但问题是习题不是全部有答案,网上所谓答案,有很多推导题不全的),国内的计算机科教育,随便地要去熟练自如地用算法导论的公式,也是压力山大!
所以说TAOCP能够由《算法导论》进行轻量化的替代,那还倒不如去《具体数学》
对于一些人数学不是问题,对于一些人汇编也不是问题,但是对于大部分人这些都是有问题的,大环境和个人因素都有,算法不是计算机的全部,我要表达的意思是大部分人能把我说的那两本理解了就够用了,理解TAOCP不是说理解就理解的,当然对于科班高手来说没问题,但是那种人又有多少呢?又有多少人有那么多时间来研究算法呢?不是每个人都需要达到楼上说的那种程度的,但是能达到当然更好(我想谁都想这样),但是现实不是这样的。所以对于大部分人是没时间也没能力研究透彻TAOCP的,还不如把我说的那两本研究好!
其实TAOCP,光看内容并不算是那种完全不能明白的,难的是习题!不过TAOCP的好处是答案推导得比较完整!
算法导论,公式很多,但都是应用级的公式,要是不做习题,用的时候就只能够套着来用!
TAOCP的难度,最关键的点其实是一个,找资料,因为TAOCP当中有部分公式可能需要看很多书,例如我之前提到的《具体数学》!想光看TAOCP就能够完全明白一整套书,别说计算机科学生,就算是数学科学生都有危险!
不过上网找资料的能力确实在很多人当中都是一个重要的问题,因为从小习惯老师教,就去学的学习方式!
至于说时间问题,工作了的人要抽时间出来的确难度高,特别是做开发的人(我现时算是做外包,压力稍没那么大),但有很多大学生、研究生,大二就买了那套书,但看了十几页,觉得看不下去,就放到一、二边,时间都花去拍拖、逛街等地方上!
还有一个,TAOCP刚开始接触,很多人看TAOCP的速度,初期太快了,使到后期很多内容不明白,兴趣也越来越少,最后把书放到一二边。
以中国计算机科学生普遍水平来说,如果以看一般数据结构书的速度来看TAOCP,顶多看一、两个星期就看不下去!因为前边章节的东西都掌握不了,甚至有些人是直接跳过数学与MIX部分(第一章),那到后边看链表、看树、汇编代码当然就不会明白!兴趣也越来越低!最后算法提高不了,青春也浪费!
TAOCP等等大部头的阅读,关键是随心而行,而不能追求速度,也不可能给自己定下一年半载要看完的目标,最好的方法是CR阅读!但问题是很多人却希望尽快读完,结果最后意兴阑珊,书本束之高阁!
至于什么科班不科班、高手不高手,与一般人的差别只不过是他们更努力或者更懂得学习方法!
我有两个朋友,一个化学大本生,一个生物大本生,他们没有接受过正规的计算机教育,读化学的那位,只是大学时对计算机有兴趣,去研究破解等技术,而现时已经熟悉TCP/IP有关的开发,现时在某国有集团旗下负责做对外售票系统开发的公司做PM,另外一位读生物的,是大三时有兴趣,被计算机科的学兄拉去帮忙而接触计算机的,现时已经自己开软件外包公司接工程!
至于能否达到某种水平或者够用不够用,这个就是个人目标与努力问题,工作上够用和要写出尽可能快的算法,是不同层次的目标,而抱着不同目录去看《算法导论》,最终结果都差别很大!
例如抱着上边提到的后一种目标去看《算法导论》,那必需要真正理解,并要会大部分习题,那么其学习到最后,可能和看TAOCP的效果没区别,每章的注记我不知有没有朋友是有留意的,里边提到大量书籍的!那些习题和思考题很可能要参考该类书!
顺带提多一样吧,如果英文阅读有问题的,那看《算法导论》就要比TAOCP轻松得多了!
TAOCP前两卷,翻译上不够细致问题一大堆,例如除和除以等问题,Follow by及Follow这类差别,翻译有时不太细致,而且有些部分翻译省略了(省略部分例如下降阶乘幂等那里)!有时看到关键内容,那样的翻译足够你纠结几天导致兴趣直线下降
我最初是想看电子版中文的,就是在部分问题上太纠结,对比英文原版后,只能买英文原版来看
线性思维。。。。。。。。。
请问计算机或者编程入门该看什么书?我想了解当下处理系统等等知识
你的数学能力到哪?
数学能力这事,基本复变函数的运算、定理来源证明可以明白,看到公式可以明的程度
> 我来回应