早晨突然的一个感觉。
在程序员的世界里,存在着数学家和物理学家。
先看看百度百科的相关解释:
数学:
数学是研究数量、结构、变化以及空间模型等概念的一门学科。透过抽象化和逻辑推理的使用,由计数、计算、量度和对物体形状及运动的观察中产生。数学家们拓展这些概念,为了公式化新的猜想以及从合适选定的公理及定义中建立起严谨推导出的真理。
物理:
在物理学的领域中,研究的是宇宙的基本组成要素:物质、能量、空间、时间及它们的相互作用;借由被分析的基本定律与法则来完整了解这个系统。物理在经典时代是由与它极相像的自然哲学的研究所组成的,直到十九世纪物理才从哲学中分离出来成为一门实证科学。
数学对应于算法。物理对应于面向对象。
算法大师精于从数据里面通过精巧的计算,得到我们所预期的结果。
而OO大师则精于构造一个***的系统,充斥着类、属性、方法、事件。
数学是人类最古老的一门科学了。物理是后辈。同样,在计算机世界里,算法是从这个世界被创造的那天起就存在并且将永远存在下去的。
离开了数学,物理可能就变成了哲学,甚至不能算上一门科学了。同样,离开了算法,面向对象也会失色很多。
之所以发这个博文,以及早上会出现的这个想法。因为一直以来有一个问题:
算法 + 数据结构 = 程序
这个老套的、经典的,你又无法证明他不对的公式,驱使一代又一代的程序员从学习编程的***天就去努力学习算法。驱使一代又一代的程序员从一开始就认定一定要学通数据结构。
但是世界早已经改变了。
我们已经有面向对象这个东西了。“物理时代”已经到来了。
很明显,物理学专家的数学能力一定比一般人要强。拥有较强数学能力的物理学家可能会有更大的成就。
但是多数物理学家一定不会是大数学家。毕竟大家术业有专攻的。
同样,一个人同时有较高的算法和OO能力是可能的。但是同时是算法和OO大师是很难的。因为这两者在看待客观世界的时候,眼睛里看到的东西是不同的。
学习编程,不能不学习算法。只是看清楚自己的能力、兴趣和特长。
然后选择自己成为一个数学家,或者物理学家。
***:一家之言,仅供参考。呵呵。
原文链接:http://www.cnblogs.com/Chinese-xu/archive/2011/06/16/2082302.html
【编辑推荐】