问答 | 如何像计算机科学家那样思考
开办一家餐馆该怎么做?
创作一个漫画故事该怎么做?
举办一场学术会议该怎么做?
……
生活中大大小小的问题都可以用计算思维分析,那什么是计算思维呢?可以将其简单理解成:像一位计算机科学家那样思考问题。随着计算机和编程课程在中小学教育中的逐渐普及,培养计算思维的重要性早已不言而喻。这种有些类似平面几何解题的“已知->求解”过程有什么优越性呢?又该如何培养呢?今天微软智汇学院打算给大家详细讲讲。
更多来自微软智汇学院的精彩内容,请戳这里~
计算思维(Computational Thinking)
关于“思维”, 大家想必都听说过“逻辑思维”(“逻辑”不是“罗辑”)、“批判性思维”等名词。相比较而言,“计算思维”却要陌生得多。
其实,计算思维(Computational Thinking)并不是一个新概念,至少在上个世纪五十年代就已经被明确提出来了。
不过直到2006年,这一概念才经由美国计算机科学家,卡内基-梅隆大学教授周以真引入教育领域,相对较晚。目前还不甚广为人知。
到底什么是计算思维呢?
周以真曾经将其描述为:“像计算机科学家一样思考问题”——
通过将一个个具体问题及其解决方案表达成计算机可以处理的形式,并设计计算的方式,将客观世界解释为一个复杂的信息处理过程。
整个过程,有些类似平面几何解题的“已知->求解”的过程。
通用的思维方式
计算思维并非计算机专业独有的,而是一种通用的思维方式。将上一段的描述更抽象一层,其实计算思维就是:
把一个大问题分解为一个个子问题,再进一步分为一个个子子问题……直到无需分解;
分别去执行一个个最小规模的子孙问题;
按照问题划分的结构将各个小问题的结果组合成整个问题的结果。
也就是自顶向下进行结构化设计,遇事“分而治之,各个击破”。
这种解决问题的方法,是各行各业都需要的。
准备一桌宴席该怎么做?先确定一共有几个菜;再购买原料,各个烹调,装盘上桌——这是分而治之的过程。
创作一个漫画故事该怎么做?先确定故事背景、人物设置;构思主题、情节,绘制分镜头脚本;再将每个镜头的草图通过精描、上色等步骤绘制成成品图——这也是分而治之,各个击破。
举办一场学术会议该怎么办?先确定主题、主讲人、参会群体、场地;再分头准备:邀请主讲人,确定演讲题目,制定日程;租用/借用场地,协调交通,布置会场;招募参会者,注册、缴费,安排各项活动——多管齐下,却也是各个击破。
开办一家餐馆该怎么做?……
拍摄一部电影该怎么做?……
研发一款电动汽车该怎么做?……
建设一个高新科技开发区该怎么做?……
……
世界上的问题有大有小,所需要的资源有多有少,但抽象到最高层面的方法论却是一致的。
强调可行与实践
和哲学式的探究与纯逻辑的符号推导不同,计算思维强调实践性——解决方案不是理论正确就好了,要在实际中可行才可以。
这一特点是由这一思维的诞生背景所决定的——当计算机科学家处理问题时,除了要知道如何将一个问题抽象为计算机能够理解的可计算模型,还要能够将计算收敛到有限空间中得到结果。
如果算法的时空复杂度过大,以当前的算力在有效求解的时间内无法得出结果,那么再完美的理论算法也无法在现实中奏效。
计算思维能够让我们明白正确性和可行性的关系——知道什么叫巧妇难为无米之炊,明白“实验室结果”和“日常使用效果”的必然差距。
在日常生活中解决问题时,某个解决方案是否可行,甚至于比它是否在理论上存在更加重要。
毕竟,无解只是影响到当前问题,而一旦动用大量资源去运行某个理论上存在却实际不可行的“解法”,不但无法解决当前问题,还有可能影响体系中原本可以正常运行的其他部分,导致大量衍生问题。
培养计算思维
计算思维作为一种思维方式,不是抽象概念,而是人们通过长期大量的实践经验——尤其是计算机科学发展以来的计算实践——积累、总结出来的。
因此,单靠理论学习是无法掌握计算思维的。必须经由大量的实践。毕竟,实践是人类对客观世界的认知及理论的来源,也是检验理论的有效标准。
已经工作的成年人还可以通过解决自己每天面对的问题来获取实践经验,学生(包括大众小学)却并不享有这样真实的历练环境。
在这种情况下,对于青少年及大学生而言,编程实践就成了最佳的习得计算思维的方式。
实践证明,写过程序的学生,特别是写过较多程序的学生,不仅在大学的专业学习中,而且在接受新概念和抽象理论时,在灵活运用所学知识时,比没有写过程序的同学都有着明显的优势,在非信息类课程的学习中也同样表现出色,这都体现出编程实践对思想方法和思维定式的培养作用。
因此,真想习得计算思维,那就从学习编程开始吧!
-END--
更多来自微软智汇学院的精彩内容: