JAVA专题---计算思维

JAVA专题—计算思维

一、一谈计算思维

本文节选自 360 百科 https://baike.so.com/doc/3092926-3260084.html

2006年3月,美国卡内基·梅隆大学计算机科学系主任周以真(Jeannette M. Wing)教授在美国计算机权威期刊《Communications of the ACM》杂志上给出,并定义的计算思维(Computational Thinking)。周教授认为:计算思维是运用计算机科学的基础概念进行问题求解、系统设计、以及人类行为理解等涵盖计算机科学之广度的一系列思维活动。
以上是关于计算思维的一个总定义,周教授为了让人们更易于理解,又将它更进一步地定义为:通过约简、嵌入、转化和仿真等方法,把一个看来困难的问题重新阐释成一个我们知道问题怎样解决的方法;是一种递归思维,是一种并行处理,是一种把代码译成数据又能把数据译成代码,是一种多维分析推广的类型检查方法;是一种采用抽象和分解来控制庞杂的任务或进行巨大复杂系统设计的方法,是基于关注分离的方法(SoC方法);是一种选择合适的方式去陈述一个问题,或对一个问题的相关方面建模使其易于处理的思维方法;是按照预防、保护及通过冗余、容错、纠错的方式,并从最坏情况进行系统恢复的一种思维方法;是利用启发式推理寻求解答,也即在不确定情况下的规划、学习和调度的思维方法;是利用海量数据来加快计算,在时间和空间之间,在处理能力和存储容量之间进行折衷的思维方法。

优点内容

计算思维吸取了问题解决所采用的一般数学思维方法,现实世界中巨大复杂系统的设计与评估的一般工程思维方法,以及复杂性、智能、心理、人类行为的理解等的一般科学思维方法。

计算思维建立在计算过程的能力和限制之上,由人由机器执行。计算方法和模型使我们敢于去处理那些原本无法由个人独立完成的问题求解和系统设计。

内容

计算思维中的抽象完全超越物理的时空观,并完全用符号来表示,其中,数字抽象只是一类特例。与数学和物理科学相比,计算思维中的抽象显得更为丰富,也更为复杂。数学抽象的最大特点抛开现实事物的物理、化学和生物学等特性,而仅保留其量的关系和空间的形式,而计算思维中的抽象却不仅仅如此。

计算思维

操作模式 计算思维建立在计算过程的能力和限制之上,由人由机器执行。计算方法和模型使我们敢于去处理那些原本无法由任何个人独自完成的问题求解和系统设计。计算思维直面机器智能的不解之谜:什么人类比计算机做得好?什么计算机比人类做得好?最基本的问题是:什么是可计算的?迄今为止我们对这些问题仍是一知半解。

计算思维用途

计算思维是每个人的基本技能,不仅仅属于计算机科学家。我们应当使每个孩子在培养解析能力时不仅掌握阅读、写作和算术(Reading, wRiting, and aRithmetic–3R),还要学会计算思维。正如印刷出版促进了3R的普及,计算和计算机也以类似的正反馈促进了计算思维的传播。

计算思维是运用计算机科学的基础概念去求解问题、设计系统和理解人类的行为。它包括了涵盖计算机科学之广度的一系列思维活动。

当我们必须求解一个特定的问题时,首先会问:解决这个问题有多么困难?怎样才是最佳的解决方法?计算机科学根据坚实的理论基础来准确地回答这些问题。表述问题的难度就是工具的基本能力,必须考虑的因素包括机器的指令系统、资源约束和操作环境。

为了有效地求解一个问题,我们可能要进一步问:一个近似解是否就够了,是否可以利用一下随机化,以及是否允许误报(false positive)和漏报(false negative)。计算思维就是通过约简、嵌入、转化和仿真等方法,把一个看来困难的问题重新阐释成一个我们知道怎样解决的问题。

计算思维是一种递归思维 它是并行处理。它是把代码译成数据又把数据译成代码。它是由广义量纲分析进行的类型检查。对于别名或赋予人与物多个名字的做法,它既知道其益处又了解其害处。对于间接寻址和程序调用的方法,它既知道其威力又了解其代价。它评价一个程序时,不仅仅根据其准确性和效率,还有美学的考量,而对于系统的设计,还考虑简洁和优雅。

