用计算机编程
为孩子赋能

少儿编程从什么语言开始学起?

少儿编程从什么语言开始学起

没有最好的, 只有最合适的

全世界比较知名的编程语言就有 200 多种, 如果算上不知名的, 这个数量还要更多.

那么, 面对种类如此繁多的编程语言, 哪一种才适合你的孩子呢?

在这篇文章里, 我们会讨论适合 K12 阶段(幼儿园到高中的孩子)使用的入门编程语言.

快速选择

如果你只是想得到一个简单明确的答案, 而不希望在众多语言中比较和挑选, 那么这里有个快速选择方案:

挑选入门编程语言的流程

挑选的角度

我们将基于下面这些角度对编程语言进行比较:

角度一: 是否直观形象容易入门

编程语言可以简单分为"图形化编程语言"和"文本型编程语言":

图形化编程语言和文本型编程语言

"图形化编程语言"是通过拖拽代码, 像拼图和积木一样来拼装程序, 通常还会通过代码的外形和颜色来暗示功能.


显而易见, "文本型编程语言", 学习曲线比较陡峭, 入门会比较难, 而"图形化编程语言"更加直观形象, 学习曲线更加平缓, 容易入门:

学习曲线

需要提醒的是, 对于初学者来说, 如果学习曲线太过陡峭, 虽然理论上可以更快地进步, 但是现实中, 这种学习路径更容易产生挫败感, 很容易发生"从入门到放弃"的遗憾:

学习路径的选择 走楼梯

此外, 想要达到"形象直观", 除了"图形化", 还可以通过编程直接控制事物, 从而直观地感受代码的作用. 比如, Python 虽然不是图形化编程语言, 但是, 通过 Python 我们可以控制乐高机器人和 Minecraft. 这为编程提供了形象直观的反馈.

角度二: 能否创建有趣的项目

由于是面对初学者, 而且是儿童, 我建议我们将目标定义为"编程启蒙", 而不是"编程技能教育", 更不是"编程职业教育". 启蒙的目的在于激发和维护孩子的兴趣, 而不是灌输编程技能.

所以我们把"能否创建有趣的项目"作为考察重点.

比如, 如果可以通过编程来设计游戏, 或者通过编程控制游戏中的事物, 这将极大地激发孩子的热情, 持续驱动他们克服编程道路上的困难.

角度三: 社区是否繁荣

编程语言的社区繁荣, 意味着学习者有更完善的教程, 意味着当我们碰到问题时, 更容易得到帮助.

此外, 繁荣的社区也意味着大家乐于分享作品. 我们有机会观摩别人优秀的程序, 获取灵感, 也可以把自己优秀的作品分享出去, 收获成就感.

详细的比选


Scratch – 全球最流行的儿童编程语言

scratch 图例

2019年1月2日, MIT 发布了 Scratch 3.0 版本, 基于 HTML5 和 JavaScript 开发, 可以运行在任意浏览器上, 而且界面更美观更现代

Scratch 是由"美国麻省理工学院(MIT)"开发, 用于儿童教育的编程语言. 是全球最流行的儿童编程语言. 孩子可以通过 Scratch 创造交互式的动画、游戏、音乐、艺术.

它的操作非常直观形象. 通过简单的拖拽, 像拼图或者拼积木一样, 搭建程序. 很容易上手.

而且, 孩子可以在官网观摩世界各地小朋友的作品. 官网已经有超过 150 个国家的用户上传了 3100 多万个作品. 我们不光可以欣赏, 还可以直接查看其源代码, 进行学习和改编.

此外, 很多爱好者为它开发了很多拓展插件, 可以通过 Scratch 控制乐高机器人 (Weedo、 Boost、MindStorm EV3)、Arduimo 电路板开发、控制 "Minecraft(我的世界)".

想要尝试?

很简单, 使用 Scratch 官网的"在线编辑器", 不用任何配置, 就可以开始编程. 或者, 你也可以下载离线编辑器, 同样不需要额外的配置. 而且官网提供了适用各种电脑系统的程序, 包括 windows、Mac、Linux 系统.

官网:
https://scratch.mit.edu

