个销云 个销云 个销云

孩子学编程,应该学什么语言?

文章发布于:2022-01-13 11:17:22

大家好!上一期我就孩子的编程教育问题谈了我的看法。简单来说,孩子应该学习编程,而且应该以学习编程的思想为主。至于编程语言的选择,应该尽量选择一种门槛低、不会挫伤孩子的积极性的语言。今天我们就来谈谈编程语言的选择问题。


琳琅满目的编程课应当怎么选择?


粗略统计一下,市面上能见到的编程类课程有:


  • Scratch编程

  • Python编程

  • 乐高机器人编程


Scratch


先说说Scratch。Scratch是由MIT开发的、面向少儿的图形化编程语言。它的代码不是“写”的,而是像搭积木一样拼起来的。在我看来,Scratch的最大好处就是将编程的三大基本逻辑(顺序、分支、循环)表示成了不同形状的积木块,将抽象的逻辑变成了看得见摸得着的形状,帮助孩子理解。


12岁以下的孩子还没有形成“抽象”的能力,他们能理解1+1=2,但无法理解a+b=c。而Scratch巧妙地用积木解决了这一难题。



Scratch的另一个好处是,它提供了一个功能完备的“舞台”,将复杂的显示、动画、状态判断等逻辑包装到一个个积木中,孩子们只需要使用现成的积木,就能做出炫酷的动画、游戏等,立即看到代码的效果。


教学其他语言时最大的难点就是如何让孩子们对于自己的成果感到“惊喜”,因为一段程序从“能运行”到“惊喜”还有很长一段距离。而Scratch提供的舞台极大地简化了这些步骤,这也是为何Scratch能吸引低龄儿童的最大原因。


说完了优点,再来说说Scratch的缺点。Scratch为了简化编程,舍弃了许多过于抽象的概念。比如函数没有返回值,没有局部变量,没有函数调用栈。对于低龄儿童来说,这些抽象概念是学习的障碍。


但对于能够理解抽象概念的孩子来说,一旦需要编写较为复杂的程序,就会立即感到捉襟见肘。当然,Scratch也在发展,社区也有很多大神提供了实现这些概念的其他途径,但是显然,你需要付出更多的努力和时间,才能在Scratch中实现这些其他语言自带的功能。


用一个不太恰当的比喻来形容Scratch:理论上乐高积木也可以建房子,虽然原理大同小异,但与实际的建筑工作还是有很大的差距,实现起来也没那么灵活。你要付出更多努力,才能实现别人唾手而得的东西。


所以,当孩子成长到一定年龄,能够理解抽象概念后,建议学习其他的“高级”语言。


Python


Python是目前软件行业最流行的语言,也是最适合孩子入门的语言。它的优点有:


语法简单优雅:Python程序读起来跟英语非常相似,有助于孩子们理解并编写代码。


结构清晰:与C++/Java等语言不同,Python程序的“外观”是有意义的,写得正确的代码必然是“好看”的,而形状“别扭”的代码很可能是有问题的。所以,正确的Python程序不仅是逻辑清晰,外观也非常整洁。这一点非常有利于学生的理解。有Scratch基础的学生会发现,Python的形状与Scratch非常相似。


不啰嗦:Python程序几乎没有任何“锅炉板”代码。所谓“锅炉板”指的是那些没有实际意义,但又不得不写的代码。Java就是拥有大量锅炉板代码的例子,最简单的HelloWorld程序,Java需要写十几行,而Python只需要写一行。锅炉板代码会挫伤孩子的学习兴趣,严重打击孩子的学习积极性。所以,没有锅炉板的Python非常适合孩子学习。


image.png


当然,Python也有缺点。最大的缺点就是Python是一门弱类型语言,也就是说,它并不会严格要求类型的正确性。我们发现,许多孩子在写Python程序时,分不清字符串和整数的区别,导致一些不必要的错误,或导致程序运行太慢等。


但是平心而论,弱类型并不一定是缺点,因为类型本来就是一个非常抽象的概念,就连成年人都需要很长时间才能理解“类型”这个东西。Python在类型方面要求宽松,避免了初学者由于不理解类型而造成的大量错误,降低了学习的门槛。


其他的缺点就是所有编程语言的通病了,不过都有方法解决:


  • 需要设置开发环境。现在已经有repl.it等网站提供设置好的环境,学生可以直接使用,不需要在自己电脑上安装Python。

  • 无法实现Scratch那种炫酷效果。不过,Python也有PyTurtle、pygame等软件包,用相对简单的方式进行绘画、做游戏等。


机器人编程


它本身是一个智能小车,可以自由移动,可以安装各种传感器等。孩子可以使用Python或类似于Scratch的语言对其进行编程。


image.png


编程的根本思维方式和软件是不一样的。此外,EV3提供了类似于Scratch的图形编程语言,和Python库两种编程方式,不论是低龄儿童还是青少年都可以找到适合自己的学习方式。最重要的是,孩子可以观察“机器人”的行为,获得最直接的反馈,非常有利于保持孩子学习的热情。


image.png


其他语言


除了上述推荐之外,我想用问答的形式谈谈对于其他语言和技术的看法。


Q: 孩子适合学习JavaScript吗?


A: 我不推荐孩子学习JavaScript。JavaScript是一门有着“悠久”历史的语言,它最初并不是作为一门正规的语言诞生的,在后来的发展过程中加入了许多最初没有预想到的功能。


所以,JavaScript虽然表面上看上去很简单,但细节之处隐藏着很多怪异的行为。虽然在软件行业,我们有许多方法和规则去限制、去规避这些怪异行为,但对于刚开始学习编程的人,尤其是孩子,这些怪异行为必然会造成学习障碍,这不仅会打消积极性,还会让孩子养成不良的编程习惯。


Q: 听说React/Angular/Django是目前最流行的框架,应该学习吗?


A: 不应该。首先,一个框架现在流行,不代表以后一直会流行,甚至连这些框架背后的通用逻辑——MVC架构,以后也可能被其他逻辑取代。其次,这些框架都是Web开发的几种重要技术的结合体——服务器、路由逻辑、视图模板、数据库等,也就是说,你至少要理解每一项技术,才能真正学会这个框架,而这些技术都是大学本科的课程,孩子学习这些为时尚早。


Q: C++/Java怎么样?


A: 建议较大的孩子可以适当学习C++或Java,而且在学习之前最好有其他语言(如Python)的编程基础。C++可以让孩子理解计算机程序的工作方式,理解数据的存储结构;而Java可以为孩子培养“类型”的概念,培养严谨的编程习惯。此外,C++和Java(包括Python)都是计算机竞赛的常用语言,学会C++或Java,对于以后准备竞赛也有好处。


但是不建议太小的孩子学习C++和Java,原因同样是因为太小的孩子无法理解其中的抽象概念。


Q:学编程需要使用电脑,那么玩电脑太多,会不会让孩子沉迷于游戏?


A:不会,编程是正向引导孩子使用电脑,让孩子了解电脑不仅可以玩游戏,更重要的是可以工作,是一种工具。孩子们学习编程应该以兴趣为主,不妨尝试编写一些小游戏,寓教于乐。


不要排斥游戏,但可以尽量选择有开发平台的游戏,这样除了玩,还能激励孩子编写自己的游戏。


微信扫码

分享文章素材

建立自己的品牌素材库

立即体验

相关文章

更多文章

相关文章

拼命加载中...
已经到底了

提交成功

我们会尽快联系您

我要合作

申请免费试用

您的称呼:

公司:

您的手机:

验证码:

期望合模式:

详细需求:

立即体验