抽象和分解 来迎接庞杂的任务或者设计巨大复杂的系统。它是关注的分离(SOC方法)。它是选择合适的方式去陈述一个问题,或者是选择合适的方式对一个问题的相关方面建模使其易于处理。它是利用不变量简明扼要且表述性地刻画系统的行为。它使我们在不必理解每一个细节的情况下就能够安全地使用、调整和影响一个大型复杂系统的信息。它就是为预期的未来应用而进行的预取和缓存。

计算思维是按照预防、保护及通过冗余、容错、纠错的方式从最坏情形恢复的一种思维。它称堵塞为"死锁",称约定为"界面"。计算思维就是学习在同步相互会合时如何避免"竞争条件"(亦称"竞态条件")的情形。

计算思维利用启发式推理来寻求解答,就是在不确定情况下的规划、学习和调度。它就是搜索、搜索、再搜索,结果是一系列的网页,一个赢得游戏的策略,或者一个反例。计算思维利用海量数据来加快计算,在时间和空间之间,在处理能力和存储容量之间进行权衡。

考虑下面日常生活中的事例:当你女儿早晨去学校时,她把当天需要的东西放进背包,这就是预置和缓存;当你儿子弄丢他的手套时,你建议他沿走过的路寻找,这就是回推;在什么时候停止租用滑雪板而为自己买一付呢?这就是在线算法;在超市付帐时,你应当去排哪个队呢?这就是多服务器系统的性能模型;为什么停电时你的电话仍然可用?这就是失败的无关性和设计的冗余性;完全自动的大众图灵测试如何区分计算机和人类,即CAPTCHA程序是怎样鉴别人类的?这就是充分利用求解人工智能难题之艰难来挫败计算代理程序。

计算思维将渗透到我们每个人的生活之中,到那时诸如算法和前提条件这些词汇将成为每个人日常语言的一部分,对"非确定论"和"垃圾收集"这些词的理解会和计算机科学里的含义驱近,而树已常常被倒过来画了。

我们已见证了计算思维在其他学科中的影响。例如,机器学习已经改变了统计学。就数学尺度和维数而言,统计学习用于各类问题的规模仅在几年前还是不可想象的。各种组织的统计部门都聘请了计算机科学家。计算机学院(系)正在与已有或新开设的统计学系联姻。

计算机学家们对生物科学越来越感兴趣,因为他们坚信生物学家能够从计算思维中获益。计算机科学对生物学的贡献决不限于其能够在海量序列数据中搜索寻找模式规律的本领。最终希望是数据结构和算法(我们自身的计算抽象和方法)能够以其体现自身功能的方式来表示蛋白质的结构计算生物学正在改变着生物学家的思考方式。类似地,计算博弈理论正改变着经济学家的思考方式,纳米计算改变着化学家的思考方式,量子计算改变着物理学家的思考方式。

这种思维将成为每一个人的技能组合成分,而不仅仅限于科学家。普适计算之于今天就如计算思维之于明天。普适计算是已成为今日现实的昨日之梦,而计算思维就是明日现实。

特性

1.概念化,不是程序化

计算机科学不是计算机编程。像计算机科学家那样去思维意味着远不止能为计算机编程,还要求能够在抽象的多个层次上思维。

2.根本的,不是刻板的技能

根本技能是每一个人为了在现代社会中发挥职能所必须掌握的。刻板技能意味着机械的重复。具有讽刺意味的是,当计算机像人类一样思考之后,思维可就真的变成机械的了。

3.是人的,不是计算机的思维方式

计算思维是人类求解问题的一条途径,但决非要使人类像计算机那样地思考。计算机枯燥且沉闷,人类聪颖且富有想象力。是人类赋予计算机激情。配置了计算设备,我们就能用自己的智慧去解决那些在计算时代之前不敢尝试的问题,实现"只有想不到,没有做不到"的境界。

4.数学和工程思维的互补与融合

计算机科学在本质上源自数学思维,因为像所有的科学一样,其形式化基础建筑于数学之上。计算机科学又从本质上源自工程思维,因为我们建造的是能够与实际世界互动的系统,基本计算设备的限制迫使计算机学家必须计算性地思考,不能只是数学性地思考。构建虚拟世界的自由使我们能够设计超越物理世界的各种系统。

5.是思想,不是人造物

不只是我们生产的软件硬件等人造物将以物理形式到处呈现并时时刻刻触及我们的生活,更重要的是还将有我们用以接近和求解问题、管理日常生活、与他人交流和互动的计算概念;而且,面向所有的人,所有地方。 当计算思维真正融入人类活动的整体以致不再表现为一种显式之哲学的时候,它就将成为一种现实。

编辑本段总结

