什么计算机语言要求数学高?
要求高的不是“数学”,而是“数理逻辑”。 很多人以为程序员需要很强的数学功底是因为编程使用了很多的算法。但是事实上算法之所以被称为“算法”,是因为它们被用来解决某个问题(比如求最大公约数)而并不一定要多么高效和复杂——当然,好的算法往往是既有效率又简单的。因此很多算法都没有多少计算量。
举个例子,如果你需要用一个时间复杂度为O(n^2)的算法去完成一件小事,那么即使它只需要运行10秒你也会觉得它的执行效率很低。然而实际上它可能只比你的操作系统从虚拟内存中读取一个数据所需要的时间还要多一点点而已。 另一方面,计算机本身是一种很“笨”的工具。它无法像人一样进行模糊判断、或者做过多思考。所以所谓的“复杂的计算任务”对于计算机来说就意味着“需要大量人工干预来确认结果”,而这种事情是程序员永远不愿做的。这就是为什么几乎所有的程序都要尽量实现“通过输入参数直接得到输出结果”——这是只有人类才能做的事情,机器做不到。而程序员所有工作的本质其实就是通过各种方式让机器去做一些只有人才会做的“判断”和“推理”。
如果一个程序需要很多的人工输入才能得到结果,那么不管这个结果是不是人们本来希望得到的,这个程序都是低效的;反之,如果一个程序只需要非常少的输入就能得到结果,而且这些输入还是人们希望得到的,那么这个程序就是高效的。 而能够以最简单的输入得到最大化的输出正是数理逻辑里最难的问题之一。这也是为什么计算机科学里面大部分跟“人工智能”有关的内容都需要很强的数理逻辑基础的原因所在。