英语和高等数学对编程的重要性
- yiding_he
- 帖子: 2677
- 注册时间: 2006-10-25 18:10
- 来自: 长沙
- 联系:
-
- 帖子: 89
- 注册时间: 2006-03-19 18:25
- 来自: FZ->TJ->PEK->AMS->MTL
“高等”数学的重要性没那么邪乎。那个举TAOCP做例子的显然连那本书的第一章都没看完,至少没认真看完,要看懂TAOCP要具备的数学只是无非是初等数论,级数,一点点微积分,线代和不少的离散数学,离所谓“高等”数学还远了去了,如果觉得那里面的数学很高深只能说你连高中数学都没学好。任何一本讲编程的书里面提到的数学都高不过这个去(当然不是讲编程语言理论的书,那些个就很很恶心了)。
好多纯计算机领域是不需要什么高深的数学的,只要头脑正常,逻辑清晰就可以做,比如做OS,如果不做微内核,不考虑分布式算法(这个东东需要的数学也仅局限于图论和一些概率论),基本没“高等”数学什么事儿,你问问Linus会“高等”数学么?搞不好一个理科的研究生数学都比他学得多(当然逻辑不见得比他清晰哦),问问他什么是半单李群,巴拿赫空间?他九成要傻眼,AST估计轻松答下,老大可是物理学博士--跑题儿了!!!像RSA加密算法发明者的确是聪明过人,但是要理解它实现它用好它需要用到的数学根本就是高中范围内的(不要拿出RSA背背后的哲学,如对称群一类的吓唬人啦,理解它真的不需要,呵呵)。
就偶上学自己的经验以及和朋友交流的情况来看,要求数学最高的地方在编码学那里,但是真正“高等”的也就是伽罗华域的一小部分,关于图灵机的部分也属于现代“高等”数学。信息论也需要一些。从mit这样顶尖学校到vu这样的小学校对于计算机科学中很多定理复杂的证明一律不要求,因为这真是只有做理论的人才用得着掌握扎实的。
有位哥们说得对,如果要针对一个领域往深里做那是要用到深奥一些的数学,比如建模做computational finace,或者语音识别,图形图像,但是这往往不是编程的问题,而是那个专业领域的问题,而且也不见得就需要“高等”的数学,而是怎么巧妙地应用初等数学去解决问题,所以还是打好初等数学的基础就好。Dijkstra的semaphore背后当然有可怕的数学,但是经过这么多年,Dijkstra的数学思想已经被无数的作者给打磨过了,变得非常的不数学而非常计算机了,理解了运用好就可以,不需要非要去看他老人家的论文,看他老人家的数学证明还不如看一段例子代码呢,是不是这个道理,问题在于怎么灵活地正确地使用semaphore无饥饿无死锁无不必要的锁等等,这体现编程水平,但是还是和数学无关,还真别说这就是数学,否则那帮学数学搞数学的会气死的。
所以个人认为对编程来说重要的不是高等数学,甚至高等数学一点都不重要,而是强逻辑性和一点灵感。
发了半天牢骚其实就是发现很多学计算机的兄弟都没搞清楚啥叫数学就大呼数学的重要性好还因为发现了这点颇有点沾沾自喜的样子,觉得有点好笑又好气,数学 =/=逻辑练习
P.S:如果把高等数学当作专有名词的话,指的是数学分析,这也快要属于古典数学的范畴了,离“高等”还十万八千里呢。
好多纯计算机领域是不需要什么高深的数学的,只要头脑正常,逻辑清晰就可以做,比如做OS,如果不做微内核,不考虑分布式算法(这个东东需要的数学也仅局限于图论和一些概率论),基本没“高等”数学什么事儿,你问问Linus会“高等”数学么?搞不好一个理科的研究生数学都比他学得多(当然逻辑不见得比他清晰哦),问问他什么是半单李群,巴拿赫空间?他九成要傻眼,AST估计轻松答下,老大可是物理学博士--跑题儿了!!!像RSA加密算法发明者的确是聪明过人,但是要理解它实现它用好它需要用到的数学根本就是高中范围内的(不要拿出RSA背背后的哲学,如对称群一类的吓唬人啦,理解它真的不需要,呵呵)。
就偶上学自己的经验以及和朋友交流的情况来看,要求数学最高的地方在编码学那里,但是真正“高等”的也就是伽罗华域的一小部分,关于图灵机的部分也属于现代“高等”数学。信息论也需要一些。从mit这样顶尖学校到vu这样的小学校对于计算机科学中很多定理复杂的证明一律不要求,因为这真是只有做理论的人才用得着掌握扎实的。
有位哥们说得对,如果要针对一个领域往深里做那是要用到深奥一些的数学,比如建模做computational finace,或者语音识别,图形图像,但是这往往不是编程的问题,而是那个专业领域的问题,而且也不见得就需要“高等”的数学,而是怎么巧妙地应用初等数学去解决问题,所以还是打好初等数学的基础就好。Dijkstra的semaphore背后当然有可怕的数学,但是经过这么多年,Dijkstra的数学思想已经被无数的作者给打磨过了,变得非常的不数学而非常计算机了,理解了运用好就可以,不需要非要去看他老人家的论文,看他老人家的数学证明还不如看一段例子代码呢,是不是这个道理,问题在于怎么灵活地正确地使用semaphore无饥饿无死锁无不必要的锁等等,这体现编程水平,但是还是和数学无关,还真别说这就是数学,否则那帮学数学搞数学的会气死的。
所以个人认为对编程来说重要的不是高等数学,甚至高等数学一点都不重要,而是强逻辑性和一点灵感。
发了半天牢骚其实就是发现很多学计算机的兄弟都没搞清楚啥叫数学就大呼数学的重要性好还因为发现了这点颇有点沾沾自喜的样子,觉得有点好笑又好气,数学 =/=逻辑练习
P.S:如果把高等数学当作专有名词的话,指的是数学分析,这也快要属于古典数学的范畴了,离“高等”还十万八千里呢。
- hellojinjie
- 帖子: 1150
- 注册时间: 2007-09-14 21:03
- 来自: 浙江
-
- 帖子: 441
- 注册时间: 2006-10-26 7:02
太狭隘了,听说过高等组合么?vupiggy 写了:“高等”数学的重要性没那么邪乎。那个举TAOCP做例子的显然连那本书的第一章都没看完,至少没认真看完,要看懂TAOCP要具备的数学只是无非是初等数论,级数,一点点微积分,线代和不少的离散数学,离所谓“高等”数学还远了去了,如果觉得那里面的数学很高深只能说你连高中数学都没学好。任何一本讲编程的书里面提到的数学都高不过这个去(当然不是讲编程语言理论的书,那些个就很很恶心了)。
好多纯计算机领域是不需要什么高深的数学的,只要头脑正常,逻辑清晰就可以做,比如做OS,如果不做微内核,不考虑分布式算法(这个东东需要的数学也仅局限于图论和一些概率论),基本没“高等”数学什么事儿,你问问Linus会“高等”数学么?搞不好一个理科的研究生数学都比他学得多(当然逻辑不见得比他清晰哦),问问他什么是半单李群,巴拿赫空间?他九成要傻眼,AST估计轻松答下,老大可是物理学博士--跑题儿了!!!像RSA加密算法发明者的确是聪明过人,但是要理解它实现它用好它需要用到的数学根本就是高中范围内的(不要拿出RSA背背后的哲学,如对称群一类的吓唬人啦,理解它真的不需要,呵呵)。
就偶上学自己的经验以及和朋友交流的情况来看,要求数学最高的地方在编码学那里,但是真正“高等”的也就是伽罗华域的一小部分,关于图灵机的部分也属于现代“高等”数学。信息论也需要一些。从mit这样顶尖学校到vu这样的小学校对于计算机科学中很多定理复杂的证明一律不要求,因为这真是只有做理论的人才用得着掌握扎实的。
有位哥们说得对,如果要针对一个领域往深里做那是要用到深奥一些的数学,比如建模做computational finace,或者语音识别,图形图像,但是这往往不是编程的问题,而是那个专业领域的问题,而且也不见得就需要“高等”的数学,而是怎么巧妙地应用初等数学去解决问题,所以还是打好初等数学的基础就好。Dijkstra的semaphore背后当然有可怕的数学,但是经过这么多年,Dijkstra的数学思想已经被无数的作者给打磨过了,变得非常的不数学而非常计算机了,理解了运用好就可以,不需要非要去看他老人家的论文,看他老人家的数学证明还不如看一段例子代码呢,是不是这个道理,问题在于怎么灵活地正确地使用semaphore无饥饿无死锁无不必要的锁等等,这体现编程水平,但是还是和数学无关,还真别说这就是数学,否则那帮学数学搞数学的会气死的。
所以个人认为对编程来说重要的不是高等数学,甚至高等数学一点都不重要,而是强逻辑性和一点灵感。
发了半天牢骚其实就是发现很多学计算机的兄弟都没搞清楚啥叫数学就大呼数学的重要性好还因为发现了这点颇有点沾沾自喜的样子,觉得有点好笑又好气,数学 =/=逻辑练习
P.S:如果把高等数学当作专有名词的话,指的是数学分析,这也快要属于古典数学的范畴了,离“高等”还十万八千里呢。
分析什么的真是初等又基础,没什么说的。高等数学么,本科的东西。
直接拿别人算法堆代码是无所谓,自己开发算法呢?
代数图论,组合设计,在你眼里确实是“高中数学”,但数学的高等和初等看的不是符号有多少,用了什么分析,什么代数,什么xx。看的是idea。
TAOCP真的是“初等数学”?离散数学是真正高等的学问,一般本科,包括MIT这种级别的,都
基本不讲什么。靠离散数学拿沃尔夫奖的好几个了。
去看看lovaz的计算理论文章,真的是初等数学?
-
- 帖子: 441
- 注册时间: 2006-10-26 7:02
只做个代码工人么,当我没说。vvvli 写了:太狭隘了,听说过高等组合么?vupiggy 写了:“高等”数学的重要性没那么邪乎。那个举TAOCP做例子的显然连那本书的第一章都没看完,至少没认真看完,要看懂TAOCP要具备的数学只是无非是初等数论,级数,一点点微积分,线代和不少的离散数学,离所谓“高等”数学还远了去了,如果觉得那里面的数学很高深只能说你连高中数学都没学好。任何一本讲编程的书里面提到的数学都高不过这个去(当然不是讲编程语言理论的书,那些个就很很恶心了)。
好多纯计算机领域是不需要什么高深的数学的,只要头脑正常,逻辑清晰就可以做,比如做OS,如果不做微内核,不考虑分布式算法(这个东东需要的数学也仅局限于图论和一些概率论),基本没“高等”数学什么事儿,你问问Linus会“高等”数学么?搞不好一个理科的研究生数学都比他学得多(当然逻辑不见得比他清晰哦),问问他什么是半单李群,巴拿赫空间?他九成要傻眼,AST估计轻松答下,老大可是物理学博士--跑题儿了!!!像RSA加密算法发明者的确是聪明过人,但是要理解它实现它用好它需要用到的数学根本就是高中范围内的(不要拿出RSA背背后的哲学,如对称群一类的吓唬人啦,理解它真的不需要,呵呵)。
就偶上学自己的经验以及和朋友交流的情况来看,要求数学最高的地方在编码学那里,但是真正“高等”的也就是伽罗华域的一小部分,关于图灵机的部分也属于现代“高等”数学。信息论也需要一些。从mit这样顶尖学校到vu这样的小学校对于计算机科学中很多定理复杂的证明一律不要求,因为这真是只有做理论的人才用得着掌握扎实的。
有位哥们说得对,如果要针对一个领域往深里做那是要用到深奥一些的数学,比如建模做computational finace,或者语音识别,图形图像,但是这往往不是编程的问题,而是那个专业领域的问题,而且也不见得就需要“高等”的数学,而是怎么巧妙地应用初等数学去解决问题,所以还是打好初等数学的基础就好。Dijkstra的semaphore背后当然有可怕的数学,但是经过这么多年,Dijkstra的数学思想已经被无数的作者给打磨过了,变得非常的不数学而非常计算机了,理解了运用好就可以,不需要非要去看他老人家的论文,看他老人家的数学证明还不如看一段例子代码呢,是不是这个道理,问题在于怎么灵活地正确地使用semaphore无饥饿无死锁无不必要的锁等等,这体现编程水平,但是还是和数学无关,还真别说这就是数学,否则那帮学数学搞数学的会气死的。
所以个人认为对编程来说重要的不是高等数学,甚至高等数学一点都不重要,而是强逻辑性和一点灵感。
发了半天牢骚其实就是发现很多学计算机的兄弟都没搞清楚啥叫数学就大呼数学的重要性好还因为发现了这点颇有点沾沾自喜的样子,觉得有点好笑又好气,数学 =/=逻辑练习
P.S:如果把高等数学当作专有名词的话,指的是数学分析,这也快要属于古典数学的范畴了,离“高等”还十万八千里呢。
分析什么的真是初等又基础,没什么说的。高等数学么,本科的东西。
直接拿别人算法堆代码是无所谓,自己开发算法呢?
代数图论,组合设计,在你眼里确实是“高中数学”,但数学的高等和初等看的不是符号有多少,用了什么分析,什么代数,什么xx。看的是idea。
TAOCP真的是“初等数学”?离散数学是真正高等的学问,一般本科,包括MIT这种级别的,都
基本不讲什么。靠离散数学拿沃尔夫奖的好几个了。
去看看lovaz的计算理论文章,真的是初等数学?
-
- 帖子: 89
- 注册时间: 2006-03-19 18:25
- 来自: FZ->TJ->PEK->AMS->MTL
楼上的别逗了,楼主问的是编程,你说的是作计算科学理论,像我老板那样的,连一行程序都不会编,做protocol validation的,还有好多这样的计算机科学家都不会编程的,他们根本就是在做数学。
自己开发算法?又眼光太高了不是?我看程序员(包括RMS,Bill Joy在内)当中没几个有能力自己开发算法的。能用好算法,知道什么时候该用什么算法就已经是高手中的高手了,看Programming Pearls就可以体会到这一点。自己开发算法,尤其是有价值的算法都可以叫scientist了,反正我可没想往那奔去。现在的小朋友怎么总是拿scientist说事,还沃尔夫奖呢,他们是科学家,你也可以说是顶尖的程序员,但是明确告诉你,那完全不是我们能达到的,别想了,这么大年纪还在这里混论坛,比较切合实际的想法是做好一个代码工人吧。怎不想想大部分的程序员都不能做好一个代码工人的咧,别瞧不起代码工人,做一个好的代码工人是很难的事情,当然要做到这点确实完全没有必要去啃掉那些``高等''的数学。
要看懂TAOCP是不是只需要初等数学,列它的数学基础那一章就知道了:
数学归纳法
数,幂和对数
和与积
排列和阶乘
二项式系数
调和数
斐波那契数
生成函数
渐进表示
这里头的内容完全没超出高中数学外加大学的一点微积分和组合数学课程。不是初等数学是什么。mit不在本科课程讲授TAOCP就是因为它偏数学了,对于培养一个程序员没有必要。就算是研究生又如何?譬如分布式算法里头的蒙特卡洛和拉斯维加斯算法压根也没超出古典概率论的范畴,Lamport时间戳更是一拍脑门就可以理解的,这些哪是什么``高等''数学啊。
你一看就不是学数学的,连其它科系上的名称叫``高等数学''的东西在数学系里叫数学分析(数分数分没听过啊)都不知道,还``什么什么分析'',到现在数分只能算是初等数学了。
还什么``idea'',拜托,数学成了拉风投了,``idea''只能成就一个猜想,就像那个哥德巴赫,要证明推演这里艰辛的过程哪里是什么idea可以解决的。
我从来也没说这些计算理论背后的数学不是``高等''的数学,而是说对于程序员来说根本用不着,是说要理解要用好一些基本理论成为编程高手不需要``高等''数学,别拿理论研究说事儿,那是两码事!计算理论对于一个普通的好程序员弯完全没有必要可以举个最最简单的例子,谁在编应用程序过程当中用到图灵机的概念?听说过哪个程序员需要理解哥德尔不完备定理?
不要拿任何大的玩意来吓唬人,现实地说,:如果你想要成为Alan Cox这样的程序员,多写多看多炼多熬,8000~10000个小时可以成就你,这个完全可以达到,想成为Bill Joy,难点,软硬通吃,恐怕需要点天赋而且精力过人,这两者保证都不需要多少高等组合和那些沃尔夫的知识(O'reilly的三本关于linux kernel的大厚书都没有附录关于数学基础的不是么?:) 但是多少人能吃透? ),万一你要想成为Knuth和Dijkstra,那就玩命学数学去吧,然后耽误你的一生发现自己其实成不了Knuth和Dijkstra,洗洗睡吧,别做梦了。
自己开发算法?又眼光太高了不是?我看程序员(包括RMS,Bill Joy在内)当中没几个有能力自己开发算法的。能用好算法,知道什么时候该用什么算法就已经是高手中的高手了,看Programming Pearls就可以体会到这一点。自己开发算法,尤其是有价值的算法都可以叫scientist了,反正我可没想往那奔去。现在的小朋友怎么总是拿scientist说事,还沃尔夫奖呢,他们是科学家,你也可以说是顶尖的程序员,但是明确告诉你,那完全不是我们能达到的,别想了,这么大年纪还在这里混论坛,比较切合实际的想法是做好一个代码工人吧。怎不想想大部分的程序员都不能做好一个代码工人的咧,别瞧不起代码工人,做一个好的代码工人是很难的事情,当然要做到这点确实完全没有必要去啃掉那些``高等''的数学。
要看懂TAOCP是不是只需要初等数学,列它的数学基础那一章就知道了:
数学归纳法
数,幂和对数
和与积
排列和阶乘
二项式系数
调和数
斐波那契数
生成函数
渐进表示
这里头的内容完全没超出高中数学外加大学的一点微积分和组合数学课程。不是初等数学是什么。mit不在本科课程讲授TAOCP就是因为它偏数学了,对于培养一个程序员没有必要。就算是研究生又如何?譬如分布式算法里头的蒙特卡洛和拉斯维加斯算法压根也没超出古典概率论的范畴,Lamport时间戳更是一拍脑门就可以理解的,这些哪是什么``高等''数学啊。
你一看就不是学数学的,连其它科系上的名称叫``高等数学''的东西在数学系里叫数学分析(数分数分没听过啊)都不知道,还``什么什么分析'',到现在数分只能算是初等数学了。
还什么``idea'',拜托,数学成了拉风投了,``idea''只能成就一个猜想,就像那个哥德巴赫,要证明推演这里艰辛的过程哪里是什么idea可以解决的。
我从来也没说这些计算理论背后的数学不是``高等''的数学,而是说对于程序员来说根本用不着,是说要理解要用好一些基本理论成为编程高手不需要``高等''数学,别拿理论研究说事儿,那是两码事!计算理论对于一个普通的好程序员弯完全没有必要可以举个最最简单的例子,谁在编应用程序过程当中用到图灵机的概念?听说过哪个程序员需要理解哥德尔不完备定理?
不要拿任何大的玩意来吓唬人,现实地说,:如果你想要成为Alan Cox这样的程序员,多写多看多炼多熬,8000~10000个小时可以成就你,这个完全可以达到,想成为Bill Joy,难点,软硬通吃,恐怕需要点天赋而且精力过人,这两者保证都不需要多少高等组合和那些沃尔夫的知识(O'reilly的三本关于linux kernel的大厚书都没有附录关于数学基础的不是么?:) 但是多少人能吃透? ),万一你要想成为Knuth和Dijkstra,那就玩命学数学去吧,然后耽误你的一生发现自己其实成不了Knuth和Dijkstra,洗洗睡吧,别做梦了。