许多人将计算机科学等同于计算机编程。有些家长为他们主修计算机科学的孩子看到的只是一个狭窄的就业范围。许多人认为计算机科学的基础研究已经完成,剩下的只是工程问题。当我们行动起来去改变这一领域的社会形象时,计算思维就是一个引导着计算机教育家、研究者和实践者的宏大愿景。我们特别需要抓住尚未进入大学之前的听众,包括老师、父母和学生,向他们传送下面两个主要信息:

1.智力上的挑战和引人入胜的科学问题依旧亟待理解和解决。这些问题和解答仅仅受限于我们自己的好奇心和创造力;同时一个人可以主修计算机科学而从事任何行业。一个人可以主修英语或者数学,接着从事各种各样的职业。计算机科学也一样。一个人可以主修计算机科学,接着从事医学、法律、商业、政治,以及任何类型的科学和工程,甚至艺术工作。

2.机科学的教授应当为大学新生开一门称为"怎么像计算机科学家一样思维"的课程,面向所有专业,而不仅仅是计算机科学专业的学生。我们应当使入大学之前的学生接触计算的方法和模型。我们应当设法激发公众对计算机领域科学探索的兴趣,而不是悲叹对其兴趣的衰落或者哀泣其研究经费的下降。所以,我们应当传播计算机科学的快乐、崇高和力量,致力于使计算思维成为常识。

二、再谈计算思维

节选自 Vonng的博客 https://www.cnblogs.com/Vonng/p/4245130.html

一个非常无聊的现状是:几乎在每一篇谈及计算思维的文章中,开篇都会不厌其烦地重复周以真教授所给出的定义。本文希望以一种不同的方式来阐述这个概念:从一个概念的来源出发。解释这个问题:什么是计算思维。

计算机科学,本质上是应用数学,它是数学与工程学的混血儿。一方面,它具有数学的抽象,严谨,与精确;另一方面,它又广泛应用了工程学中的近似方法。计算机科学,继承了这两者许多的特质。而其核心思想,亦是两者之精华。我们可以说

计算思维=数理思维 ∩ 工程思维。

计算思维是数理思维的一个子集,它是对数理思维加以实际限制所得到的一个子集。

那么,我们便可以着手了解计算思维了。首先,我们研究它与数理思维的联系。

数理思维属于认识论,实证论和方法论的综合思维形式。其最大的认识特征便是:概念化,抽象化,模式化。一个具有数理思维的人,往往具有如下的特征:在讨论问题时,习惯于强调定义,界定概念,明确问题的条件;在观察问题时,习惯于把握其中的(函数)关系,在微观认识的基础上构建综合多因素的宏观考量;在认识问题时,习惯将已有的严格数学概念广义化,并应用于现实中问题的认识过程中。将数学思想应用到实际,让数学概念,数学模型与现实世界中的事物建立同构,以数学的方法论去认识和处理客观事物。这就是数理思维。

我们容易发现,如果将上面一段文字中的“数理”二字换为“计算”,读来亦无任何不妥。这足以体现计算思维与数理思维的一脉相承性。事实上,所谓计算思维的概念,与其说是它是随着计算机技术发展而被提出,倒不如说它是随着应用数学的繁荣而出现。

培养计算思维的先决条件是培养数理思维。数理思维的核心就是公理化。而公理化可以理解为形式化+公理。数学所研究的内容,当所有定义明确给出之后,就已经被决定了。它从公理出发,按照指定的规则进行演绎,从而构建出整个数学体系。计算思维与数理思维的区别在于:它更加强调形式化的部分。它不关心演绎起点是否直观,是否正确,它所关心的是输入与输出,已知量与未知量之间是否有着正确的联系。

因为任何学科的知识都可以用命题的形式来表述。那么我们不妨用形式化的手段来阐述数理思维与计算思维之间的区别。

我们知道假言推理规则:A Λ A →B => B

数理思维需要解决的问题:,不仅包括蕴含式A -> B的真值,还要确定命题A是否正确。而计算思维研究的问题:,则进行了简化,它仅仅需要确定A得到B这一过程是否正确。

其次,我们来研究计算思维与工程思维之间的联系。

工程是数学与科学的某种应用:以最少的资源,解决最多的问题。至于工程思维,虽说没有一个公认的定义,但这丝毫不妨碍我们对它的认识。工程思维的核心,便在于近似化。通过对实际的理论,加上客观环境的限制。提出可行的方案并评估可行性,择优而用。

