借题答一下。最近有时候也在想,到底应该怎么总结工程学科,或者更广义的,实用学科,和数学在思维上的区别?下面是我自己的一点杂想。
个人认为,最显著的区别之一是,数学在乎一个命题的真假(绝对的真值,非黑即白),而工程学科更在乎一个论述是不是(统计上)可靠的论述。
什么意思呢?举个例子,“所有整数都是合数”,这句话是错的,但是在统计上是个可靠的论述。尤其当你取的上限N越来越大时,小于N的整数里,合数所占比例是越来越大的,并且无限趋于1. (素数定理的经典推论)工程行业的人说一句话是对的,他并不是说,这句话连一个反例都没有,而是说,反例可能存在,但是不是很多,或者反例“坏”的程度没那么严重,不会影响主要判断。
(插一句,其实“几乎所有”“几乎处处”这种概念,真的只有数学系的人会去关心。。我从来没有见过工程学科的人用这种词语。对他们来说,一个东西几乎处处成立,那么他就成立,他不成立的范围属于容许误差)
其实这也可以理解成数学和工程学科对严格性的追求不一样。我觉得工程学科不那么在乎严格性的一个重要原因是,他们本身所使用的术语可能就是没有严格定义的。。既然连词语本身定义都不清楚,怎么去谈严格的真值呢?还有一点是,他们对输出结果的正确性本来并没有那么高的期待。他们容许一定程度的误差,或者说他们本来就期待他们的算法、工序有一定的健壮性(robustness)。他们判断正确或者错误,往往不是靠严格的逻辑推理,而是半推理半经验的方式。他们有自己的一套经验知识,对于明显不符合自己经验的论述,他们就排除掉,而不是用逻辑推理式的归谬。
如果工程学科的人知道数学上一些大猜想,比如哥德巴赫猜想,黎曼猜想等等的研究现状,他们一定会觉得对这些猜想的严格证明是没什么意义的。为什么呢?黎曼猜想早已对前亿亿个零点验证过了,哥猜也已经用计算机验证到很大的数了。如果有反例,那些反例必须是非常非常大的数——但是过大的数在工程上是没有意义的。工程上只需要关心某个范围以内的有限精度的数,这个具体范围我也说不准,但我觉得对大部分工程领域, 以内、精确到小数点后5位的数应该足够用了。包括无穷这种概念,在工程上也是没有意义的——当然我不是说工程师就不能理解无穷。。对无穷的思索和探究,是人的一种认知本能;但是无穷这种超验概念本身就属于数学,属于哲学,不属于任何实用学科,关于无穷的知识基本没有任何实用价值。
最后说一说两种思维方式的局限性吧。在我看来,工程思维的局限性,主要在于过分拘泥于自身经验。工程师关心的是一个东西能不能用目前的技术手段实现出来,他的重点在于具体实现,因为这是他们天天要干的活。但是因为他们过分沉浸在现有的技术手段当中了,反而导致他们缺乏对未来的幻想。比如说吧,对50年代的计算机工程师而言,1GB应该是个没有意义的数据量——原因很简单,那个年代哪有1GB的存储器?我相信那个时代绝大部分身处技术前沿的工程师们做梦也想不到,几十年后哪怕是手机都有几个GB的内存,计算能力秒杀两层楼高的埃尼阿克。包括互联网诞生初期断言互联网没有应用前景的几个当时的计算机行业大佬也是一样——过分沉浸在现有的技术水平和认知层级了,缺乏想象力。只有少数眼界超群能力卓越的顶级工程师能瞥见未来的些许景象,但这种人往往兼具科学家气质。
至于数学思维的局限性,那就太容易被大众认知了。——缺乏实干,不接地气呗。天天琢磨一些天马行空的东西,要么就是两个无穷基数大小怎么比较(连续统假设),要么就是某个高维流形怎么怎么样。就算是被数学圈认为偏应用的PDE学科,在工程学科看来也是不接地气。我不知道真正做流体的人有多少人关心Navier Stokes方程有没有整体光滑解(七大千禧年问题之一),根据我接触的流体行业的人的情况,我感觉他们更关心有效的数值算法和真正的实验模拟结果。。