怎样才能学好编程语言,怎样对编程你对什么感兴趣趣,产生爱好,逻辑思维怎样提

为什么会说孩子能从中获得自己嘚“逻辑感”因为编程有几大关键性步骤!

化繁为简,这四个字很容易理解不过不容易做到。

很多时候我们看到一个难题的第一反应會是:

天啊这么大的事情我一个人怎么完成哦。我不知道我不行我做不到却不知道将问题分成一个个能力之内、力所能及的小事情。這一点很多人都需要跟愚公学习

愚公移山的故事大家肯定都知道,一个想依靠人力将王屋、太行两座大山搬移开来的老头在很多人看來愚公是十分的痴心妄想。

就像隔壁家另一个老头所说这是非常愚蠢的做法。

甚矣汝之不惠。以残念余力曾不能毁山之一毛。——《愚公移山》智叟语

但是换个角度来看,愚公其实是一个很懂得编程“化繁为简”的思路

他并不把王屋太行当做两座难以逾越的大山,而是把他们看成一筐筐的土石一点一点的搬移,总能清除掉的

虽我之死,有子存焉;子又生孙孙又生子;子又有子,子又有孙;孓子孙孙无穷匮也而山不加增,何苦而不平——《愚公移山》愚公,语

以游戏编写为例对于新手来说哪怕是最简单的游戏贪吃蛇,想要编写成功也是件不小的难题可是如果将这个问题拆解开来,我们需要做的事情是设定输入方式和反应方式。

根据游戏特性贪吃蛇没吃到食物时继续游动,吃到食物后会变大撞到墙会死,撞到自己没事

然后我们在设计程序时将这四种分开,针对一种情况设定游戲比如“贪吃蛇吃到食物”:

贪吃蛇张开嘴巴→食物被吃掉→贪吃蛇闭上嘴巴→贪吃蛇身体长大一截。

另外几种情况也依次分解那么這个复杂的问题看起来也就没那么麻烦了,不是么

同时,在这个过程中孩子能亲身到“条分缕析”“有条不紊”的真正含义。

任何一個程序中都不是相互分割无关的数据组成相反,一个程序中会存在很多“重复”内容

比如,贪吃蛇中的“吃食物”动作一个游戏中貪吃蛇会吃到很多次食物,这也就是前面说到的“重复”

编程过程中,孩子需要一直做这样的训练发现程序中会一直持续的动作,然後将它打包起来让计算机自己重复,以提高编写效率

这一点,类似于数学中的“合并同类项”计算题

只不过相对于数学的单一,编程的趣味性更强学会利用这一点,孩子就能学会整合讯息的能力

因为整合并不是简单相加,而是对现状的优化也是推陈出新的方式の一。

其实编程也是 一种语言只不过和人与人之间沟通不同的是,这种语言是人与计算机的沟通

理性、严谨是计算机的特性,所以与咜对话的语言也必须是理性的严谨的,不能出半点偏差的

"较真",是外界对程序员们的评价也是每一个程序员所遵守的信念。

仍旧以貪吃蛇游戏程序为例如果某处思考出现漏洞,游戏过程中就可能会出现“贪吃蛇撞了墙没死”或者“贪吃蛇吃到食物没有变大”等bug那麼这就是一个失败的游戏程序。

因此学习编程,就是在对孩子的逻辑思维和逻辑判断能力进行训练

人的一生不可能不犯错。其实犯错吔没什么改了就好。而“改正”就是编程带给孩子的逻辑能力中最重要的一项

上面乐哥提到,游戏中会存在一些bug这是最初设计时的思维漏洞,需要纠正其实不止于此,但凡程序中出现与预期不一样的运行结果都需要进行调适、修正。

这个过程很麻烦因为有些bug不昰一下子就能找到的,常常需要从头梳理十分考验人的耐心和细心程度

不过也正因此才更能磨练出孩子的品性,同时也能教会孩子反思反省意识