优点 / Pros:

  • 全球最流行的儿童编程语言. 在 TIOBE Index 排名中, Scratch 在众多语言中排在 20 位, 甚至超过了程序员非常熟悉的 Bash 语言, 也超过了谷歌公司开发的 Dart 语言 (数据来源: TIOBE Index, 2020 年 4 月)
  • 图形化编程语言, 积木拖拽式操作, 非常容易上手
  • 有在线编辑器, 只要电脑能上网就能开始编程. 而且提供了多平台的离线编辑器, 同样不需要额外配置
  • 有丰富的教程, 还可以查看 3100 多万个作品的源代码, 进行观摩和学习
  • 社区活跃. 如果我们碰到问题, 可以直接上官网论坛求助. 如果英语欠佳, 在国内也有众多使用者在网上提供帮助

缺点 / Cons:

很难找到缺点, 呵呵. Scratch 是我心目中最适合儿童的入门编程语言, 甚至我认为它作为成年人的入门编程语言也很不错. 如果勉强要说缺点, 有这些:

  • Scratch 2 版本基于 Flash, 所以在 iPhone 和 iPad 上无法使用在线编辑器 (最新的 Scratch 3 版本基于 HTML5 和 JavaScript, 可以在任意浏览器上使用, 包括 iPhone 和 iPad)
  • 离线版 Scratch 3 的本质是一个浏览器, 运行速度较慢, 占用资源高, 使用起来没有 Scratch 2 顺畅
  • 由于 Scratch 官方网站被“马赛克”(2020 年 9 月), 你可以选择其他替代品, 比如 “编程猫”(https://kitten.codemao.cn) 或者 "网易卡搭"(https://kada.163.com)

Python – 功能强大应用广泛

python 图例

Python 是一门应用非常广泛的编程语言, 即可以开发网页, 也可以写辅助工作的脚本工具, 还是当下最热门的大数据分析和人工智能工具.

而且, Python 是一种强调"简单主义"的计算机语言, 语法非常简洁自然, 阅读一段良好的 Python 程序就像在阅读英语一样. 这个特性可以让人更专注于解决问题本身, 而不是花费太多精力去考虑代码是否符合严苛的语法规范(对, 说的就是你, C# 和 C++).

Python 是一门文本型编程语言, 比图形化编程语言更抽象, 选用这门语言需要考虑孩子的接受能力.

不过, 我们可以通过 Python 开发电脑游戏, 或者通过 Python 控制 "Minecraft(我的世界)"和"乐高机器人(Mindstorm EV3)", 这为 Python 编程提供了形象直观的反馈.

它的配置过程稍微有点复杂(如果要控制 Minecraft, 需要搭建本地服务器). 建议请程序员朋友帮忙, 或者参加培训班.

Python 语言的社区非常繁荣. Python 在全球编程语言流行榜中, 排名第 4 (数据来源: TIOBE Index, 2018 年 5月)

官网:
https://www.python.org

优点 / Pros:

  • 功能强大
  • 语法简洁自然, 接近英语自然语言
  • 生态圈繁荣, 社区活跃, 如果碰到问题, 更容易获得帮助
  • 有丰富的教程, 专门针对孩子的教程也很多

缺点 / Cons:

  • 文本型编程语言, 更抽象, 没有图形化编程语言那么直观
  • 配置过程比较复杂

JavaScript – 有浏览器就能使用

javascript 图例

JavaScript 主要用于开发网页的动态效果, 是非常流行的编程语言, 在全球编程语言流行榜中, JavaScript 排名第 8 (source: TIOBE 2018.04)

在几乎所有的浏览器中都会内置该语言的解释引擎. 所以不用任何配置, 可以直接使用浏览器来学习这门语言.

尽管这门语言是基于文本的, 但是它可以用来开发网页的动态效果, 可以绘制图形, 制作游戏, 还可以用来控制 Minecraft, 所以编程的反馈也很直接形象.

而且 JavaScript 这几年处于井喷状态, 其语言和各种类型的库都非常丰富.

官网:
https://developer.mozilla.org/en-US/docs/Web/JavaScript

优点 / Pros:

  • 不用配置, 有浏览器就能开始编程
  • 非常流行, 碰到问题更容易得到帮助
  • 生态圈繁荣, 社区活跃, 如果碰到问题, 更容易获得帮助
  • 有丰富的教程

缺点 / Cons:

  • 文本型编程语言, 没有图形化编程语言那么直观

Blockly – 谷歌开发的图形化编程语言

blockly 图例

Blocky 是 Google 开发的用于编程教育的图形化的编程语言. 它借鉴了 Scratch 2, 通过拖拽积木的形式来组装程序.

而且, 它有一个非常好用的功能 — 可以将图形化的程序转换成文本型的编程语言, 比如 JavaScript、Python、PHP、Dart、Lua. 这使得 Blockly 可以作为儿童编程语言向工业编程语言的过渡.

不过, 配置比较麻烦, 需要跟随官方的说明自己动手, 可以求助身边的程序员朋友.

Blockly 的前景非常受看好, 众多公司也基于 Blockly 二次开发了各种用于编程教育的游戏和软件:

  • 我们下面将要提到的 Android App Inventor 就是基于 Blockly 二次开发的.
  • 微软的 Microsoft Make Code, 可以用于控制 Minecraft
  • Code.org的编程教学程序
  • Robot Magic, 用于控制乐高机器人 EV3, 以及国内的 mBot 机器人, 以及用于 Arduino 开发
  • 非常出名的 Dash & Dot 机器人, 可以使用 Blockly 来控制(由于其 App 在 Google 应用市场, 国内无法访问, 可以请程序员朋友帮忙).

最后, 非常建议大家玩一下这个由 Google 工程师开发的 Blockly 编程闯关游戏:
http://touchnew.net/playground/blockly-games/zh-hans/index.html

官网:
https://developers.google.com/blockly

优点 / Pros:

  • 图形化编程语言
  • 可以将图形化程序转化为 JavaScript, Python, PHP, Dart, Lua 语言
  • 由 Google 开发, 后续发展看好
  • 生态圈繁荣, 众多公司基于 Blockly 二次开发了各种编程教育的游戏和软件

缺点 / Cons:

  • 配置稍微复杂
  • 界面没有 Scratch 活泼
  • 没有离线编辑器
  • 教程较少

Kitten – 比 Scratch 更好的图形化编程语言

Kitten

Kitten 是由编程猫(国内最著名的少儿编程培训机构)研发, 和 Scratch 3. 0 一样, 也是在 Google Blocky 的基础上开发的.

可贵的是, Kitten 既能兼容 Scratch, 又在功能和稳定性上超越了 Scratch:

  • 兼容性: 两者都是基于 Blocky 二次开发, 界面和 Scratch 非常相似, 熟悉 Scratch 的孩子很容易上手, 而 Kitten 也可以导入 Scratch 的程序(导入后需要手动微调). 与 Scratch 的兼容, 也让 Kitten 可以使用 Scratch 已有的丰富资源
  • 稳定性: Scratch 3 一直都不能正常保存文件, 而 Kitten 并不存在这个问题. 而且, Kitten 的版本更新频率高于 Scratch
  • 功能性: Kitten 的功能更多, 体系更齐全 (包括 iPad 端的图形化编程软件、Python 编程软件、人工智能组件…)

可以直接打开编程猫的"在线编辑器"进行尝试, 不需要配置编程环境, 打开网页就可以开始编程, 当然, 也可以下载离线编辑器. 而且编程猫还提供了适用各种平台的编程工具, 可以在 Windows、Mac、iOS、Android 上使用.

官网:
https://shequ.codemao.cn/

优点 / Pros:

  • 尽管是商业公司开发的工具, 但是可以免费使用. 即使不购买课程, 也有不少的资源可以学习. 不过, 我非常推荐购买编程猫出品的书籍来学习: 《玩着也能学编程》《玩着也能学Python》《计算机思维养成指南》
  • 图形化编程语言, 积木拖拽式操作, 非常直观易懂
  • 界面和 Scratch 相似, 而功能和稳定性比 Scratch 好
  • 和 Scratch 兼容, 可以利用 Scratch 丰富的资源
  • 有在线编辑器, 只要电脑能上网就能开始编程. 而且提供了多平台的离线编辑器, 同样不需要额外配置
  • 社区活跃. 如果我们碰到问题, 可以直接上官网论坛求助. 如果购买课程的话, 有系统的、手把手的教学服务
  • 由于 Scratch 社区被“马赛克”(2020年9月), “编程猫”成为了国内用户的最优选择

缺点 / Cons:

  • 是商业公司的产品, 它的目标导向还是卖课程
  • Kitten 的本质是一个浏览器, 资源占用高, 使用起来没有那么顺畅

Stencyl – 专注游戏开发

stencyl 图例

Stencyl 是一款专注于游戏制作的编程语言, 可以视作 Scratch 的加强版.

和 Scratch一样, Stencyl 也是图形化编程语言 — 通过拖拽积木来组装程序, 所以非常容易上手. 不过 Stencyl 提供了比 Scratch 更加进阶的功能和更丰富的素材, 可以方便地制作专业水准的 2D 游戏.

直接下载程序安装即可使用, 不需要其他配置(软件适用于 Windows Mac 和 Linux 平台).

值得一提的是, Stencyl 本身免费使用. 如果付费, 则可以把制作的游戏打包成 Windows、Mac、Flash、iOS、Android 程序, 在应用市场上销售.

官网:
http://www.stencyl.com

优点 / Pros:

  • 有丰富的素材和专业的功能
  • 可以方便地制作专业水准的 2D 游戏

缺点 / Cons:

  • 流行度比 Scratch 低, 而且国内比较少人使用. 如果碰到问题, 可能需要专业人员帮助
  • 如果要把游戏打包成 Windows、Mac、Flash、iOS、Android 程序, 需要付费, 不是买断制, 而是订阅制

Beetle Blocks – 专注三维设计

Beetle Blocks 图例

Beetle Blocks 是一门专门用于创建三维物体的图形化编程语言, 编程过程直观形象.

使用的是在线编辑器, 不用任何配置.

社区没有 Scratch 繁荣, 只有英文社区, 国内很少人使用.

如果孩子对 3D 打印感兴趣, 可以选择这门语言.

​官网:
http://beetleblocks.com

优点 / Pros:

  • 图形化编程语言, 容易上手
  • 体验非常独特, 可以通过编程来创建三维模型
  • 可以锻炼孩子的空间想象能力

缺点 / Cons:

  • 不太流行, 国内很少人使用
  • 教程太少

MIT App Inventor – 图形化开发安卓 App

MIT App Inventor 图例

和 Scratch 一样, MIT App Inventor 也是由麻省理工学院开发的, 提供了图形化编程界面, 用于开发 Android 应用

和开发游戏相比, App 的开发稍微更抽象一些, 所以入门会比 Scratch 难一些. 不过, 它也是图形化编程语言, 仍然比 Python 这类文字型编程语言更容易.

可以直接在线编辑, 不需要配置, 非常方便. 没有离线编辑器.

MIT App Inventor 的社区和 Scratch 的相比差很多. 而且除了官方的资源和教程, 网上教程稀少.

官网:
http://appinventor.mit.edu/explore

优点 / Pros:

  • 图形化编程语言, 容易入门
  • 很独特, 可以用于开发 Android 应用

缺点 / Cons:

  • 流行度不高, 社区不活跃
  • 教程较少
  • 服务器在国外, 从国内访问, 网速较慢

Logo – 儿童编程语言的开拓者

Logo 是一门被设计用来帮助提高儿童学习能力的编程语言, 是儿童编程语言的先驱者, 有着悠久历史(于 1967 年发明).

其发明者 Seymour Aubrey Papert(西摩尔·派普特)极富传奇, 在儿童发展、人工智能以及科技教育上做出了杰出的贡献. 后续大部分的儿童编程语言都深受他的启发 (Scratch 编程语言正是他的学生发明的). 值得一提的是, 正是 Papert 为乐高公司开发了 Mindstorms 机器人!

Logo 这个名称的含义在这里并不是指”商标”, 也不是英文字母的缩写组合, 而是来源于希腊文的”原因”和”思想”, 因为发明者希望通过 Logo 帮助孩子提高思考和解决问题的能力.

Logo 的界面里是一只小海龟. 使用者通过输入指令, 让海龟在画面上走动或者旋转, 海龟走过的地方会画上线条. 指令非常简单, 任何一个孩子一天就能学会基本操作, 同时, 通过这些简单指令的组合, 它又可以完成非常复杂的项目, 甚至用来学习包括微积分在内的各种高等数学知识!

Logo 编程语言在全球编程语言流行榜中仍排名 38 位(数据来源: TIOBE Index, 2018 年 4月). 非常突出, 难以置信! 说明这门古老的语言仍然非常有魅力.

不过, 对于孩子来说, 如果想要体验 Logo 的魅力, 我更推荐孩子使用 Python + turtle 库. 因为 Python 的 turtle 库就是源自 Logo 编程语言(turtle就是"海龟"的意思), 或者使用 Scratch 内置的"画笔"功能模块.

优点 / Pros:

  • 儿童编程教育语言的先驱者, 适合编程教育从业者尝试研究

缺点 / Cons:

  • 很古老, 界面已经不符合现在的审美, 而且功能单一 — 只能画图, 而且这个功能已经成为其他编程语言内置的一个小功能 (比如 Python 已经内置了 turtle 库)
  • 鲜少支持 Logo 语言的软件(因为硬件不断更新, 很多停止更新的 Logo 软件已经不能兼容最新的计算机)

Swift – 它有一个有趣的学习软件

swift playground 图例

Swift 是苹果公司开发的用于创造苹果手机 iOS 和苹果电脑 OS X 程序的编程语言.

这里专门介绍它, 并不是这门语言都多么适合孩子(Swift 属于文本型变成语言, 抽象程度高), 而是因为苹果公司为入门者专门开发了游戏化的学习软件 — Swift Playgrounds, 非常适合孩子学习. 使用 Swift Playgrounds 就像玩游戏一样.

可以从苹果的 Appstore 下载 ( 不能在手机上运行, 因为需要较大屏幕. 只能在 iPad 或者 Mac 上运行)


C++ 和 C# – 抽象强大的编程语言

C++ 和 C# 是商业社会中用来开发游戏的首选语言. 开发大型 3D 游戏, C++ 是首选, 而 C# 是开发中型和小型游戏的首选. C++ 在全球编程语言流行榜中, 排名第 3, C# 排名第 5 (数据来源: TIOBE index, 2018 年 5 月)

尽管这两者可以用来开发游戏, 可问题在于, 前期, 你需要花费很大的精力和时间来学习掌握语言的语法, 以及他们对应的游戏引擎 (Unreal 和 Unity). 这个过程并不有趣也不轻松.

还记得文章前面说的"学习曲线"吗?

这两门编程语言的入门学习曲线非常陡峭. 不建议作为入门语言.

需要提醒的是, C++ 是“信息奥林匹克竞赛”中最常用的编程语言. 如果你的孩子有强烈的成就驱动, 希望在”信息奥林匹克竞赛”上获得成就, C++ 即使不能作为入门, 到了后期也是必学的.

优点 / Pros:

  • 生态圈繁荣, 社区活跃, 碰到问题, 更容易获得帮助
  • 可以创建高质量的专业的游戏
  • 有丰富的教程
  • 是"信息奥林匹克竞赛"御用的编程语言

缺点 / Cons:

  • 很抽象(极其不适合儿童学习)
  • 学习曲线非常陡峭
  • 配置麻烦, 而且需要专业的开发工具

其他儿童编程语言

编程语言 备注 网址
WaterBear 模仿 Scratch, 不过指令更丰富. 最近一篇官方博客是 2015 年 12 月 9 号, 可能已经停止维护 https://waterbearlang.com
Snap 模仿 Scratch, 不过界面不如 Scratch 活泼有趣 https://snap.berkeley.edu
Alice 通过拖拽制作三维动画, 但是风格怪异, 画面令人不适 http://www.alice.org
Gamefroot 图形化编程, 可以制作游戏. 国内似乎无法访问 http://gamefroot.com
Hopscotch 图形化编程, 只适用于 iPad, 课程需要付费 https://www.gethopscotch.com
Kodable 通过玩游戏来引导孩子学习编程 https://www.kodable.com
Etoys 图形化编程, 界面有点过时, 具有"面向对象"编程思想 http://www.squeakland.org/

最后

作为家长, 你可以先评估一下孩子的接受能力(包括语言能力, 逻辑思考能力), 再从上面挑选一门编程语言作为入门. 如果你还是不知道如何选, 那么我建议直接选用 Scratch.

需要注意的是, 这个世界常常有一种争吵, 互相争论"哪种工具更好". "编程语言"的选择同样存在这样的争论. 这种争论会永远存在下去, 除非我们拿起其中一门编程语言开始练习、创造. 这种争论, 对于我们个人来说, 才算终止

世界上只有 2 种编程语言: "被大家抱怨的"和"没人用的"
赞(8)
如需转载, 请先联系: patiencing@outlook.com土豆爸爸 » 少儿编程从什么语言开始学起?

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址