计算机思维和数学思维,都包括了逻辑和抽象。
关于抽象
数学思维的抽象,在于剥离具体。
数学研究从公理出发,可以变成纯思维的活动,和具体的现实脱离关系。数学上人为的“定义”和“创造”,就是为了尽可能的给出范围明确,不冗余的信息抽象。然后再利用这些信息,通过逻辑证明,得出范围明确不冗余的抽象结论,接着这些结论就扩展了人为的“定义”和“创造”,以后就可以推理证明出更多的结论,如此反复。
可见,数学需要的是一个自洽的信息结构和关系,并且这些信息是架空具体和现实的。虽然,数学在极力的探索结构寻找关系,但这个行为是发生在有限范围内,由层层已知的定义和定理,圈定好的护栏内的。
而计算机思维的抽象,在于映射具体。
计算机是用来模拟现实和解决现实问题的。所以,计算机思维是和现实极为紧密的,而现实的关系又是错综复杂的。所以,我们无法避免信息的冗余,乱入的信息会随机出,无法意料的自由组合。
这也就是为什么,数学的正确和错误清晰而明确,但计算机就无法保证绝对的正确,只能说目前没有错误——Bug会永远存在,且需要不断的修复。因为现实变化了,计算机映射的思维模型,就必须要跟着一切变化。
可见,数学思维的抽象——服务于寻找逻辑和证明猜想,而计算机思维的抽象——服务于解决现实问题和提高模拟现实的程度。
这两种抽象思维的相似之处,就是都是为了找到事物之间的本质关联,而不同之处就在于,计算机思维需要有对生活的理解,有对现实问题的体验经历,并且和个人品位生活的能力息息相关,数学思维则对现实生活的要求不高。
所以,大数学家可以是疯子、社交障碍、精神分裂、或是抑郁症,但计算机科学家则必须从现实出发,经过抽象解决问题后,再回归到现实——这就意味着不能有与现实格格不入的心理特质。
关于逻辑
其实,逻辑就是事物之间的关系,而掌握了关系的触发条件,就会被看成规律。为什么按照逻辑,应该是这样的,为什么你的逻辑是对的,为什么他的逻辑就是错的,就是因为逻辑本质的关系是物质所固有的(但不同的角度看同样的关系,可能会有不同的逻辑)。
在相同的环境和条件下,关系所呈现的规律被观察、被体验、被总结、被验证,从而最后被理解和掌握。每当我们对规律有了新的认识,就相当于重新定义了关系,过去的逻辑就会被推翻,新的逻辑就会被建立。那么,逻辑推理,就是根据经验数据,对关系进行的猜测,而猜测得到了论证就是规律,否则就是毫无逻辑——代表着逻辑错误。
事实上,数学研究的是结构和关系,而现实世界就是由结构和关系所的构成。(数学的本质是什么?数学与物理有什么内在的关联?(修订版))
这里就是有意思的地方了,现实世界是完美运行的结构和关系,而数学是在人脑里模拟探索的结构和关系。而当计算机科学在某个方面或领域,遇到瓶颈,无法找到正确的抽象和映射路径的时候,就需要等待数学同步“意淫”出来,和现实世界一样逻辑原理的结构和关系,比如物理模拟算法的实现(如射线碰撞检测)就依赖于几何空间关系的定理。于是这样,数学就成为计算机科学的工具和基础——当然数学也可以解决计算机科学之外的,各种各样的现实问题。
然而,现实世界是在随机的发展,数学是在随机的猜想,而数学又是现实的一部分,这就像是计算机运行的原理——充满了递归。那么,人脑像个计算机,人脑也像个宇宙,宇宙发明了人类,人类发明了计算机,人类能否用计算机递归发明人脑(人工智能大脑),现在不就在这个方向发展吗?(宇宙的奥秘:递归、分形、循环)
另外,值得说明的是,在数学领域里,有些地方是不需要逻辑参与的。
- 比如,已经被证明的结论和公式,独立来看其本身是没有逻辑的,对其证明的过程才能体现出逻辑。
- 再比如,公理假设,是不需要证明的,这是最基础假定正确的前提,其论述必然不需要逻辑,需要的是共识和直觉。就像欧式几何直接给出的5大公设,是没有逻辑的,而只有直觉上是正确的。
- 还有人为的定义,如自然数——没有逻辑可以导出自然数,就是人为规定的。(自然数来自于映射现实的计数需要)
计算能力与智能
计算能力并不是产生智能的本质原因。
人类大脑的计算能力有限却有逻辑推理能力。目前计算机的计算能力远远超过人类的计算能力,却无法产生类似的学习和逻辑推理的能力。但有一点计算机和人脑是一致的,就是信息是通过二进制的0和1(比特)来存储传递和表达的。因为大脑神经网络中的电脉冲信息,具有正负的电位变化,这对应了二进制的0和1。
而算法和结构有一个关系,就是结构越复杂算法就可以越简单,结构越简单那么算法就需要越复杂。所以,人类大脑的智能是因为大脑的结构非常复杂,对比计算机的结构如此的简单,是把复杂的算法都转移到了程序设计上面,也就是让人类的大脑来产生。
所以,未来人工智能能够像人类靠近的话,需要的不是计算能力而是一个复杂的硬件结构。并且人类的逻辑思维和智能的演变,与人类使用的语言密切相关,因为人类的思考能力取决于,是否知道能够表达该思想的词汇,如果不知道这些词汇,就无法表达这种思想 。
那么,或许人工智能也是需要配套的和人类语言差不多的编程语言出现。当然,也不排除未来人工智能可以发展出有别于人类智能模式的智能。(人工智能的本质和意义:未来机器终将觉醒)
关于编程和数学
虽然,数学是计算机的工具,在思维的本源上有相似性和共同性——编程语言与数学语言。但编程和数学不同的思维模型,说明了它们在上层需要构建各自不同的技能树。而学习和掌握一个技能点需要花时间练习,从而在大脑中训练出特定的结构。
所以,编程与数学不可能做到学一个,另一个就自然而然地掌握了。但两者的依赖关系是:编程需要数学,数学则不需要编程。
另外,纵然数学是工具、是基础、是上层的依赖,但并不是说,数学就高于一切,优于一切,是最强大的。因为,最基础是必要的最开始,但不一定就是最强大的。比如,沙子是建筑的基础,但不能代表建筑的价值;无机物是有机物的基础,有机物是生命的基础,但生命的价值必然是的高于无机物。
可见,发展的过程,环环相扣,关系的道路上谁也少不了谁,基础代表必要,发展则代表了未来。
总结
结构——是事物固有存在的,关系——是观察者从某一个角度观察结构所看到的结果,并且这个角度看到的关系,是可以被观察者所理解和可感知的。
这里的可感知,即是可以被人体的感觉系统(如视觉、听觉、触觉等)所处理的。那么,就肯定存在,有些(甚至是大部分)结构所呈现出来的关系,是无法被理解和可感知的。而从不同的角度去观察相同的结构,也会得到不同的关系。
最后,比特是信息的基本单位,结构和关系需要用信息去描述,而逻辑是结构信息的属性。计算机的伟大之处,就在于以二进制系统为基础,并使用比特去描述和映射世界,而万物皆比特。