游戏赚钱 游戏赚钱资讯编程思维是:能够把现实生活中的复杂问题,逐步拆分成可理解的小问题

拥有知识不是目的,是必要的基础和手段,解决问题才是目的!我们的现状是满脑子的知识和标准答案,而缺乏很多重要的能力。其中最重要的能力包括:生存能力、学习能力、思辨能力(批判能力)、创新能力等等。

我们从未接受过解决问题的训练,所以今天给大家推荐一种能帮助我们解决问题的思维方式:编程思维。

编程的核心,不是编程,不是语法,甚至不是算法或数据结构本身,恰恰是如何分解问题——发现规律建立解决问题模型,映射到合适的数据结构和算法上,最后才根据算法写程序实现。

基于此,卡耐基梅隆大学计算机的一名华裔教授提出“编程思维”这个概念。

他定义编程思维是:能够把现实生活中的复杂问题,逐步拆分成可理解的小问题。

Decomposition,即拆分。根据已有的知识和经验,把问题拆分。比如我想喝咖啡,那我可以请求你:“可以帮我倒杯咖啡吗?”

但这句话如果想让电脑听懂,我得先告诉它哪个是“杯子”、哪个是“咖啡”、什么是“倒”,然后再告诉它怎么去倒,比如先直走5米,左转75度,左臂下放50度……

现实生活,每一个复杂问题,都是基于解决一个个被拆分的小问题而被解决的。

比如说,超级计算机感觉很复杂最后无非是解决一个带宽问题、一个存储问题;比如说,解决碳排无从下手,实际上是解决人口、服务、能源、单位能源的碳排放这几个问题。

Pattern Recognition,即模式识别。根据新问题和以前解决过的问题的相似性,举一反三琢磨出规律。假如你需要画100只猫,你会怎么办?找100只猫来挨个临摹?对于计算机来说,你需要找出猫的“模式”。

你要知道猫是专属的毛,眼睛,尾巴,四条腿等,按照这个“模式”,你才可以“批量”画猫——你不用每次画一个新动物,只需要变换局部特征:黄白条的猫还是黑猫,长尾巴的猫还是短尾猫

Abstraction,即抽象。将问题里涉及的数据,抽象到数据结构(变量,数组,链表等),把数据处理过程可重复执行部分抽象成函数模块。

听起来很复杂吧?这是一个过滤的过程,整个过程你要聚焦重要的关键信息,忽视无用细节,这样才能通过认知问题的核心本质,帮助我们形成解决问题的构想。

比如,当我们看到这一房子,我们看到的是:

但在建筑师的眼中,它可能是这样的:

建筑师通过自己的经验,抽象出房子里面具体的构造。这一步,我们虽然几乎难以在应试教育的学习方法中获得,但我们能从不断地编程训练中去培养抽象思维。

会编程的人,往往能透过一个应用表象,看到背后实现的步骤。

Algorithms,即算法。通过循环执行,根据前三步的分析成果,设计步骤,写出算法,从而解决问题。这一整个过程,我们看到所谓的编程语言和语法,在最后才发挥出作用。所以当我们觉得学编程难,是因为我们还未从过去根深蒂固的学习习惯中抽离出来,凡是需要打破习惯的事,必是不易的。

就像很多刚刚出国读书的孩子,常常在面对外国老师问出“why”的问题时,马上一种惊慌失措的表情,满脑子想着自己是不是又说错答案了,不知道老师这样问仅仅是为了引导他们拓展思维。

我们真实的社会和生活也是不易的,它们没有标准答案!许多人终其一生没有追寻问题的能力,无法理解世界的复杂。而编程,是你找出解决方法的能力,把现实问题转换为代码逻辑的能力。

最后,以乔布斯的话来结尾:我觉得每个人都应该学习一门编程语言。学习编程教你如何思考,就像学法律一样学法律并不一定要为了做律师,但法律教你一种思考方式。学习编程也一样,我把计算机科学看成是教育,每个人都应该花至少1年时间学习编程!

我来回答

转载注明:编程思维是:能够把现实生活中的复杂问题,逐步拆分成可理解的小问题原文地址:https://www.nmmwz.com/zhuan/121312.html
网站声明:游戏赚钱网刊载内容均来自信誉、正规的试玩游戏赚钱平台或者网络收集,如果有错误点击挑错,我们接到反馈后将及时更正,谢谢您的合作。如涉及版权等问题,请将链接反馈给我们,核实后会尽快处理。联系我们>>