什么是计算机思维,它与数学思维有什么本质的不同?
计算机思维不同于专业的计算机科学,计算机科学是一门专门用来解决软件工程化或建立数据模型来解决问题的学科,而计算机思维是用于培养一种解决问题的能力。计算机思维主要分为以下几种:
分解。在现实生活中,我们经常会遇见一些大问题。计算机思维通过一种把大问题分解成小问题的方式来建立分解的思维方式,把一个看起来困难的问题重新阐释成一个我们知道问题怎样解决的方法。
流程思考。通过在计算机语言里的流程控制逻辑来思考,预知和分析流程,通过逻辑思考来分析流程里可能出现的条件,预知流程最后能不能解决问题。
模式识别和抽象。模式识别是把许多物体进行差异识别,找出相同的部分和有区别的部分。在通过模式识别后,需要排除掉不必要的细节,把相同特性的部分抽象出来,每一个继承这种抽象部分的物体都会拥有这样相同的属性。比如,吃这个动作是所有动物都是拥有的行为特征,不管是哺乳动物还是水生动物。而水生动物即可以继承吃这个行为又都有会游泳的特性。
算法和评估。产生具体流程,通过一步一步的算法流程实现来理清步骤和规则。真实的世界是有规则和流程的,处理一个问题也有不同的方式。我们通过对算法的实现进行评估,哪个是最有效率和最经济的,它和经济学研究的如何进行折衷选择是非常相同。
在建立这种思维模式时,编程通过设计和制作程序来建立创造与创新能力。在编程的过程中都会遇到各种各样的问题,也在训练我们找到问题的关键点并修复问题的能力。在解决问题的时候会面临未知的问题,这时候毅力成了决定能不能解决问题的关键。宾夕法尼亚大学的教授安琪拉李达克沃斯做了几年的研究后发现决定成功的因素既不是成绩,也不是天分,而是毅力。可见毅力是成功的关键。同时,在编程的过程当中,需要团队协同解决问题,需要沟通和协作能力。
计算机思维是一种普适思维方法和基本技能,它通过建立目标,分析设计,理清实现目标需要的步骤并实现,发现问题和解决问题的一系列步骤来建立一种思维方式。通过这种思维训练的人能更好地来应对未来生活的挑战。
计算机思维和数学思维,都包括了抽象和逻辑。
数学的抽象,在于剥离具体。数学研究从公理出发,可以变成纯思维的活动,和具体的的现实脱离关系。数学上的人为定义,就是为了尽可能给出范围明确,不冗余的信息抽象。以后在利用这些信息,得出范围明确不冗余的抽象信息(证明的过程),如此反复。可见这里,数学需要的是一个自洽信息结构和关系。这些信息是架空具体和现实的。虽然,数学在极力的寻找关系,但这个行为发生在圈定好的有限范围内,由层层已知的定理和定义的护栏内。
计算机思维的抽象,在于映射具体。计算机是用来模拟现实和解决现实问题的。所以,计算机思维是和现实极为紧密的,而现实的关系是错综复杂的。我们无法避免信息冗余,乱入的信息随机出人意料的自由组合。这也是为什么,数学正确和错误清晰而明确。计算机无法保证正确,只能说目前没有错误,bug永远存在需要不断的修复。现实变化了,计算机的思维模型就要跟着变化。
数学的抽象,全在于思维的目的和证明猜想的必要。计算机思维的抽象,在于需要解决的问题和模拟的程度。有相似的地方,但最大的区别在于,计算机思维需要有生活的理解,有对现实问题的体验经历,个人的世界观和品位生活的能力有所关联。数学对现实要求不高,大数学家可以是疯子,社交障碍,精神分裂,抑郁症。但,计算机科学家顶多是个同性恋。
关于逻辑。其实,逻辑就是事物之间的关系,而掌握了关系的触发条件,就被看成规律。为什么按照逻辑,应该是这样的,为什么你的逻辑是对的,我的逻辑就是错的。就是因为逻辑本质的关系是物质固有的,在相同的环境和姿势条件下,关系所呈现的规律被观察,被体验,被总结,理解并记住。每每当我们对规律有了新的认识,相当于重新定义了关系,过去的逻辑就会被推翻,建立新的逻辑。逻辑推理,就是对关系的猜测,猜对了关系就是规律,猜错了就是毫无逻辑。
数学研究结构和关系,而现实世界就是由结构和关系构成。这里就是有意思的地方了,现实是完美运行的结构和关系,数学是在人脑里模拟探索的结构和关系。所以,数学是计算机科学的工具。当计算机科学在某个方面无法抽象和映射了,就需要等待数学同步意淫出来和现实世界一样的结构和关系,比如人工智能就是。现实在随机发展,数学在随机猜想,而数学又是现实的一部分,这又像是计算机运行的原理,充满了递归。人脑像个计算机,人脑也像个宇宙,宇宙发明了人类,人类发明了计算机,人类能否用计算机递归发明人脑。现在不就在这个方向发展么?
计算能力不是产生智能的本质原因。人类大脑的计算能力有限却有逻辑推理能力。目前计算机的运算能力远远超过人类的运算能力,却无法产生类似的学习和逻辑推理能力。但有一点计算机和人脑是一致的,就是信息通过二进制0和1(比特)来存储传递和表达。算法和结构有一个关系,就是结构越复杂算法就可以越简单,结构越简单那么算法就需要越复杂。所以,人类大脑的智能是因为大脑的结构非常复杂。对比计算机的结构如此的简单,是把复杂的算法都转移到了程序设计上面,也就是让人类的大脑来产生。未来人工智能能够像人类靠近的话,需要的不是计算能力而是一个复杂的硬件结构。并且人类的逻辑思维和智能的演变和人类使用的语言密切相关,所以人工智能也是需要配套的和人类语言差不多的编程语言出现。当然,这都是我的猜测和理解。是思考人类智能本身产生的,不排除计算机本身发展出有别于人类智能模式的智能,比如变形金刚。
关于编程和数学的问题。虽然,数学是计算机的工具,在思维的本源上有相似和共同性。但是,学习和掌握一个技能需要练习和时间,需要在大脑中训练出特定的结构。纵然有了相同的基础结构,但是要想做的更好发展的更好需要的是训练和时间。
纵然,数学是工具是基础是上层的依赖。并不是说,数学高于一切,优于一切是最强大的。最基础的并不是最强大的,是最必要的最开始的。比如,沙子是建筑的基础但不能代表建筑的价值。无机物是有机物的基础,有机物是生命的基础,但生命的价值放在那里。发展的过程,环环相扣,关系的道路上谁也少不了谁。基础代表必要,发展才是未来。
最后,比特是信息的基本单位,结构和关系是信息的属性。计算机的伟大之处,就是在于创造了比特的概念,又开始用比特去描述世界,万物皆比特。
结构是固有存在的,是信息的排列组合。关系是观察者从某一个角度看到的排列组合,并且这个角度看到的是可以被观察者所理解的。这里的理解包含可感知,有些物质的排列组合所呈现出来的关系无法被感知(可展开想象)。所以不同的角度看相同的结构会有不同的关系。