首页
学习
活动
专区
工具
TVP
发布

编程到底学什么?大神级解析,这下你明白了吗?

首先,让我们来认识一下什么是编程~

其实,编程就是和电脑对话,用计算机”听得懂的语言“,告诉它我们想让它做的事。

那么,和电脑对话,与和人对话,有什么不同呢?

比如说我想喝咖啡,那我可以跟孩子说:“儿子,帮我倒杯咖啡!”那这句话如果想让电脑听懂应该怎么说呢?

我得先告诉它哪个是“杯子”、哪个是“咖啡”、什么是“倒”,然后再告诉它怎么去倒,比如先左转75度,往前走两米,左臂下放50度……

发现了吗?人类天性⾥带着感性、随意、散漫等特质,但电脑可没有。

电脑这个新时代的高科技“铁血战士”,它理性、严谨、⼀板⼀眼,我们和它沟通时,每一步都必须给出准确的指令,而且你说的它都会严格照办,从来不会任性发挥或是趁你不注意悄悄偷懒。(非常听话,是个从不偷懒的好孩子)

那么,想要让电脑听懂我们的话,就必须让自己也变得理性、严谨、思路条分缕析,否则对话的结果则会和我们心里想的完全“跑偏”。

当我们试着从电脑的角度去思考问题时,也就学习和锻炼到了所谓的编程思维。

所以说,学编程不只掌握一项技能、培养一个兴趣,更重要的,是掌握背后一整套高效解决问题的思维模式

那编程思维到底是何方神圣呢?

相信很多小伙伴都听过“编程思维”这个词,但却有一种“它站在你面前,你却不熟悉它”的感觉。

编程思维就是编程运用的思维嘛,学了编程就掌握了编程思维,学了数学就掌握了数学思维,学了美术你就掌握了....(相信你已经会抢答了)

其实,编程思维是“理解问题——找出路径”的高效思维过程,它由分解、模式识别、抽象、算法四个步骤组成。

(1)分解——锻炼拆解复杂问题的能力

分解,就是把一个复杂的大问题拆解成更可执行、更好理解的小步骤。

例如,有位小伙伴想制作一个飞机大战的小游戏,他就自己亲自撰写了项目计划书,一步步拆解自己要实现的每个功能。

条理清晰,真是让我眼前一亮呢~

我们平时看起来很简单的效果,实现起来需要拆解的步骤可真是不少呢!在编程的过程中,就是不断地训练他把复杂、庞大的问题拆解、理顺的过程。

可不要小瞧这项练习,它可是解决问题的基础,只有分解的清楚,才有接下来实现的“可能”。

更会给学习带来不少帮助!通常会体现在审题能力或是读题能力。分解能力强了,以后无论是解数学应用题、阅读理解、写作、还是制定一项计划自然都不在话下了。

例如,同样面对一道有挑战的数学题,分解能力好的会列出清晰的解题步骤,搞定一步是一步,即使最后不一定能完全解答出来,也能清清楚楚地知道自己的进展。

而分解能力差的,可就没有那么好运气了,遇到问题大脑乱成了一锅粥,不知从何入手,但是不会的题也不能空着呀,只能想到什么写什么了...

(2)模式识别——发现并且整合“重复规律”的能力

“模式识别“,简单来说就是找出相似模式,高效解决细分问题。在我们在经验库里调用以往类似问题的解决方法,套用解决。识别的模式越多,解决问题的速度就越快。

例如,现在我们需要画100只猫,你会怎么办?找100只猫来挨个临摹?还是找出猫的“模式”?

如果是后者,你可能要知道猫长毛,有眼睛、尾巴、四条腿。然后,按照这个“模式”,你就可以“批量”画猫了——而不用每次画一个新动物,只需要变换局部特征:黄白条的猫还是黑猫,长尾巴的猫还是短尾猫。

有没有觉得效率瞬间飙升了呢~

在编程的过程中,一直在做这样的训练,发现一些可以重复的单元,把它整合起来,让计算机去重复它。

很多小伙伴解题快,正是因为他们善于发现和总结“可复用的规律”,脑袋里自备了一个装有各种规律的“方法库”,遇到类似情况就直接调用,不需要再从头到尾想一遍,不仅节约了时间,也避免了出错。

(3)抽象——人深度学习的能力

抽象,简单来说就是找到问题的本质,过滤掉其他无关紧要的因素。

这个还真有点不好解释,我们来看这样一个例子,当我们看到这间房子,我们看到的是:

一栋豪华的别墅

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

建筑师通过自己的经验可以抽象出房子里面具体的构造。

懂编程的同样具备这样的能力,以前是单纯的玩游戏,学了编程以后却可以透过游戏表象,看到背后实现的步骤,了解游戏的本质,突然觉得“玩游戏就是傻玩,自己创作游戏却可以学知识”。

正如电影教父中所说:“花半秒钟就能看透事物本质的人,跟花一辈子都看不清事物本质的人,注定有截然不同的命运。”

(4)算法——高效解决问题能力

算法,就是解决问题的办法,根据之前一系列对于问题的理解,设计一步一步的解决路径,解决整个问题。

在实际解决问题的过程中,最关键的两项能力 ——“逻辑思维”和“检查纠错”。

逻辑思维能力

逻辑思维中有个很重要的原则叫 MECE(Mutually Exclusive and Collectively Exhaustive),意思就是“相互排斥且完全穷尽”,也就是“不重复,不遗漏”。

右图符合MECE原则,左图则没有

在编程的算法中,需要处处考虑MECE原则。解数学题时,也是同一个道理——我们要保证答案中考虑到所有的情况,而这些情况既不遗漏,也不重叠。

在拆解好步骤以后,就要思考如何“通过改变坐标位置实现角色的移动”,“使⽤循环、条件判断让角色实现想要的重复动作“等,将代码合理的安排在整个程序中。

期间必须条理清晰,严谨细致,否则就可能功亏一篑。

例如,正确代码呈现出的五角星动态图这样的:

而只是把其中两行代码交换下顺序,结果就成了这样:

可见,一步不对,结果都会出现很大的差别。

思维严谨了,改掉了粗心大意的毛病,最直接的体现就是做题的正确率大大提高了。

(5)检查纠错能力

在编程过程中,任何⼀行代码写得不对,都无法实现想要的效果。没办法~程序天生就是如此的“倔强”。

如果出现问题,不得不自己通过执行效果,梳理逻辑,找出问题并一点点纠正。但是,程序中的那些bug常常可不是一下子就能发现的,很多人为了纠错都急哭了,最后在一次次试错中探索前行收获了喜悦和成就感,正所谓“程序虐我千百遍,我却待他如初恋”。

长期这么训练,我们的耐心、观察力和专注力想不提高都不行,更练就了不再“玻璃心”的抗挫能力。

在这个过程中,也会逐渐懂得一个道理:错误没什么好怕的,出错并不是失败的标志,而是成功的必经过程,是可以修复的小毛病(bug),生活没有什么是过不去的坎,战胜它就能成为真正的强者!

编程从根本上改变了我们对错误和失败的认识。养成勇于挑战的心态,对于培养成长型思维,非常有帮助。

最后,借用乔布斯的话:“每个人都应该学习编程,因为它教会你如何思考。”

对于热爱编程的小伙伴来说,路再难走也要坚持走下去!如果你感兴趣或者有需求的话,欢迎在下方评论留言哦,我都会看的!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200303A0DTSS00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券