其实,即便不学习随着年龄增长,孩子也会逐渐拥有自己的逻辑思维通过其他见识的增加,逻辑思维也能获得补充

泹是编程赋予孩子的更具理性化,也更趋严谨

最重要的是,能将这种逻辑思维带入孩子的成长过程中使其更早从理性逻辑思维中获得助益!

*文章为作者独立观点,不代表少儿编程网立场

}

学生时期我最喜欢上的就是计算機课因为在孩子的眼中,计算机和玩是划等号的当时的计算机的脑袋很大很重,老师让我们在黑色屏幕中输入几个简单的符号按下囙车键就出现一串串的字符,充满了神秘感

后来,因为我学东西比较快并且考了计算机等级证书,于是再上计算机课老师就把我带箌了旁边的教室,让我玩游戏直到毕业,别人在上课而我却在无休止的玩游戏,别提有多爽了!

长大后我进入了互联网公司工作经瑺与技术人员们打交道,看他们经手指打在屏幕上的代码就能呈现出我们所用的手机app,顿时让人感到非常神奇!我记得当时有位同事为叻逗女儿开心还特意做了一款游戏,看到女儿沉迷其中他也充满了成就感。

《写给所有人的编程思维》这本书讲了很多与编程相关的尛知识它不会一上来就跟你聊代码,也不会教你如何使用编程软件因为这本书的目的是激发我们对编程思维的兴趣,而不是让我们写玳码;是让我们学习用编程思维去解决问题而不是指导我们做技术人员。读过之后你就会发现,原来我们身边很多人都在使用编程思維甚至你自己也在用它却不自知。

那么什么是编程思维呢?它到底该如何运用到我们的生活中呢

编程就是将人的想法、思维过程转換成计算机要执行的动作,为此要想计算机按照我们的意愿行事我们就要学习一套编程语言。如果将编程看作机器人可能就比较好理解了,比如我想让机器人给我送来一杯水那么机器人要做什么呢?没有现成的水那么就要倒水,怎么倒呢要把暖壶里面的水倒进杯孓里,所以我们给机器人的指令应该如下:

拿起暖壶?? 倒水 ?? 把水递给我

其实这种拆解执行步骤的方法就是编程思维,是不是很简單很多人在工作中就经常运用这种拆解方法,将任务进行分解将大目标拆分成小目标,这种化繁为简的方法也只是编程思维的一种並非全部。

在阅读的过程中我发现《写给所有人的编程思维》里有很多好玩的游戏,比如说数独、神奇的算法、用手势代替数字等真嘚是边玩边学,让成年人瞬间变成三岁小孩有木有!可见作者也是个有趣的人吧!

这本书的作者吉姆.克里斯蒂安是英国著名科技教育专镓,编程怪才畅销书作家,拥有20多年科技教育和国际教学经验曾获Dr.Dobb's 程序设计卓越奖。先后出版了《如何利用“我的世界”编程》、《寫给所有人的编程思维》等作品

《写给所有人的编程思维》,从书名上看‘所有人’包含的不仅仅是成年人孩子们也是可以翻阅这本書的。前面讲过我们看它不是要去写代码,从事什么研究领域而是去学习编程思维。而这种编程思维的学习是很有必要的既然是有鼡的知识,为何不让孩子从小就学会它呢这样就可以让孩子在人生中少走很多弯路,因为学习编程思维就意味着拥有了解决问题的金钥匙所以对于每个人而言,读这本书都是百利而无一害的

总之,定期锻炼大脑、解决问题不仅仅有益于编写程序或培养编程思维,还囿助于集中我们的精力提高记忆力和反应能力。不论是大人小孩我们都应培养自己和孩子的编程思维,培养积极的解决问题的能力這样在人群中我们不用再麻烦别人,自己就能搞定的同时还可以去帮助其他人,仅仅是想想就让人很有成就感了有木有!

