High&NewTech:一文了解计算机思维、数学思维的本质区别,以及算法和程序的认知比较
High&NewTech:一文了解计算机思维、数学思维的本质区别,以及算法和程序的认知比较
导读
本文章论述均为知识分享和传播,欢迎不同见解者,前来华山论剑、讨论探究,求同存异!
计算思维是一种递归思维,它是利用启发式推理来寻求解答,是按照计算机科学领域所特有的解决方式,对问题进行抽象和界定,通过量化、建模、设计算法和编程等方法,形成计算机可处理的解决方案。而数学思维是人的大脑的思维,解决问题的方式是人脑所擅长的抽象、归纳、类比、推理、演绎和逻辑分析等;计算思维同样是人的大脑的思维,但解决问题却是在数学思维的基础上,运用计算机科学领域的思想、原理与方法,采用计算工具能够实现的方式来进行。
算法思想并不等同于计算思维,它需要考虑更加实际的“计算”问题。计算思维是一种抽象的思维活动,算法则是把这种思维活动具象化,描述成具体的方法与步骤。构建计算思维活动的基本要素是“由问题引发思维、由思维产生算法、由算法形成程序”。
数学的抽象,在于剥离具体。计算机思维的抽象,在于映射具体。 数学的抽象,全在于思维的目的和证明猜想的必要。计算机思维的抽象,在于需要解决的问题和模拟的程度。有相似的地方,但最大的区别在于,计算机思维需要有生活的理解,有对现实问题的体验经历,个人的世界观和品位生活的能力有所关联。数学对现实要求不高,大数学家可以是疯子,社交障碍,精神分裂,抑郁症。但,计算机科学家顶多是个同性恋。
总结,对的能证明的就是数学,对的不能证明的就是哲学(一旦证明了就又变成了数学),无法解释的我们还有神学。
可以转发,但禁止任何形式的直接粘贴复制!
关于计算思维
计算思维是运用计算机科学的基础概念进行问题求解、系统设计、以及人类行为理解等涵盖计算机科学之广度的一系列思维活动,由周以真于2006年3月首次提出。2010年,周以真教授又指出计算思维是与形式化问题及其解决方案相关的思维过程,其解决问题的表示形式应该能有效地被信息处理代理执行。
2006年3月,美国卡内基·梅隆大学计算机科学系主任周以真(Jeannette M. Wing)教授在美国计算机权威期刊《Communications of the ACM》杂志上给出,并定义的计算思维(Computational Thinking)。周教授认为:计算思维是运用计算机科学的基础概念进行问题求解、系统设计、以及人类行为理解等涵盖计算机科学之广度的一系列思维活动。
计算思维吸取了问题解决所采用的一般数学思维方法,现实世界中巨大复杂系统的设计与评估的一般工程思维方法,以及复杂性、智能、心理、人类行为的理解等的一般科学思维方法。
计算思维建立在计算过程的能力和限制之上,由人由机器执行。计算方法和模型使我们敢于去处理那些原本无法由个人独立完成的问题求解和系统设计。
计算思维中的抽象完全超越物理的时空观,并完全用符号来表示,其中,数字抽象只是一类特例。与数学和物理科学相比,计算思维中的抽象显得更为丰富,也更为复杂。数学抽象的最大特点是抛开现实事物的物理、化学和生物学等特性,而仅保留其量的关系和空间的形式,而计算思维中的抽象却不仅仅如此。
关于操作模式。计算思维建立在计算过程的能力和限制之上,由人由机器执行。计算方法和模型使我们敢于去处理那些原本无法由任何个人独自完成的问题求解和系统设计。计算思维直面机器智能的不解之谜:什么人类比计算机做得好?什么计算机比人类做得好?最基本的问题是:什么是可计算的?迄今为止我们对这些问题仍是一知半解。
- 计算思维是一种递归思维:它是并行处理。它是把代码译成数据又把数据译成代码。它是由广义量纲分析进行的类型检查。对于别名或赋予人与物多个名字的做法,它既知道其益处又了解其害处。对于间接寻址和程序调用的方法,它既知道其威力又了解其代价。它评价一个程序时,不仅仅根据其准确性和效率,还有美学的考量,而对于系统的设计,还考虑简洁和优雅。
- 计算思维利用启发式推理来寻求解答:它是在不确定情况下的规划、学习和调度。它就是搜索、搜索、再搜索,结果是一系列的网页,一个赢得游戏的策略,或者一个反例。计算思维利用海量数据来加快计算,在时间和空间之间,在处理能力和存储容量之间进行权衡。
我们运用一个思维模型时,要经历这样三个阶段:建模,解模,解释。与之相对应的则是抽象思维、演绎思维、发散思维。通过抽象,形式化,将我们所需要研究的问题进行归纳,用一种范式表达出来,建立模型;然后通过严密的演绎推理,解出这个模型;最后,使用发散思维,将蕴含于这个模型中的意义用自然语言表述出来。
计算机思维 VS 数学思维
数学思维的特征是概念化,抽象化和模式化,在解决问题时强调定义和概念,明确问题条件,把握其中的函数关系,通过抽象、归纳、类比、推理、演绎和逻辑分析,将概念和定义、数学模型、计算方法等与现实事物建立联系,用数学思想解决问题。
计算思维是按照计算机科学领域所特有的解决方式,对问题进行抽象和界定,通过量化、建模、设计算法和编程等方法,形成计算机可处理的解决方案。
对比后可以发现,数学思维是人的大脑的思维,解决问题的方式是人脑所擅长的抽象、归纳、类比、推理、演绎和逻辑分析等;计算思维同样是人的大脑的思维,但解决问题却是在数学思维的基础上,运用计算机科学领域的思想、原理与方法,采用计算工具能够实现的方式来进行。
通过解题理解两者区别
比如求解S=1+2+3+……+ n。
数学思维,是对问题进行抽象和推理,归纳成自然数求和公式:S= n *(1+ n)/2 ,这种处理方式非常符合人类“依靠大脑进行运算”的特点。
计算思维,同样是对问题进行抽象和推理,却采用符合计算机工作特性、执行效率更高的“直接从1累加到n”的处理方式。 这就是两者区别!
计算思维与算法及程序设计
算法思想并不等同于计算思维,它需要考虑更加实际的“计算”问题。计算思维是一种抽象的思维活动,算法则是把这种思维活动具象化,描述成具体的方法与步骤。
程序设计则是算法在计算机上的正确实现,它是计算思维的最终结果。
例如同样的问题:求解:S=1+2+3+……+ n。
- 计算思维:通过计算思维可以得到“直接从1累加到n”的解决方案;
- 算法:算法则要考虑采用何种方法、通过何种步骤来实现这个方案,比如,如何输入与输出,怎样用循环实现累加等;
- 程序设计:程序设计是将算法所描述的方法与步骤转换成计算机所能理解和操作的指令代码,比如使用“For/Next”语句进行循环、用“S=S+i”赋值语句实现累加等,使程序能够在计算机上运行并获得正确结果。
由此看来,数学思维是计算思维的基础,计算思维是解决问题的一种思考方式,算法是对计算思维的具体设计,程序设计则用于实现算法设计。
综上所述,构建计算思维活动的基本要素是“由问题引发思维、由思维产生算法、由算法形成程序”,它是体现计算思维的关键,是人脑的独立思考活动,所形成的问题解决方案是多样的,并且不受编程语言的限制,也就是我们所说的“一个问题可以有不同的解决方案,一个方案可以有不同的算法设计,一个算法可以用不同的编程语言来实现”。因此,在教学中应该着重体现利用计算思维解决问题的完整过程,而不是单一的教会学生某种编程语言。
计算机思维和数学思维,都包括了抽象和逻辑。
抽象对比
数学的抽象,在于剥离具体。数学研究从公理出发,可以变成纯思维的活动,和具体的的现实脱离关系。数学上的人为"定义",就是为了尽可能给出范围明确,不冗余的信息抽象。以后在利用这些信息,得出范围明确不冗余的抽象信息(证明的过程),如此反复。可见这里,数学需要的是一个自洽信息结构和关系。这些信息是架空具体和现实的。虽然,数学在极力的寻找关系,但这个行为发生在圈定好的有限范围内,由层层已知的定理和定义的护栏内。
计算机思维的抽象,在于映射具体。计算机是用来模拟现实和解决现实问题的。所以,计算机思维是和现实极为紧密的,而现实的关系是错综复杂的。我们无法避免信息冗余,乱入的信息随机出人意料的自由组合。这也是为什么,数学正确和错误清晰而明确。计算机无法保证正确,只能说目前没有错误,bug永远存在需要不断的修复。现实变化了,计算机的思维模型就要跟着变化。
数学的抽象,全在于思维的目的和证明猜想的必要。计算机思维的抽象,在于需要解决的问题和模拟的程度。有相似的地方,但最大的区别在于,计算机思维需要有生活的理解,有对现实问题的体验经历,个人的世界观和品位生活的能力有所关联。数学对现实要求不高,大数学家可以是疯子,社交障碍,精神分裂,抑郁症。但,计算机科学家顶多是个同性恋。
逻辑
关于逻辑。其实,逻辑就是事物之间的关系,而掌握了关系的触发条件,就被看成规律。为什么按照逻辑,应该是这样的,为什么你的逻辑是对的,我的逻辑就是错的。就是因为逻辑本质的关系是物质固有的,在相同的环境和姿势条件下,关系所呈现的规律被观察,被体验,被总结,理解并记住。每每当我们对规律有了新的认识,相当于重新定义了关系,过去的逻辑就会被推翻,建立新的逻辑。逻辑推理,就是对关系的猜测,猜对了关系就是规律,猜错了就是毫无逻辑。
数学研究结构和关系,而现实世界就是由结构和关系构成。这里就是有意思的地方了,现实是完美运行的结构和关系,数学是在人脑里模拟探索的结构和关系。所以,数学是计算机科学的工具。当计算机科学在某个方面无法抽象和映射了,就需要等待数学同步意淫出来和现实世界一样的结构和关系。比如人工智能就是。 现实在随机发展,数学在随机猜想,而数学又是现实的一部分,这又像是计算机运行的原理,充满了递归。人脑像个计算机,人脑也像个宇宙,宇宙发明了人类,人类发明了计算机,人类能否用计算机递归发明人脑。现在不就在这个方向发展么?
计算能力不是产生智能的本质原因(这句话,博主非常赞同!)。人类大脑的计算能力有限却有逻辑推理能力。目前计算机的运算能力远远超过人类的运算能力,却无法产生类似的学习和逻辑推理能力。但有一点计算机和人脑是一致的,就是信息通过二进制0和1(比特)来存储传递和表达。算法和结构有一个关系,就是结构越复杂算法就可以越简单,结构越简单那么算法就需要越复杂。所以,人类大脑的智能是因为大脑的结构非常复杂。对比计算机的结构如此的简单,是把复杂的算法都转移到了程序设计上面,也就是让人类的大脑来产生。未来人工智能能够像人类靠近的话,需要的不是计算能力而是一个复杂的硬件结构。并且人类的逻辑思维和智能的演变和人类使用的语言密切相关,所以人工智能也是需要配套的和人类语言差不多的编程语言出现(这就是博主说过的,走向AGI必须要有创新性的定义)。当然,这都是我的猜测和理解,是思考人类智能本身产生的,不排除计算机本身发展出有别于人类智能模式的智能,比如变形金刚。
编程与数学
关于编程和数学的问题。虽然,数学是计算机的工具,在思维的本源上有相似和共同性。但是,学习和掌握一个技能需要练习和时间,需要在大脑中训练出特定的结构。纵然有了相同的基础结构,但是要想做的更好发展的更好需要的是训练和时间。
纵然,数学是工具是基础是上层的依赖。并不是说,数学高于一切,优于一切是最强大的。最基础的并不是最强大的,是最必要的最开始的。比如,沙子是建筑的基础但不能代表建筑的价值。无机物是有机物的基础,有机物是生命的基础,但生命的价值放在那里。发展的过程,环环相扣,关系的道路上谁也少不了谁。基础代表必要,发展才是未来。
计算机中的比特
比特是信息的基本单位,结构和关系是信息的属性。计算机的伟大之处,就是在于创造了比特的概念,又开始用比特去描述世界,万物皆比特。
结构是固有存在的,是信息的排列组合。关系是观察者从某一个角度看到的排列组合,并且这个角度看到的是可以被观察者所理解的。这里的理解包含可感知,有些物质的排列组合所呈现出来的关系无法被感知(可展开想象)。所以不同的角度看相同的结构会有不同的关系。
延伸
总结,对的能证明的就是数学,对的不能证明的就是哲学(一旦证明了就又变成了数学),无法解释的我们还有神学。
参考文章
百度百科—计算思维
计算机思维,数学思维,本质的区别
从一道题目的解法看数学思维、计算思维、算法及编程之间的关系