数学的作用是减少环节,简化计算。
如1+1+1 = 1*3
从信息学角度,就是压缩冗余的信息。
程序开发也是类似的原理,有很多环节可以进行压缩,比如循环可以压缩重复的字句,函数可以压缩重复的算法。
既然如此,那么一个问题,必然有经过压缩和没有经过压缩的程序表示形式,优秀的程序应该是精简的。
但是,一个问题也必然有其无法压缩的复杂性,就如永远无法压缩一个非0字节的文件到0字节.
借助这些特征,属性,我们可以看清程序和数学之间的一些关系。数学是一套系统的压缩理论,把有着重复结构的初级表示形式,转化为高度统一的高层表示形式。程序员可以借助数学工具,对具体问题的解进行优化,得到简化后的程序代码。但是,数学这套工具是应对人类大脑而开发的,它针对人类不擅长计算的特点而设计,计算机是擅长计算的,所以数学工具需要根据计算机的特点做调整。
1+1+1 这种低级形式对人类来说有点困难,所以产生了1*3这种高度抽象的形式,但是计算对计算机很轻松,因而计算机并不排斥简单的形式。
数学和程序之间的分歧是,数学总是在追求更高级的形式,以用一个简易的方式解决某个片段,而程序却需要直接面对问题本身的复杂性,即数学在追求深度,而程序讲究的是广度。数学研究的是某一特定问题,将问题细分,进行专业化的研究,而程序总是去解决具体的需求,他是各种问题的集合体。