1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 程序员独有的思维方式:编程思维

程序员独有的思维方式:编程思维

时间:2021-03-13 05:22:22

相关推荐

程序员独有的思维方式:编程思维

点击上方蓝字关注

每天学习一点,进步不止一点

0

我们从未接受过解决问题的训练,所以今天给大家推荐一种能帮助我们解决问题的思维方式——编程思维。编程的核心,不是编程,不是语法,甚至不是算法或数据结构本身,恰恰是如何分解问题——发现规律建立解决问题模型,映射到合适的数据结构和算法上,最后才根据算法写程序实现。基于此,卡耐基梅隆大学计算机的一名华裔教授提出「编程思维」这个概念。

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

1

Decomposition,即拆分根据已有的知识和经验,把问题拆分。比如我想喝咖啡,那我可以请求你:“可以帮我倒杯咖啡吗?”但这句话如果想让电脑听懂,我得先告诉它哪个是“杯子”、哪个是“咖啡”、什么是“倒”,然后再告诉它怎么去倒,比如先直走5米,左转75度,左臂下放50度……现实生活,每一个复杂问题,都是基于解决一个个被拆分的小问题而被解决的。

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

2

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

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

3

Abstraction,即抽象将问题里涉及的数据,抽象到数据结构(变量,数组,链表等),把数据处理过程可重复执行部分抽象成函数模块。听起来很复杂吧?这是一个过滤的过程,整个过程你要聚焦重要的关键信息,忽视无用细节,这样才能通过认知问题的核心本质,帮助我们形成解决问题的构想。比如,当我们看到这一房子,我们看到的是:

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

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

4

Algorithms,即算法通过循环执行,根据前三步的分析成果,设计步骤,写出算法,从而解决问题。这一整个过程,我们看到所谓的编程语言和语法,在最后才发挥出作用。所以当我们觉得学编程难,是因为我们还未从过去根深蒂固的学习习惯中抽离出来,凡是需要打破习惯的事,必是不易的。就像很多刚刚出国读书的孩子,常常在面对外国老师问出「why」的问题时,马上一种惊慌失措的表情,满脑子想着自己是不是又说错答案了,不知道老师这样问仅仅是为了引导他们拓展思维。我们真实的社会和生活也是不易的,它们没有标准答案,许多人终其一生没有追寻问题的能力,无法理解世界的复杂。而编程,是你找出解决方法的能力,把现实问题转换为代码逻辑的能力。

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

往期精选:

iOS启动优化理论篇

iOS13新特性

独角兽架构师

fancy

个人微信:iosjob

长按关注

版权声明:转载文章和图片均来自公开网络,版权归作者本人所有,推送文章除非无法确认,我们都会注明作者和来源。如果出处有误或侵犯到原作者权益与我们联系删除或授权事宜。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。