两届微软MVP获得者叶帆认为,如果是一个真正的程序员,那么他(她)天生就应该喜欢学习数学才对。

因为在叶帆看来,学理科的人分两种不同的人群,一部分人以逻辑思维为主,数学、物理、编程成绩较好;另一部分人以记忆为基础,英语和化学优胜一筹。以叶帆为例,他个人已从事软件开发十余年,是“地地道道”的程序员,同时也很喜欢数学:大学里就曾参加过学校组织的计算机编程和高等数学的竞赛,取得了编程第一,高等数学第二的好成绩。“所以我认为真正的程序员,不存在应不应当学习数学的问题,只要工作需要,随时都可以深入学习。”叶帆如是说。

不过叶帆也承认高等数学与一般程序员的关系并不是很大,只需理解和实现即可。因为在实际工作中有时候很少用到高等数学的知识。叶帆也只是在开发隧道广告系统中,对图像处理和г校正时用到一部分数学知识(主要是矩阵变换的知识),而且其中的大部分实现还是借鉴了现成的代码,数学知识本身反而并不需要深入了解。听起来,叶帆的回答颇有矛盾辨证的感觉。

特殊群体的程序员(如搜索开发、图像处理等等)和研究所的研究员似乎可能需要更多的数学知识,至于一般程序员,叶帆认为“只要具备高中数学基础就已经足够。”

先前有国外著书,矛头直指早期的计算机先驱如约翰冯诺伊曼(John von Neumann)和阿兰图灵(Alan Turing),说他们本身就是理论数学家,把数学模型移植到计算机中,尤其是算法,从而导致从那时到现在计算机科学始终受到数学的制约。他还认为在算法概念上编写软件不是什么好方法。对此,叶帆认为在编程没有涉及到高端技术层面上的时候,算法概念上的编写软件只是极少人的课题,因为面向对象的编程的思想已经深入人心。“当然如果你是一个科学家(或研究员),数学一定离你很近,甚至有可能数学是你工作的灵魂,而计算机代码仅仅是表达你思想的一种道具。”【文:呐不喊】

编后语:
记得一位有着10多年开发经验的老程序员曾经说过:“所有的程序本质上就是逻辑。技术你已经较好地掌握了,但只有完成逻辑能力的提高,你才能成为一名职业程序员。”他就象打了一个比方,你十八般武艺都很精通,但就是内力不够,所以永远都成不了武林顶尖高手。而这个内力对于程序员来说,就是你的数学内涵。
评论
bonny 2007-11-12
呵呵,也许这么悖论说明了我的这上面说的是个假命题:-)

.....或者我们根本就是把不相关的问题扯起来了
ray_linn 2007-11-12
这种没有逻辑的推论是不是说明这个MVP本身也是逻辑不清楚,不适合当程序员。
bonny 2007-11-12
protti 写道
抛出异常的爱 写道
草履草最高

而数学的作用就是如何使用机械化去替代人肉,降低试错的成本.



我非常的赞同这个观点。当初莱布尼茨提出了两个哲学问题(其实是一个)
1,创造一种通用的语言,使之可以表达所有的含义
2,是否所有的问题都可以有限判定中解答


所谓的数学逻辑,不过是使用数学语言进行机械判定的过程,不过数学推理是严密的,减少了我们出错的机会。
bonny 2007-11-12
看了很多国外数学家的生平介绍
我发现国内的教学有一个很大的误解
(我没去过国外,不知道国外的教学是什么样子的)
就是吧数学和物理,哲学等科学区分的很清除

而看到国外的大数学家的经历
我发现他们似乎根本不注重这些
他们更注重的是思想的表达和问题的解决
而于此过程中用到了那些门类的知识他们倒不会区分的那么明显
甚至他们会发明一些工具来解决问题
最后教科书告诉我们他们是一大堆家的综合,真是很好笑

落下地来
看的出来他们的教育注重想象力和创造力,成绩却差的一塌糊涂
最后多拿诺贝尔
而我们奥林匹克奖牌是一陀一陀的
大多最后做了教师(ms有人做过统计)
bonny 2007-11-12
数学知识够用就好了
不必精通

很多时候如果你觉得数学知识不够可以去现学

所谓的数学不过是逻辑的表达
逻辑思维清晰的人未必是数学好的人
数学好的一般逻辑不会太差

所以说程序员爱数学这个命题应该算是一个弯弯绕
现代数学从上个世纪开始已经非常非常庞大了
在上个世纪初叶我们还可以看到精通很多个分支的数学家
现在基本上已经看不到了
所以说还是够用就好

顺便说一下在《数学:确定性的丧失》这本书里面
作者提出了好几类人:纯数学家和应用数学家
前者代表任务是哈达等,认为数学家应该不关注应用
后者是大家数学的莱布尼茨、笛卡尔等基本上数学家知识副业
主业都是物理学家或者天文学家地理学家哲学家

作者的倾向很明显:实用主义,够用就好
fyting 2007-11-11
又是一个微软MVP对数学泛泛而谈...让我突然就想起了曾毅...
bcccs 2007-11-10
yx06 写道
其实数学就是数学就是用来买菜的,程序和数学是不搭界的。同志们,认识的最高境界就是这样。

good,sigh!
yx06 2007-11-09
其实数学就是数学就是用来买菜的,程序和数学是不搭界的。同志们,认识的最高境界就是这样。
protti 2007-11-09
chinata 写道
protti 写道
dengyin2000 写道
ray_linn 写道
bcccs 写道
总有某种经验在起作用。不可能穷举。