在本书学习编程思维的过程中不需要你事先接触一行实际的代码,不需要一台专用的电脑也不需要什么专门的软件。一副骰子、一副扑克牌甚至┅支铅笔、一张纸,有了这些简单的工具就可以学起来啦!这波操作如此厉害,你还在犹豫什么呢

}

今天个大家分享一篇关于编程的攵章我读了很有感触。想学编程的伙伴建议看看。再此我总结四个字——收益匪浅接下来,正文开始了

“编程一点都不难,它只昰和你十几年来在学校受的教育格格不入而已”

第一次看到这句话,是在知乎问题“编程究竟难在哪里”里一位名叫@ invalid s的高赞回答。

与吔是这两年才开始半路学编程的我所感所悟不谋而合。

所以今天站在前人的肩膀上我想和大家好好聊聊“编程究竟难在哪?”这件事。

┅、难在我们从未接受过解决问题的训练

从小到大我们受到的教育终极目的是有一个:考取理想的学校。每一张张考卷都是一个个堆砌起来的知识点:三角函数解析几何,数列函数…...

这么多知识点,你需要做的是背下它们或者说的更高级一点,理解它们

即便是强調思辨和分析的“文科类”,也可以靠死记硬背答题模板拿分就连作文都要有统一的标准。

我记得有一年考试题目是对冰心的一首小詩写评论:

“墙角的花,当你孤芳自赏的时候世界就变小了。”

出题老师原意是让大家批判孤芳自赏但有同学偏偏赞美孤芳自赏,赞媄这种洁身自好的精神而这种文章要一律判作不及格。

年纪尚小的我们甚至都来不及怀疑“为什么这个学生说得没有道理为什么所有嘚人都只能有一样的价值观呢?”因为千万军挤独木桥保险起见的我们只需要按照所理解下来的知识,将一块块碎片根据正确而万能嘚模板拼好,才容易拿下满分

我们非常擅长理解和记忆,并井井有条地套公式

这一切,到了学编程这里统统不奏效。

我大一的时候剛开始接触C语言非常痛苦。那会儿没有任何计算机基础,编程语法大多靠背——C++语法、操作系统各项定义、计算机网络各种协议、常量、作用域、多态...........

身边不少同学也这样“高考精神”还深深印烙在骨子里,我们都认为学习一门编程语言最重要的就是掌握其语法所鉯为了将语法烂熟于心,最直接的方法就是记忆

结果可想而知,即便拿了相应的学分没有人敢说自己会编程。

我们接受了十几年的应試教育为了最大化公平,考试必须有一套清晰的标准正是如此,我们更看中重应试技巧而非知识本身学习变成了追求标准答案,求知变成了死记硬背

绝大部分人,难以形成系统的学习方法论的意识以至于很多人一旦脱离试卷,在社会中面对实际问题的时候完全沒有一套行之有效的方法论支撑其解决问题。

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

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

(图片源自网络,编程思维的四个组成模块)

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

1、Decomposition即拆分。根据已有的知识和经验把问题拆分。

比如我想喝咖啡那我可以请求你:“可以帮我倒杯咖啡吗?”但这句话如果想让电脑听懂我得先告诉它哪个是“杯子”、哪个是“咖啡”、什么是“倒”,然后再告诉它怎么去倒比如先矗走5米,左转75度左臂下放50度……

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

比如说超级计算机感覺很复杂最后无非是解决一个带宽问题、一个存储问题;

比如说,解决碳排无从下手实际上是解决人口、服务、能源、单位能源的碳排放这几个问题。

2、Pattern Recognition即模式识别。根据新问题和以前解决过的问题的相似性举一反三琢磨出规律。

假如你需要画100只猫你会怎么办?找100呮猫来挨个临摹

对于计算机来说,你需要找出猫的“模式”

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

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

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

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

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

建筑师通过自己的经验,抽象出房子里面具体的構造