我们依然可以以“计算”二字替代“工程”而无恙。譬如计算机科学中,我们对算法的限制指标便是:时间复杂度空间复杂度。

计算思维来源于数理思维与工程思维,然而它的内涵却并不仅仅是这样。计算,本质上是用一系列的运算,也就是映射,建立从未知量到已知量的映射关系,建立从输入到输出的关系。它是一门极为严谨的科学:计算结果正确与否可以得到检验——充分的可证伪性;它是一项实际的工程,需要考虑到诸如复杂性,鲁棒性等等限制因素——现实的约束;它也是一门优雅的艺术,同样是从A到B的映射,却有着的许许多多的实现方式,有复杂的,有简洁的。有优美的,也有丑陋的,问题的输入输出已经得到界定——然而实现的过程却充满着创造性。计算思维是一种建筑活动:只不过建筑材料不是木石砖瓦,而是各种基本运算。用这些材料,我们可以发挥无尽的创造力,去搭建想要的房屋。

我们还可以更加深入的对计算思维的内涵进行研究。如果我们注意到另外一个重要的概念:算法。周以真教授在《Computational Thinking》一文中所提出的所有计算思维的内涵,都是算法中的概念。事实上,任何可以归入计算思维范畴的内容,在算法中都可以找到对应的事物。换而言之,在计算思维与算法的运用之间可以建立一种同构。更进一步讲,计算思维就是使用算法的方法论。需要注意的一点区别在于计算思维并不直接等同于算法,思维属于“道”,而算法属于“器”,如何运用“器”的方法才是“道”。还有一点需要注意:“计算思维”这一概念暗示着这一过程的执行主体是人而非机器。

综上所述,我们可以以另外两种不同的方式为计算思维下一个定义。

第一种定义是种差+属概念计算思维是工程化的数理思维。

第二种定义是:计算思维即运用算法的思维。

计算思维的意义

不论是大到思索宇宙的奥秘,还是小到下一步路该如何控制肌肉。我们无时无刻都在进行思考,无论是有意识的还是无意识的。这种思考是一种计算,因为它确然符合计算的定义:根据已知量算出未知量。然而,我们日常生活中头脑所进行的计算与发生在计算机内部的计算却有着一些不同:这种区别在于,人类中的大多数,在绝大多数时间,都倾向于用归纳的方式进行计算,换而言之,一种神经网络的方法。谁也不知到在一百亿个神经元以及其十万倍数量的链接之间到底存在着怎样的黑魔法;计算机则不然,它严格遵循演绎的方法,根据严格的规则行事。如果正好运用一把计算思维来做一个类比:计算机所用的恰好是RISC指令集,而人脑采用的,则是无比复杂的CISC指令集。

对于人脑与计算机的区别,一种更好的评价方式是:是否适合(Fit)环境。对于复杂多变的物质世界,人脑通过极大的冗余设计获得了计算机望尘莫及的灵活度与适应性;然而对于稳定的环境与确定的条件,计算机的表现则有着压倒性的优势。在简单重复的工作的表现上,计算机总是比人脑更加高效,更值得信赖。恰好是计算机的这一特性,将科学家与工程师从奴隶般的机械计算中解放出来,使得他们将宝贵的脑力资源更多地用在创造性的工作之上,从而直接引发了第三次工业革命。

计算思维是一套概念模型,是从计算机科学中提取出的一套方法论。当我们运用一个思维模型时,要经历这样三个阶段:建模,解模,解释。与之相对应的则是抽象思维、演绎思维、发散思维。通过抽象,形式化,将我们所需要研究的问题进行归纳,用一种范式表达出来,建立模型;然后通过严密的演绎推理,解出这个模型;最后,使用发散思维,将蕴含于这个模型中的意义用自然语言表述出来。过去的科学研究,往往在解模的这一环节陷入瓶颈:计算量。计算机的出现解决了这一问题,从而使得科学技术的研究有了突飞猛进的发展。

不仅仅如此,计算思维曾经是数学家,计算机科学家,软件工程师等人的专利。然而随着计算机的普及,其应用领域的爆炸性发展,计算能力瓶颈的不断突破。计算作为一种智力活动的门槛被打破,计算思维不再应当是这些人的专属,它会逐渐普及开来,先是成为所有理工科大学生的必备技能,进一步拓展为所有大学生的基础素质,最终一步步拓延为全人类的集体直观。计算思维藉由信息化浪潮不可抵挡的势头,已经越来越受到人们的关注。

你可能感兴趣的:(JAVA专题-学习,JAVA专题---计算思维)