很多编程新手
都会套用以前上学时的学习方法:
记语法、定义、常量……
然而,这些方法在编程学习中
却完全不奏效
编程究竟难在哪?
有没有更有效的学习方法呢?
01
#难在我们从未接受过解决问题的训练
从小到大,我们所接受的教育都是为了考取更好的学校。即使是强调分析和辩论的政治历史主观题,也可以用答题模版死记硬背拿分,连作文都有统一的模版标准。
这些经历,让我们非常擅长记忆,习惯通过套公式解答问题。
不过,到了学编程这里,却统统不奏效了。
因为,编程的核心,不是语法,也不是算法结构,而是学会运用编程思维,去独立思考解决问题。
卡耐基梅隆大学计算机的一名华裔教授提出「编程思维」这个概念。
她把编程思维分成4个部分。
第一个部分,Decomposition,即拆分。
比如,我想喝咖啡,那我可以请求你:“可以帮我倒杯咖啡吗?”
但这句话如果想让电脑听懂,我得先告诉它哪个是“杯子”、哪个是“咖啡”、什么是“倒”,然后再告诉它怎么去倒,比如先直走5米,左转75度,左臂下放50度……
现实生活,每一个复杂问题,都是基于解决一个个被拆分的小问题而被解决的。这就是编程思维中的“拆分”。
第二个部分,Pattern Recognition,即模式识别。
假如你需要画100只猫,你会怎么办?找100只猫来挨个临摹?
对于计算机来说,你需要找出猫的“模式”。
你要知道猫是有毛发,眼睛,尾巴,四条腿等,按照这个“模式”,你才可以“批量”画猫——你不用每次画一个新动物,只需要变换局部特征:黄白条的猫还是黑猫,长尾巴的猫还是短尾猫。
模式识别,就是这样,根据新问题和以前解决过的问题的相似性,举一反三琢磨出规律。
第三个部分,Abstraction,即抽象。
比如,当我们看到这一房子,我们看到的是(如下图所示):
但在建筑师的眼中,它可能是这样的(如下图所示):
建筑师通过自己的经验,抽象出房子里面具体的构造。
将问题里涉及的数据,抽象到数据结构(变量,数组,链表等),把数据处理过程可重复执行部分抽象成函数模块,这就是编程思维中的“抽象”。
第四个部分, Algorithms,即算法。
通过循环执行,根据前三步的分析成果,设计步骤,写出算法,从而解决问题。这一整个过程,我们看到所谓的编程语言和语法,在最后才发挥出作用。
编程思维,是你找出解决方法的能力,把现实问题转换为代码逻辑的能力。只有认清这一点,你才能更好地攻克它。
02
#难在我们从未学过创造
清华大学前校长陈吉宁曾提过一个观点:清华大学里有很多“A型学生”,但未来社会最需要的是“X型学生”。
“A型学生”,指的是传统观念里的“好学生”,他们的成绩总是能得“A”。
“X型学生”与之不同,他们的成绩并不一定拔尖,但愿意承担创新风险,勇于尝试新鲜事物。
(图片来源于网络)
两者最大的差别,在于创造力。
当开始学编程的时候,看着“Hello World”,等着我们去创造的时候,是非常茫然的。整个世界的运转,都是靠你的大脑想象出来的。这是编程的难。
但是,如果你在编程世界中,始终保持“实验者心态”,不断探索自己的想法,质疑自己的假设,从所犯错误中学习经验,就一定能在编程的魔法世界中得到更多宝藏。
03
#难在我们从未需要如此深刻地理解世界
学编程,需要探其根本,理解每一个概念的来由、定义和用途;需要多学科、深入而原始了解这个世界。
举两个小例子:
C语言冒泡排序法,它的原理是来自汽水中的气泡,水中常常有许多小小的气泡,哗啦哗啦飘到上面来。而组成小气泡的二氧化碳比水要轻,所以小气泡可以一点一点向上浮动。
在C语言中,这种排序算法的每一个元素都可以像小气泡一样,根据自身大小,一点一点向着数组的一侧移动。
人工神经网络,则是依靠一种类似于大脑神经突触联接的结构,进行信息处理的数学模型。
它们都受到了自然的启发。
编程的第三难就在于,学编程,往往学的也不仅仅是计算机本身。
你要懂“生物”:不同的技术构成不同的生态系统,不同的生态系统有不同的规则;
你要懂“化学”:各类系统和语言的关键性质,提供能写出优秀程序的原料;
你要懂“历史”:技术从哪里来,要到哪里去……
它需要我们具备深入探究知识细节的能力,不允许我们冠以笼统的态度求知。
#THE END
理解了以上3个难点
调整你的学习方式
你就会发现
编程其实也没有那么难
读者福利:知道你可能对Python感兴趣,便准备了这套python学习资料
对于0基础小白入门:
如果你是零基础小白,想快速入门Python是可以考虑的。 一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以找到适合自己的学习方案
包括:Python永久使用安装包、Python web开发,Python爬虫,Python数据分析,人工智能、软件测试、机器学习等学习教程。带你从零基础系统性的学好Python!
零基础Python学习资源介绍
👉Python学习路线汇总👈
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取哈)
👉Python必备开发工具👈
温馨提示:篇幅有限,已打包文件夹,获取方式在:文末
👉Python学习视频600合集👈
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
👉实战案例👈
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
👉100道Python练习题👈
检查学习结果。
👉面试刷题👈
资料领取
上述这份完整版的Python全套学习资料已经上传CSDN官方,朋友们如果需要可以微信扫描下方CSDN官方认证二维码输入“领取资料” 即可领取
![](https://i-blog.csdnimg.cn/blog_migrate/47c3abe4fec1b03406d6ffc8c49b7868.jpeg)