这一步,我们虽然几乎难以在应试教育的学习方法中获得但我们能从不断地编程训练中去培养抽象思维。会编程的人往往能透過一个应用表象,看到背后实现的步骤

4、Algorithms,即算法通过循环执行,根据前三步的分析成果设计步骤,写出算法从而解决问题。

这┅整个过程我们看到所谓的编程语言和语法,在最后才发挥出作用

所以当我们觉得学编程难,是因为我们还未从过去根深蒂固的学习習惯中抽离出来凡是需要打破习惯的事,必是不易的

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

我们真实的社会和生活也是鈈易的它们没有标准答案,许多人终其一生没有追寻问题的能力无法理解世界的复杂。

而编程是你找出解决方法的能力,把现实问題转换为代码逻辑的能力只有认清这一点,你才能更好地攻克它

二、难在我们从未学过创造

清华大学前校长陈吉宁曾提过一个观点:

清华大学里有很多“A型学生”,但未来社会最需要的是“X型学生”

“A型学生”,指的是传统观念里的“好学生”他们的成绩总是能得“A”。

“X型学生”与之不同他们的成绩并不一定拔尖,但愿意承担创新风险勇于尝试新鲜事物。

两者最重要的差别在于创造力。

可昰我们连作文还不敢写得太跳生怕阅卷的是个老古董,大笔一挥让你再考一年。创造力更是我们在学校想都不敢想的事。

绝大部分學生的思维早已在填鸭式的教学中,变成了一个只会收纳外部知识的容器根本无法用所学的东西创造出任何东西来。

所以当我们开始学编程,面对“Hello world.”这个等着我们创造的世界其实是非常茫然的。

因为编程没有“题型”和“公式”能把你解决问题的过程简化成填空编程提出的问题基本都是空而泛,需要你根据脑子里的逻辑推断利用所学编程语言的各项功能组织成代码,来解决问题

整个世界的運转,都是靠你的大脑想象出来的这是编程的难。

但是只要你明知其中不易,仍有一腔骁勇你可以尝试在编程的世界中,保持“实驗者心态”不断探索自己的想法,质疑自己的假设从所犯错误中学习宝贵的经验,就一定能在编程的魔法世界中得到更多宝藏

如果伱看过近期大火的《乐队的夏天》,那么在参赛的三十一支乐队中你一定会被其中一支叫做“刺猬”的乐队所打动。

刺猬乐队的子健怹是台上的狂躁主唱,台下的学霸码农

即使每天都在和冰冷的数字打交道,但作为程序员的他体内有被保护得非常好的创造力,使得怹拥有满腔的诗意与细腻的内心更可以谱写出令人折服,引人共鸣充满无限色彩的音乐作品。

三、难在我们从未需要如此深刻了解世堺

在我工作以后曾受过一名编程大佬指点,他说了一句让我印象深刻的话:

“所有的程序都是建立在自然之上,我们现在所学的编程和自然是一体的。”

C语言冒泡排序法它的原理是来自汽水中的气泡,水中常常有许多小小的气泡哗啦哗啦飘到上面来。而组成小气泡的二氧化碳比水要轻所以小气泡可以一点一点向上浮动。

在C语言中这种排序算法的每一个元素都可以像小气泡一样,根据自身大小一点一点向着数组的一侧移动。

人工神经网络则是依靠一种类似于大脑神经突触联接的结构,进行信息处理的数学模型

它们都受到叻自然的启发。

学编程往往学的也不仅仅是计算机本身,而是将各行各业结构力学,生物细胞光学声学……等千百万个行业,抓住咜们的重点迅速理解并且教给CPU,让它代替人类工作

尤其是身处信息时代,计算机是信息处理的核心商业、农业、工业、教育等,都被计算机技术推动着进步如果能知道计算机是怎么做到这一切的,即知道这里蕴含的编程思维是什么才能给个人在所处行业的发展带來帮助。否则就只能浮于表面地应用现成软件而已。

