`
sunxboy
  • 浏览: 2870106 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

真正的程序员天生爱数学(转)

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

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

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

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

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

编后语:
记得一位有着10多年开发经验的老程序员曾经说过:“所有的程序本质上就是逻辑。技术你已经较好地掌握了,但只有完成逻辑能力的提高,你才能成为一名职业程序员。”他就象打了一个比方,你十八般武艺都很精通,但就是内力不够,所以永远都成不了武林顶尖高手。而这个内力对于程序员来说,就是你的数学内涵。
分享到:
评论
23 楼 ozzzzzz 2007-11-07  
逻辑是逻辑,数学是数学。逻辑和数学有关联,但是不能说数学好逻辑就一定好,反之也不能说逻辑强数学就一定强。
22 楼 抛出异常的爱 2007-11-07  
ray_linn 写道
两届JavaEye社区杰出灌水奖获得者Ray_linn认为,如果是一个真正的程序员,那么他(她)天生就应该喜欢灌水。

Hibernate这玩意儿也看不出需要多少数学,所以GK大概不是真正的程序员。

现javaeye社会杰出港口水奖获得者:抛出异常的爱 认为,如果真正的程序员他必需要长的帅,长的不帅都是伪程序员。
21 楼 ray_linn 2007-11-07  
把mm也需要严密的思考方式,否则把Rose喊成Rosa会死人的。
20 楼 metaphy 2007-11-07  
数学说白了,是种严密的思考世界的方式。程序也是。
19 楼 ray_linn 2007-11-07  
bcccs 写道
ray_linn 写道
两届JavaEye社区杰出灌水奖获得者Ray_linn认为,如果是一个真正的程序员,那么他(她)天生就应该喜欢灌水。

去采访一下linus,搞不好他数学补考过。Bill Gates,可怜,连考数学的机会都没有了。Hibernate这玩意儿也看不出需要多少数学,所以GK大概不是真正的程序员。


bill gates高中时候参加过美国的数学夏令营。类似于中国的奥赛集训营的性质。




我也参加过。

不过我还是认为程序员天生爱数学懂数学是个伪命题。

数学是个很泛泛的定义,细分下去有无比多分支。

我写商业逻辑挖掘程序,大概不需要明白复立叶变换。
我写数模采集程序,则大概用不上数据建模。

那who can define a  'MUST to Know' 的数学呢? 

或者谁能回答:我是统计数学的高手,去搞微波电路,我到底是懂得还是不懂得数学?
18 楼 bcccs 2007-11-07  
ray_linn 写道
两届JavaEye社区杰出灌水奖获得者Ray_linn认为,如果是一个真正的程序员,那么他(她)天生就应该喜欢灌水。

去采访一下linus,搞不好他数学补考过。Bill Gates,可怜,连考数学的机会都没有了。Hibernate这玩意儿也看不出需要多少数学,所以GK大概不是真正的程序员。


bill gates高中时候参加过美国的数学夏令营。类似于中国的奥赛集训营的性质。

17 楼 ray_linn 2007-11-07  
两届JavaEye社区杰出灌水奖获得者Ray_linn认为,如果是一个真正的程序员,那么他(她)天生就应该喜欢灌水。

Hibernate这玩意儿也看不出需要多少数学,所以GK大概不是真正的程序员。
16 楼 bcccs 2007-11-07  
axgle 写道
我只学过微积分,没学过离散数学.缺什么就学什么.

哦。sorry。一般计算机科班会有这门课程。
15 楼 axgle 2007-11-07  
我只学过微积分,没学过离散数学.缺什么就学什么.
14 楼 bcccs 2007-11-07  
axgle 写道
程序员可以学点离散数学,没事看着玩玩.微积分就不必了.

难道学校里没有离散数学这门课程?咋还要工作了,没事了再去学?
13 楼 bcccs 2007-11-07  
抛出异常的爱 写道
学习数学的目的是什么?

是把复杂的多元的信息
分类,化简,让有限的人脑能够
分析处理更多的信息。

像斧子是手的延长
数学是脑子的扩展

靠一目十行的记忆力可以成为天才
不靠一目十行的记忆力也可以成为天才

PS:我认为不懂数学的人。。。。
只有在上上个世纪的农民。
其它的人或多或少都人懂点吧。


你说的是算术亦或逻辑,不是数学,当代人中大多不懂数学。
12 楼 抛出异常的爱 2007-11-07  
axgle 写道
程序员可以学点离散数学,没事看着玩玩.微积分就不必了.

浮点数的运算, 应该是以微积分的方式去理解。
11 楼 yuxie 2007-11-07  
两届开源社区杰出贡献奖获得者XX认为,如果是一个真正的程序员,那么他(她)天生就不应该做微软MVP。
10 楼 jigsaw 2007-11-07  
允许真正的程序员天生爱数学,但是不懂数学吗?
9 楼 axgle 2007-11-07  
程序员可以学点离散数学,没事看着玩玩.微积分就不必了.
8 楼 抛出异常的爱 2007-11-07  
dengyin2000 写道
抛出异常的爱 写道
学习数学的目的是什么?

是把复杂的多元的信息
分类,化简,让有限的人脑能够
分析处理更多的信息。

像斧子是手的延长
数学是脑子的扩展

靠一目十行的记忆力可以成为天才
不靠一目十行的记忆力也可以成为天才

PS:我认为不懂数学的人。。。。
只有在上上个世纪的农民。
其它的人或多或少都人懂点吧。



1+1 也是数学。

为了把复杂的信息好存放。
必须对一些简单信息 进行再简化,简化为原子数据
1+1就是个例子。。。
特例是数字0的发明,
1/2 = 0.5的发明
1-2 =-1 的发明
sqr(2)=1.41421....的发明
sqr(-1)= i 的发明
这些简单的东西都是数学向外扩展的基石。
7 楼 dengyin2000 2007-11-07  
抛出异常的爱 写道
学习数学的目的是什么?

是把复杂的多元的信息
分类,化简,让有限的人脑能够
分析处理更多的信息。

像斧子是手的延长
数学是脑子的扩展

靠一目十行的记忆力可以成为天才
不靠一目十行的记忆力也可以成为天才

PS:我认为不懂数学的人。。。。
只有在上上个世纪的农民。
其它的人或多或少都人懂点吧。



1+1 也是数学。
6 楼 抛出异常的爱 2007-11-07  
学习数学的目的是什么?

是把复杂的多元的信息
分类,化简,让有限的人脑能够
分析处理更多的信息。

像斧子是手的延长
数学是脑子的扩展

靠一目十行的记忆力可以成为天才
不靠一目十行的记忆力也可以成为天才

PS:我认为不懂数学的人。。。。
只有在上上个世纪的农民。
其它的人或多或少都人懂点吧。
5 楼 dengyin2000 2007-11-07  
Trustno1 写道
引用
现在都搞应用, 没有感觉到数学。
现在是大白天,我也没看到月亮


被偶像批评了!  
4 楼 weiqingfei 2007-11-07  
Trustno1 写道
引用
现在都搞应用, 没有感觉到数学。

现在是大白天,我也没看到月亮

我看到过

相关推荐

    程序员考试刷题-DAL-test:DAL测试

    程序员考试刷题DAL测试 目录 介绍 随着 21 世纪的到来,教育趋势的敏锐观察者注意到,越来越多的人有兴趣重新思考我们教育孩子和我们自己的方式。 这样做的动机包括粉碎系统的冲动,或“破坏”现有模型并将结果转化...

    讲软件项目中的人员管理PPT学习教案.pptx

    研究显示,经验和专业知识比数学基础更重要,且优秀的程序员不一定具备良好的管理能力。 6. **人员招聘**:项目经理需要区分合格与合适的候选人。合格的人员具备相应的经验,而合适的人员则能真正胜任工作。招聘...

    函数式编程从崛起到没落到再崛起共2页.pdf.zip

    另外,函数式编程的无副作用特性使代码更易于理解和调试,因为程序员不需要担心函数会意外地修改外部状态。 在大数据处理和实时流处理领域,函数式编程框架如Apache Spark和Flink因其天生的分布式计算能力而备受...

    R语言知识体系概览

    R语言是一门统计语言,主要用于数学建模、统计计算、数据处理、可视化等几个方向,R语言天生就不同于其他的编程语言。R语言封装了各种基础学科的计算函数,我们在R语言编程的过程中只需要调用这些计算函数,就可以...

    图像修复实现。使用GPUCUDA、Theano和Tensorflow的并行计算加速图像修复。.zip

    - GPU(图形处理器)天生适合执行并行计算,因为它拥有大量的计算核心,可以同时处理大量数据。相比CPU,GPU在处理大规模数学运算时能提供显著的性能提升,尤其是在处理图像和视频等数据密集型任务时。 3. **CUDA*...

    prolog programming for artificial intelligence

    5. 符号推理:在符号推理任务中,如数学证明、逻辑谜题求解等,Prolog能够提供强大的逻辑推理能力,是人工智能研究中不可或缺的一部分。 综上所述,如果要系统地学习Prolog编程在人工智能中的应用,读者将会接触到...

    Programming-in-Haskell-2nd-Edition.pdf

    函数式编程是一种编程范式,强调用数学函数解决问题,避免了可变状态和副作用。在Haskell中,一切都是不可变的,这使得代码更易于理解和调试。Hutton通过本书引导读者理解如何通过组合简单函数来构建复杂的逻辑。 2...

    桌面计算机上利用格子Boltzmann方法的GPU计算.pdf

    LBM的标准形式涉及其基本的数学模型,该模型通过离散速度模型和碰撞规则来模拟流体行为,其并行特性源于其在空间和时间上的局部性,使得同一时刻的许多计算单元可以独立进行运算。CUDA是NVIDIA公司开发的一种编程...

    A History of Haskell - Being Lazy With Class

    哈斯克尔(Haskell)是一种非严格的、纯函数式编程语言,其名称来源于美国数学家哈斯克尔·加里(Haskell Curry)。在1987年的功能编程语言和计算机架构会议上,众多学者聚集一堂,讨论了一个令人忧虑的现象:功能...

    links:链接到有趣的学习资源

    主题包括但不限于软件工程,数学,物理学,历史和商业。 目录 引号 学一点东西是很危险的事。 喝得深一些,否则不要尝尝皮埃里亚春天的味道。 “每个人都可以学会雕刻:必须教导米开朗基罗如何做到这一点。伟大的...

    OpenGL 中的曲线

    它提供了一种标准接口,使得程序员可以创建复杂的3D图形和动画。在OpenGL中,曲线是描绘复杂形状和路径的重要工具,其中贝塞尔(Bezier)曲线和B样条(BSpline)曲线尤为常用。 **1. 贝塞尔曲线** 贝塞尔曲线是一...

    Java基础面试题 91道.pdf

    计算机无法直接理解人类的自然语言,所以需要程序员使用特定的编程语言来表达思路和方法。 2. Java编程语言:Java是一种面向对象的编程语言,它从C++语言中继承了很多特点,包括类、继承和多态。Java去掉了C++中...

    Functional Programming in Scala

    函数式编程是一种编程范式,它将计算过程视为数学函数的评估。在FP中,函数是第一等公民,意味着它们可以被赋值给变量、作为参数传递给其他函数,甚至作为返回值。这种风格强调无副作用的纯函数,即函数的输出只依赖...

    js函数式编程

    函数式编程(Functional Programming, FP)是一种编程范式,它强调程序执行的过程是通过对数学函数的应用来完成的,而不是通过改变状态和可变数据的方式。在这种范式下,函数被视为一等公民,可以作为参数传递给其他...

    ASP EXCEL导入SQL

    在REST软件架构下我们不能对于XML文件进行序列化处理,这样程序员必须要使用自己的XML绑定框架。而以序列化的JavaScript对象为基础的JSON已经获得了广泛认可,它被认为能以远比XML更好的方式来序列化和传输简单数据...

    功能编程

    功能编程是一种编程范式,它强调计算应被视为数学函数的求值,而不是对状态的改变或命令的执行。在功能编程中,程序是通过组合纯函数(不产生副作用且仅依赖于其输入的函数)来构建的。这种编程风格提供了可预测性、...

    2021_Matf-Git:Git u Haskellu

    【描述】"2021_Matf-Git Git u Haskellu" 可能是指2021年某个数学与计算机科学相关的项目或研讨会,重点是将Git的命令和功能实现于Haskell中。这可能涉及到编写Haskell库来模拟Git操作,或者用Haskell构建一个与Git...

    DynaJ-开源

    对于想要使用DynaJ进行游戏开发的Java程序员,需要掌握Java语言基础,了解基本的图形学原理,以及可能涉及的物理、数学知识。同时,学习DynaJ的API文档和示例代码是快速上手的关键。此外,参与开源社区的讨论和贡献...

Global site tag (gtag.js) - Google Analytics