李沟小学机器人社团科普——编程到底是个什么玩意?

思远

<h3>1<b>了解编程</b></h3><h3>很多人都学编程,也有很多家长让孩子去学编程。那么编程到底是个啥玩意?</h3><h3>说白了,我认为,现在的编程教育很多目的性并不强(不是指全部),一看就不是专门教编程的人做出来的课程产品。</h3><h3>更不是有青少儿课程产品设计经验的人,做出来的课程产品。</h3><h3>编程学习的本身是要有明确目标的。我给我的课程制定的目标,就是<b><font color="#ed2308">学习从分析到解决问题的逻辑。</font></b></h3><h3>既然是这个目标,那么首先我们就必须要找一种让学生可以“理解”并且使用的“工具”来进行教学。</h3><h3>我们看到市面上有很多青少年编程的课程一般有两种。</h3><h3>1、教各种编程语言。</h3><h3>2、教图形编程、做个小游戏啥的。</h3><h3>作为一个针对刚刚接触编程的人群的课程。前者,我建议直接忽略吧,根本没有意义。为什么?</h3><h3>这样说好了,你去任何一个互联网或者科技类公司,问问看做开发的工程师,一般都是精通一、二种语言而已。</h3><h3>同时,精通哪种语言还得看他的工作需求,从工作和未来的学习中不断精通。</h3><h3>简单说这句话的意思就是,连学哪个语言对你有实际意义都不知道,乱学个啥?</h3><h3>大多数青少儿编程的课程都是第二种 —— 非代码类的教学。</h3><h3>这样的学习方式,对于初期接触,或者“非职业选手”是比较合适的。</h3><h3>首先,对于“编程工具”的使用,就不会有太大的问题。而更多的是学习编程的一个套过程,从而提升逻辑能力。</h3><h3>市面上比较流行的有“Scratch”。</h3><h3>这玩意是人家MIT搞出来让孩子玩的一种工具。现在好像挺火的,但有意思的是,这个软件设计的初衷,就是“引导”,不知道为什么现在变成一项“照抄”课程了?(就是老师在上面一步步操作,下面学生跟着一步步操作,最后完成,大家都很high)</h3><h3>另外就是各种机器人教育的编程软件了,我们EV3的Mindstorms,就属于这种软件。</h3><h3>其实这种图形编程也可以理解为一种编程语言——脚本语言</h3><h3>什么是脚本语言?</h3><h3>举个例子,我们可能要编写一长串代码,来做一件事情。但这串代码经常会用得到,每次都要重复,工作量很大。</h3><h3>所以把这一长串代码先写好,起个名字,然后到要使用的时候调取一下,就能批量处理这些代码达到某一个效果,就会很方便。</h3><h3>它只负责执行编好的一个功能,而不是一种编译行为。</h3><h3>其实脚本语言本身是有致命弱点的,因为在编写这种语言的时候,本来就可能会有错误在里面。如果工程师编译一个软件,完全用脚本语言,那么当这个软件出点问题的时候,会连错误在哪都找不到。</h3><h3>当然,我们初期学习,使用一下,只有好处,没有坏处。最大的好处,就是我们不必要学习一门新的“语言”,再学如何使用。可以直接上手学那些我们容易学会的部分。</h3><h3>2<b style=""><font color="#010101">干嘛学编程?</font></b></h3><h3>既然要学,我们一定要知道自己在学什么。</h3><h3>正如上面说的,脚本语言是适合我们这种初学者学习的。但别认为自己学了真正的编译程序。我们在学的,是一个编写程序的逻辑。</h3><h3>这种逻辑能力的养成,其实对我们方方面面的帮助都会很大。</h3><h3>不说大道理,直接举个例子。</h3><h3>比如一篇<font color="#ed2308"><b>《中考考纲要求中学生必须掌握的古诗文详解【汇总版】》</b></font></h3><h3>如果我们把这篇文章理解为是一个程序。</h3><h3>那么点进去的每一个链接,就相当于是一个脚本程序。</h3><h3>而再点进去,由一字一句写出来的文章,就是一长串代码,每个字词就是一个代码。</h3><h3>我们会发现,<b><font color="#ed2308">这样的整理和总结,对我们日常的学习帮助会非常大,因为它一下子把某一个知识板块所有的要求,全部罗列了</font></b>。</h3><h3>这其中的逻辑目的就是:</h3><h3><font color="#ed2308"><b>完成教学中考这一块知识内容</b></font></h3><h3>那么反过来,我们日常在学校里面的学习,其实也是这一目的;看汇总资料,也是这一目的;我们出去找老师学习,也是这一目的。等等……</h3><h3>这些做法的目的其实是相同的,对不对?</h3><h3>我们会发现完成一件事情,其实会有很多的实现方式。</h3><h3>那么好了,我们会发现,<font color="#ed2308"><b>编程的学习,可以给我们带来的能力就是。</b></font></h3><h3><font color="#ed2308"><b>找到目标,思考实现方法,加入需求,达到目的。</b></font></h3><h3>这就是一整套逻辑。</h3><h3>这种逻辑几乎可以应用于所有的生活场景。</h3><h3>比如,我们买东西,几个牌子都有这样东西,只有细微的区别,那我们怎么挑选?</h3><h3>学过编程的人,思考问题一般会是:</h3><h3>1、到底什么目的是我买这个东西最主要的动机?达不到这个目的的,排除。</h3><h3>2、这些细微的区别,哪个对我来说是有用的?没用的,排除。</h3><h3>3、其他需求加进去:比如我希望便宜一些的。那么就挑最便宜的。</h3><h3>最终达到买东西的目标,结束。</h3><h3>同理,是不是发现,这种逻辑的应用场景其实无处不在呢?</h3><h3>所以,青少年学习编程,并不一定是要做工程师。而是学会这种逻辑能力。</h3><h3>至于学哪种语言?哪种课程?其实本身不重要。</h3><h3>3<b style=""><font color="#010101">赤裸裸的语言表达</font></b></h3><h3>我们的生活中充斥了太多影响我们判断的事物了。</h3><h3>比如,情感关系、伦理关系等等……这些因素很多时候会左右我们的准确表达意图。</h3><h3>都说理科生没有“情商”,文科生没有“智商”。</h3><h3>这句话其实就是指,很多学理的朋友,考虑问题,很理性,经常习惯排除各种无谓的顾虑;</h3><h3>而文科生则偏感性,往往被一些不关键的因素纠缠而造成判断错误。</h3><h3>世界上应该没有任何一个纯理性或者纯感性的人。两者平衡,把理性和感性用在不同的场合,其实是很好的。</h3><h3><font color="#ed2308"><b>编程的学习,就是学习一种赤裸裸的语言表达。只谈“理由”,不谈“感觉”。欲练此功,请务必深思熟虑</b></font>。</h3><h3>因为机器听不懂感觉,它需要准确的表达行为。</h3><h3>举个例子,有个老外向我们问路。</h3><h3>普通人回答,可能是:在前面第二个路口右转就到了。</h3><h3>而我们之后的学习内容,必须要做到的是:向前直行至第一个路口,继续直行,到达第二个路口,停止,90度右转,继续直行10米就到了。</h3><h3>再举个例子,爸爸炖了锅鸡汤,问你好不好吃。</h3><h3>普通人回答,可能是:挺好喝的,就是盐可能放多了一些。</h3><h3>于是爸爸心领神会,满心欢喜的去加水。</h3><h3>而我们之后的学习内容,必须要做到的是:咸,加水。</h3><h3>于是爸爸当场郁闷,灰头土脸的去加水,嘴里还嘀咕一会。。。。</h3><h3>没办法,学编程的时候,我们要的就是“赤裸裸”。表达出问题的本质和你的目的,不要任何废话。。。。废话多了,可能会造成别人的误会。</h3><h3>就拿上面哪个例子。如果按照普通人的回答,爸爸的反应也可能是:哦,那我下次注意点。于是你就达不到让他再加些水的目标了。</h3><h3>明白了吗?</h3>