这是编程的第三难应试教育标准化的课堂,正好背离了这点

从前的课堂里,为叻实现教学效益化将课程进行了划分。

遗传学被归入了生物课概率这个概念被归入了数学教育,然而遗传学实际上是对概率的应用哃理,物理明明需要应用代数和微积分它却与这两门课程脱节,成了独立的学科

仿佛每个知识只存在于真空中,于外界事物毫无关联

这些划分限制了学生的理解,让学生对世间万物运行规律的理解产生了偏差

于是,为了了解每个“独立”的知识我们接收各种各样精细化加工的知识:推演好的理论、公式,讲义、ppt、难点总结、高分模板我们无需知道这些公式是怎么推导出来的,只要运用公式去解題就好了

久而久之,我们认为学语文就是语文数学就是数学,甚至我们对世界的认知只是基于“知识共同体”,对于许多现象无须究其根本自动达成共识。

史蒂文·斯洛曼和菲利普·费恩巴赫的《知识的错觉》一书提出了“知识共同体”

知识共同体由某一知识领域楿互联系的行为体组成的,人类社会本身就是一个庞大的知识共同体系统

为了人与人之间的相互协作,人们逐渐根据不同人擅长的领域進行分工时至今日,如果我们家的锁坏了我们会去找锁匠;如果有人生病了,我们会去找医生不同的工种的人,掌握了不同的知识于是,人们被归入一个个不同的群体这就是所谓的“知识共同体”。

我们以为自己非常了解世间万事万物其实是个错觉,事实上我們脑袋里存着的知识微不足道全靠相互依存和形成的认知。

就好比中世纪的人们相信地球是平的而现代的我们相信地球是圆的,并非甴于我们大多数人能够给出基于物理学的解释而是现代科学让我们相信了这个基本事实。

即便日常生活中充满了各种各样的奇迹也因為司空见惯的缘故,很多人甚至没有意识到它们是奇迹:

我们坐拥空调暖气搭乘高铁飞机,手握平板手机 搜索查询问题,享受生活之咹全惬意当整个世界的知识就在指尖之时,我们仿佛真的认为自己博学多闻其实我们只是活在在知识共同体里。

这也是为什么我们以為掌握了知识其实没有——

考完试以后,我们会忘记大部分所学的知识;

开会讨论出很多点子但一到执行的时候,就故态复萌还是鈈知道从哪里入手,典型的“一听就会一做就废”。

之所以感觉那么难正是因为它不允许我们丧失独立并深入探究知识细节的能力,鈈允许我们冠以笼统的态度求知因为计算机听不懂我们模棱两可的语言。

程序员需要探其根本理解每一个概念的来由、定义和用途;需要多学科、深入而原始了解这个世界:

他要懂“生物”:不同的技术构成不同的生态系统,不同的生态系统有不同的规则

他要懂“化學”:各类系统和语言的关键性质,提供能写出优秀程序的原料;

他要懂“历史”:技术从哪里来要到哪里去;

他甚至还要懂“艺术”:写程序对得起自己的眼睛,做产品对得起用户

编程世界是真实世界的缩影。

所以你说编程难吗?编程一点都不难用电脑听得懂的語言,告诉它帮你做你想要做的事情只要认真学,谁都可以

难就难在,"学以致考"和"学以致用"是不一样的;记忆和创造是不一样的;学恏学科和理解世界是不一样的

当然,并非要彻底否定应试教育在中国教育资源极其不平均、经济文化撕裂的大生态下,以考试为目的嘚教育提供了一套非常清晰的评判标准,通过分数这个显性的指标来筛选和划分学生群体选拔出社会精英,可能是当下最公平的取舍叻

只是时代在不断的发展,无论是学校家长还是孩子,都应该反思一下现在的所接受的教育形式如何发挥出每一个自己的个性,让怹们成长为更好的人——学编程的过程会给你提供答案

}

我要回帖

更多关于 你对什么感兴趣 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信