本文共 1982 字,大约阅读时间需要 6 分钟。
半夜三更,闲上谷歌,随手敲键,入“程序员与数学”搜索之。
我们谁都清晰的知道,一个超级厉害的程序员,他的数学绝对是很正点的。而我也能够非常体会到这一点,
我本人来说一直都认为,写程序本身不难,任何一个人都能写程序,而且都可以写的很好。我的一个主要观点
就是写程序不向 以前解数学题,你找不准正确的解答途径,那么你就得到答案就在你交出答卷的时间之外了。
然而通常,那种数学题都会有一个非常简单的算法!就在你需要来发现他们的相关的规律了。否则,你入了歧途
则就算你可算出来,我想,你也会在你算出答案之前放弃来计算它。
然而程序和解数学题不同的是,程序的运算由计算机来代替了人脑的数字模拟,而计算机的运算模拟能力是人
脑袋的好多倍了!所以就算我们用很傻B的方法来解答,他一样也能很快的计算出来而不让你有半点的觉察(在你的反映能力之类计算出来)。所以这个就决定了数学基础不大好的一样也可写出一个很好的程序出来的原因。所以我说写程序并不难,聪明人有聪明人的写法,笨人有笨人的写法,要真正的写出一高优良的程序就难了。或许我们一直停留在应用软件的开发程面上,很多内部的优化都被 编译器的设计者们做好了!所以我们在很多时候就只管实现目的,而从不管其中的过程。我甚至在有时候为了工期之类完成,也一样不会去考虑算法。就象刚学程序时候很常见的一个例子
求 1+2+3+4+.......+100的和
这样的例子
书上写的是为了表达如何来使用 循环表达式,所以用了个
for (i = 1 ;i < 1 = 100 ;i ++ ) ... { sum := sum + i;} 这样来写,然而现在我们可以很轻易的看到很多人只是单一求这样的和,而在和运算中不参杂任何其他操作还是使用的方式来写就未免显得不该了。直接一个 sum = (1+100)/50这样就可以了嘛!这也是数学啊!
如果懂得数学的话,那么很多方面我们将可让我们的程序优化又何止一个数量集啊!计算机内部全部以二进制存储,那些离散运算,如果我们能够懂的话,自己的程序又将会怎样呢!
买了一本书《高效程序的奥秘》,确实是不可多得的一本书,大家有看过的人的话,一定知道那里面的方法都是用什么方法来解决的吧!哪个方法后面不是隐含着一个数学问题!看看他的八皇后的实现方法!那个高啊!
在一个论坛上看的几段精辟的观点:
入程序这行有数年 j9f.Q]x/} T(H%t8JF /L&F&t'I%L 始二年,总和别人说程序不需要数学,只要严密的逻辑即可.对数学嗤之以鼻. :?/~ wD3k(C&l{H K3]v"I$Z�J�H9yv 再二年,总是用到数学理论,小到计算精度,大到压缩、滤波,常后悔当初没有读数学的专业,再回头啃书,心有余力不足。 ;U)Km0~sF {+_@m$I T&M 如今,虽入行五年有余六年不足,但实感该行水之深。对“计算机”之名由来,不由感慨,洋文称之为Computer,有其用意,为何不称 作:Machine?如今才算明了。我们大学读的是Computer science,而不是Coder science。而前人为让吾等后辈恰意使用,故做了层叫Code的外壳,却不曾想到,这层外壳让大部分的人,固执的认为,这就是我们接触的全部?实不 知,其实所有的一切都是因数学而生,因数学而在。其实整个计算机科学,就是数学加一层外衣。 确实如此,计算机诞生,不就是来源数学家 冯偌依曼吗?他诞生于数学,自然解决他的最好最可靠的办法也原于数学啊。
写程序就是把一个事物或者流程抽象成一个数学模型的过程,因为电脑只认数字 R2?[D~0c{'^&L "Rr1|1fD:j 你的数字知识宽度决定了你能解决的问题的宽度 ]AjG {gX rB3c8[-?au _Y H:kn 如果只做普通应用开发,高中数学足矣 4b1TyA O 4bAB*r4K 例如,一个不会三角函数的程序员,他是做不出一个小球做圆周运动的程序 &e*t&K,uq 5E1[}b;s@V'| 一个高中程序员,做不出一个贝塞尔曲线 w+Amq(A {g0t E t(QL0f8_7K? YK 没学线性代数的人,在弄3D矩阵变换时肯定很苦恼 KM h d!W$q!DKM#] kA#e%r m-Y 另外,数学知识的宽度也影响你解决问题的方法 5LX't)q)qVS 0}2r};Al p 例如没学过乘法的人,在算一个人10元钱工资,10个人共多少工资时,只会用个for循环加10次, .h/M2N*j_Oi~ K XZ V%r)J `pYre 当然他可能会认为这是很好的办法了 x |�d2d!^S9JI@ Rb O!q;xPh 但会乘法的,只要10*10就OK了 这一段说的相当的精辟,相当的实在啊。
于是,加入一个数学和程序的模块,来引入和学习一些数学知识。
转载地址:http://dhsti.baihongyu.com/