应该说人脑不是电脑,电脑算鸡鸭同笼每次都会穷举一遍,人脑会cache结果.



你也可以让电脑cache 结果。 hibernate的query cache。


我认为人发明出来的东西永远不可能比人聪明。

我觉得这话只能说是发明出来的东西永远不会比发明者更聪明,但是比其他人聪明还是很容易的:)


~~!又说的我没脾气...........
chinata 2007-11-08
protti 写道
dengyin2000 写道
ray_linn 写道
bcccs 写道
总有某种经验在起作用。不可能穷举。



应该说人脑不是电脑,电脑算鸡鸭同笼每次都会穷举一遍,人脑会cache结果.



你也可以让电脑cache 结果。 hibernate的query cache。


我认为人发明出来的东西永远不可能比人聪明。

我觉得这话只能说是发明出来的东西永远不会比发明者更聪明,但是比其他人聪明还是很容易的:)
庄表伟 2007-11-08
抛出异常的爱 写道
草履虫单细胞生物,
之后是多细胞
。。。。
脊柱
两栖
爬行
哺乳
猴子

。。。。
如果人不被进化掉的话
怎么对的起早就到顶的草履虫前辈呢


《4400》、《Heroes》,我喜欢的。
bcccs 2007-11-08
抛出异常的爱 写道
protti 写道
抛出异常的爱 写道
草履草最高


大哥.....什么意思?没明白!
草履虫单细胞生物,
之后是多细胞
。。。。
脊柱
两栖
爬行
哺乳
猴子

。。。。
如果人不被进化掉的话
怎么对的起早就到顶的草履虫前辈呢

这杠抬的。
抛出异常的爱 2007-11-08
protti 写道
抛出异常的爱 写道
草履草最高


大哥.....什么意思?没明白!
草履虫单细胞生物,
之后是多细胞
。。。。
脊柱
两栖
爬行
哺乳
猴子

。。。。
如果人不被进化掉的话
怎么对的起早就到顶的草履虫前辈呢
protti 2007-11-08
抛出异常的爱 写道
草履草最高


大哥.....什么意思?没明白!
抛出异常的爱 2007-11-08
Trustno1 写道
抛出异常的爱 写道
Trustno1 写道
我必须指出的是,数学有多种多样.某种数学仅适合于描述某种东西,4的平方根是2,一个人的平方根又什么?hehe.
所谓,能编写出合格的程序,写出格式良好的代码,实际上只不过是通过人肉不断进行试错的过程,而数学的作用就是如何使用机械化去替代人肉,降低试错的成本.

人要是一次能把程序写对的话,银弹就产生了。


爱迪生试错几千次得到灯丝,那是智慧的创造,但是如果他今后制造每根灯丝都要重复原来的1000次试错过程就是愚蠢的行为.

我认为现在1000次试错的过程正在被人为的扩大。。。。
IBM就是这个方向的带头人。。。

protti 写道


我认为人发明出来的东西永远不可能比人聪明。

草履草最高
protti 2007-11-08
dengyin2000 写道
ray_linn 写道
bcccs 写道
总有某种经验在起作用。不可能穷举。



应该说人脑不是电脑,电脑算鸡鸭同笼每次都会穷举一遍,人脑会cache结果.



你也可以让电脑cache 结果。 hibernate的query cache。


我认为人发明出来的东西永远不可能比人聪明。
bcccs 2007-11-07
dengyin2000 写道
ray_linn 写道
bcccs 写道
总有某种经验在起作用。不可能穷举。



应该说人脑不是电脑,电脑算鸡鸭同笼每次都会穷举一遍,人脑会cache结果.



你也可以让电脑cache 结果。 hibernate的query cache。

但是电脑对结果的利用效果不能和人脑比。人脑可以类比归纳。当然在某些领域,电脑也略有一点归纳的能力了。
dengyin2000 2007-11-07
ray_linn 写道
bcccs 写道
总有某种经验在起作用。不可能穷举。



应该说人脑不是电脑,电脑算鸡鸭同笼每次都会穷举一遍,人脑会cache结果.



你也可以让电脑cache 结果。 hibernate的query cache。
ray_linn 2007-11-07
bcccs 写道
总有某种经验在起作用。不可能穷举。



应该说人脑不是电脑,电脑算鸡鸭同笼每次都会穷举一遍,人脑会cache结果.
bcccs 2007-11-07
weiqingfei 写道
Trustno1 写道
抛出异常的爱 写道
Trustno1 写道
我必须指出的是,数学有多种多样.某种数学仅适合于描述某种东西,4的平方根是2,一个人的平方根又什么?hehe.
所谓,能编写出合格的程序,写出格式良好的代码,实际上只不过是通过人肉不断进行试错的过程,而数学的作用就是如何使用机械化去替代人肉,降低试错的成本.

人要是一次能把程序写对的话,银弹就产生了。


爱迪生试错几千次得到灯丝,那是智慧的创造,但是如果他今后制造每根灯丝都要重复原来的1000次试错过程就是愚蠢的行为.


这样理解异常的话不厚道。
写程序不会写1000次同样的程序。

同样,爱迪生要是想发明1000种即使是类似的不同灯丝,他都得试上n次。

总有某种经验在起作用。不可能穷举。
发表评论

提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则

您还没有登录,请登录后发表评论

sunxboy
搜索本博客
我的相册
031cfa49-e0bb-35a3-b77e-c89724f0671a-thumb
b48abcac33f225a880bb1b3a5950b3d5273e6852.jpg
共 10 张
存档
最新评论