现在我们的社会变得如此依赖技术的速度,可以肯定地说,基本的计算机编程不再是一种只有感兴趣的人才应该学习(并最终掌握)的素养。为孩子们编写计算机编码不应该是某种只有有远见的父母才能让孩子参加的课外活动。它应该成为各级学生的必修课。 基于当前的模式、趋势和技术进步,未来就是编码。正如计算机素养已成为许多不同职业(甚至是计算机科学领域以外的职业)的要求一样,计算机编程也将如此。 值得庆幸的是,今天的孩子们似乎同意。根据 Code.org 的数据,超过 1000 万学童参与了一年一度的"编程一小时"活动。编程已经成为一个越来越流行的话题。 随着当前的全球大流行将我们中的许多人限制在家里,许多人现在有时间和手段去追求它。 我们的社会依靠软件运行。教孩子们如何正确使用、交互和潜在地修改它可以证明是其他工作中非常有用的技能。但并非所有的编程语言都是一样的。一些更复杂的代码肯定会让孩子们无法学习如何编码。 这就是为什么儿童编码语言如此重要的原因。他们剥离了常规编程的技术细节和挫折,以帮助孩子(和初学者)熟悉基本概念。 在本文中,我们将介绍我们认为截至 2021 年最适合儿童的 12 种编码语言。I. SCRATCH Scratch 主要为 8 至 16 岁的儿童开发,是一种免费使用的教育编程语言,由 Mitch Resnick 开发,并获得麻省理工学院 (MIT) 终身幼儿园小组的专利。由于其直观且高度可视化的界面,它可以说是面向儿童和新编码人员的最著名的基于块的编程语言之一。 Scratch 平台为孩子们提供了开发艺术、动画、游戏、互动故事等所需的一切。他们以一种干净、直接的方式做到这一点——有效地保持低挫败感和高参与度。鲜艳的色彩、清晰的标签和有趣的字符都使该平台成为儿童编码教学的绝佳起点。 也许 Scratch 成为我们首选之一的主要原因是它为儿童提供了表达自由。为孩子们创建基于视觉的编码语言背后的整个概念是简化编程过程。 如果您曾经见过或尝试过基于文本的编码,您就会知道技术和/或语法错误的风险非常高。一个不合适的分号或封闭的括号可以使四十行代码无用,并且必须扫描每一行以查找一个错误就像听起来一样令人沮丧(如果不是更多的话)。 仅仅考虑让孩子经历这一切是非常不可能的。 像 Scratch 这样的基于块的可视化编程语言消除了文本技术细节,这样孩子们就可以专注于学习(和掌握)编码的基本概念。使用 Scratch,几乎任何具有任何经验水平的人都可以从头开始开发动画、游戏和互动故事。 更重要的是,Scratch 的在线社区非常庞大。目前有超过 7000 万注册用户(并且还在增加),他们使用 Scratch 平台创建和分享了超过 8200 万个项目。任何人都可以加入这个社区,只要他们友好、尊重并遵守 MIT Scratch 团队的社区准则。 与志同道合的人互动并了解可以使用 Scratch 完成的程序类型,这对您的孩子来说是一种不可思议的灵感和动力来源。事实上,Scratch 用户(被称为Scratchers)需要将他们的项目(包括代码!)存储到 Scratch 服务器。 这允许其他 Scratchers 访问代码并研究它,以便他们可以看到更高级的程序员如何使用他们正在学习的相同语言开发复杂的游戏! 如果您的孩子有兴趣学习如何使用 Scratch 进行编码,您可以查看 CodaKid 的Scratch 编码课程。这肯定是一次深入、广泛、有教育意义且引人入胜的体验。II. BLOCKLY Blockly 是另一种强烈推荐的面向儿童的视觉块编程语言。事实上,它通常被视为谷歌对麻省理工学院Scratch的回应。 乍一看,这两个平台非常相似。Blockly 还使用分块成块的代码行和拖放系统来帮助孩子们学习编码概念。与 Scratch 一样,这消除了技术错误的风险,并让孩子们专注于基础知识。Blockly还利用明亮、直观且用户友好的界面来保持孩子们的兴趣和参与度。 两者之间最大的区别在于 Blockly——作为一种面向儿童的可视化、基于块的编程语言——实际上是由几种预先存在的编码语言组成的。 在 Apache 2.0 许可下开发,Blockly 通常被描述为"用于创建可视化编程块编辑器的客户端 JavaScript 库。"这只是意味着 8 岁及以上的孩子可以在他们自己的浏览器安全的情况下使用 Blockly 创建游戏、动画和程序。 他们还将使用以可视块形式编写的流行编码语言(如 JavaScript、Python、PHP 等)进行编程。这要归功于 Blockly 的 JavaScript 库,它基本上充当可以访问预先编写的语言的集中位置。如果需要,用户还可以切换编程语言(例如从 Python 到 PHP)。 Blockly 的 UI 尤其丰富多彩,他们使用的编码块都有不同的形状。这有助于孩子们轻松找到、选择和识别正确的积木。主要的脚本编写平台分为两部分:一个包含您需要的块的工具箱和一个用于拖放和块上的空白区域(即编写代码)。孩子们只需选择他们想要的块,将它们拖出工具箱,然后将它们放到空白处(一次一个)。一旦块位于空间上,它们就可以重新排列它们以创建序列、循环、条件等。 Blockly 通过检查运行完成的程序(类似于通过调试过程运行文本代码)。如果解决方案不正确或程序没有按照应有的方式运行,Blockly 会再次分析代码,直到找到错误,然后突出显示错误以供用户查找和更正。 这种高度可视化、简洁的编码方式使任何人都可以开发实际运行的 Android 应用程序。这是正确的; 您可以使用 Blockly 制作实际的应用程序。因此,尽管 Blockly 主要是作为一种面向儿童的编码语言,但该语言本身的功能使其不仅仅是一种简单的儿童教学工具。III. ALICE Alice 是卡内基梅隆大学为儿童开发的另一种免费使用、基于块的可视化编程语言。这是一个创新的编码环境,可以非常简单地编写动画、交互式叙事和简单的 3D 游戏。 Alice 旨在通过创造性的探索来教授面向对象编程语言(如 C )的概念——侧重点是逻辑和计算思维技能、基本编程原则以及对整体编码的基本理解。 Alice 使用与 Scratch、Blockly 和大多数其他视觉编码程序使用的相同的拖放构建块系统。而且,就像那些平台一样,这消除了基于文本的编码带来的混乱,并允许用户专注于简单地开发脚本和编写解决方案。 Alice 与 Scratch 和 Blockly 的最大区别在于它还允许用户使用动态摄像机角度和 3D 模型。 使用 Alice 的平台创建的程序可以转换为 Java 编程的集成开发环境 — 也称为 Java IDE。这基本上将用 Alice 的编码块编写的脚本转换为实际的基于文本的编程语言,如 JavaScript 或 Python。这意味着孩子们可以在处理相同的脚本或项目时从使用可视化编程过渡到标准编程。 唯一需要注意的是此功能可能会促使年轻观众过快或过早尝试真正的基于文本的编程(即使有 10 推荐)。但是对于真正热衷于编码的孩子——并且不介意随之而来的挑战——这不应该是一个太大的问题。IV. LUA (Roblox) 对于想要开始(或冒险进入)儿童文本编码语言的孩子来说,Lua 是一个不错的选择。它是一种免费、可移植且对初学者友好的脚本语言,它引入了简单的概念,同时优化了可读性和效率。 这也不会以任何方式损害其作为程序或平台的功能。尽管界面简单且技术含量最低,但 Lua 仍然是可用的最强大的免费语言之一。 这种编程语言经常被比作 Python,因为它们都是基于文本的简化脚本,旨在消除可能使孩子们感到沮丧的潜在语法问题。例如,不需要在每行代码的末尾写分号。 由于其效率和令人难以置信的便携性,Lua 非常适合对嵌入式设备和移动应用程序进行编程。事实上,您是否知道曾经流行(并且非常容易上瘾)的游戏Angry Birds是基于 Lua 的?那不是全部。Roblox——我们一直以来最喜欢的儿童编码平台之一——使用 Lua。 CodaKid 的Game Development with Roblox赛道也恰好是我们最受欢迎的在线课程之一,因为我们的学生可以使用 Lua 代码创建一系列令人兴奋的游戏。 Lua 也只有一个庞大而活跃的社区(就像 Scratch 一样)。它充满了其他编码人员、学习者和经验丰富的开发人员,他们非常乐意为年轻和新成员提供指导、技巧和反馈。V. JAVA (Minecraft) 我们不得不承认,我们不像 Lua 那样喜欢 Java。Java 作为一种编程语言已经足够、有效且功能强大,足以成为编程社区中相当流行的选择。然而,作为一种面向儿童的编程语言,它并不是我们的最爱。不过,我们将它列入此列表有几个原因,其中最大的原因是 Java 是Minecraft的语言——几乎每个人都知道和/或听说过的在线沙盒游戏平台。 自 2011 年首次推出以来,《我的世界》在儿童、青少年甚至成人中逐渐流行起来!游戏的本质鼓励创造性思维和横向解决问题的技能。 尽管它的设计很简单——几乎卡通化——但 Minecraft 实际上提供了一种复杂的、多方面的游戏体验。游戏不会以任何方式强迫玩家的手。事实上,Minecraft 玩家甚至不必玩游戏的实际"主要任务"。他们可以随心所欲地自由探索、挖掘、制作和建造。 在教孩子们编码的背景下,Minecraft 可以成为教孩子逻辑、解决问题、视觉空间技能和手眼协调能力的强大工具——仅举几例。 此外,Minecraft 玩家可以使用 Java 为游戏创建修改(通常称为"mod")。Mods 基本上是可以改变游戏的附加组件。 从小的添加(比如添加新的武器和材料)到主要的修改(比如完全改变图形的外观),mods 是 Minecraft 社区继续发展并保持活跃的原因之一。玩家不断上传新模组并更新旧模组,以使游戏更有趣。 要创建模组,玩家必须访问 Minecraft 的 Java 源代码(由于 Minecraft 的开放架构而可用)并相应地编写代码。如果您想更深入地了解 mod 可以做什么,这里是截至 2021 年的最佳 Minecraft Mod列表。 因此,尽管它是一门(相当)复杂的语言,但我们仍然不得不承认,学习 Java 是非常有益的。对于真正想要学习基于文本的编码和/或喜欢玩 Minecraft 的孩子,Java 也是一个不错的选择。VI. PYTHON 与 Java 不同,Python 不是一种复杂的儿童编程语言。事实上,它干净、直截了当,并且绝对令人愉悦(与大多数其他基于文本的编码语言相比)。它可能不是基于块的,但它肯定使用相同的原则:保持简单并专注于基础。事实上,它是如此的用户友好,以至于 8 岁的孩子都可以学习它。 除其他外,Python 坚持使用良好的代码布局来优化效率。它还允许在线支持和广泛的可访问 Python 库。随着孩子们使用 Python,他们将学习一些更复杂但仍然至关重要的编码基础知识:变量、循环、函数、语句、基本数据结构(如列表、映射等)等等。 掌握这些概念将为您的孩子以后处理更高级的编程项目打下良好的基础。 Python 对文本的使用与其精简、重组的编码方法相结合,使其既是掌握其他语言的有力起点,又是严肃游戏/网络/应用程序开发的强大工具。我们 CodaKid 坚信 Python 是最适合儿童的、最有效的编码语言之一。 事实上,我们有一个与我们的 Minecraft 和 Roblox 课程一样成功的Python 游戏开发课程。孩子们可以创建各种 2D 游戏(格斗、多人游戏等),同时加强他们对 Python 和基于文本的整体编程的掌握。 如果您想了解有关 Python 的更多信息,请参阅我们的文章,概述Python 编程最适合儿童的 5 个原因!VII. GO (Golang) 尽管是鲜为人知的之一——而且是更新的!– 编码语言,Go(发音为"Gow")正在成为相当多的选项中更好的补充之一。 这种开源编程语言于 2009 年开发和发布,被描述为"静态类型"和"编译",与 C 和 Haskell 等较旧的、更常见的脚本处于同一条船上。尽管 Go 还很年轻,但它已经开始在社区中掀起波澜。事实上,Go 已经普及到各种不同的行业。 现在有越来越多的财富 500 强公司和公司在他们的程序中使用 Go。一些例子?优步。网飞。甚至美国运通也使用 Go。 从结构上讲,Go 与 C 非常相似。C 也是一种编译语言,它使用了与 Go 相同的许多技术、布局和语法系统。最大的区别在于结构类型、CSP 样式并发、内存安全和垃圾收集。这基本上意味着习惯用 C 编码的人仍然需要从头开始学习 Go,但语言之间的转换无疑是无缝的。 在语法简单性方面,Go 也经常与 Python 进行比较。在我们看来,Python 比 Go 简单得多。但是同时学习两者都没有坏处,因为 GO 很可能有一些好处,比 Python 更适合编程问题。 直到今天,围棋的受欢迎程度还在不断上升。似乎越来越多的开发人员已经抓住了这种语言的潜在可能性,而且他们似乎不会很快放弃。 撇开可访问性和能力不谈,Go 与 Python 一样适合儿童编程语言,这要归功于其简化和精简的品质。VIII. TWINE Twine 被定义为一种免费的"用于讲述交互式、非线性故事的开源工具"。它着重于编码的创建方面,摒弃了编码概念和技术术语。 事实上,Twine 选择通过教用户如何构建和呈现交互式游戏和故事来教用户如何编码。这使得 Twine 非常适合那些喜欢创造但对编码的机械和方法论方面感到不知所措或沮丧的孩子。 Twine 最初于 2009 年创建和发布,从那时起,它被各种年龄、背景和技能水平的人和程序员(包括大量教育工作者)使用。 使用 Twine 时,孩子们不需要知道代码或如何编写代码。但是,如果他们有专业知识,他们确实可以选择 使用变量、条件逻辑、CSS、JavaScript 等来扩展他们的故事。使用 Twine 制作的故事由通过设计界面连接的文本和图像页面(如网站)组成。每个页面都可以使用文本、链接和图像进行修改。 Twine 也直接发布到 HTML,这意味着孩子们几乎可以在任何地方发布他们的作品,并且几乎任何人都可以使用它。 虽然 Twine 并不完全是一个教孩子们编码的应用程序,但它可以被视为一种编程语言,可以帮助孩子们培养他们在编程中所需的规划和设计技能。还值得一提的是,Twine 现在已经成为许多游戏设计师和故事讲述者的重要应用程序。该应用程序有一个支持维基、在线教程和一个非常活跃的用户社区。IX. JAVASCRIPT 与 Java 不同,JavaScript 是一种非常适合儿童的编码语言。它干净、整洁,并且比 Java 具有更少的语法(和其他潜在的技术)要求。它还有助于几乎所有网络浏览器(即 Google Chrome、Mozilla Firefox 和 Internet Explorer)都使用它。 如果您的孩子能够掌握这门语言,他们几乎可以完全访问所有内容。他们可以将简单的 Web 文档转换为完整的游戏或令人难以置信的交互式应用程序。他们创建的每个项目都可以被广泛的受众共享和消费。JavaScript 本质上是网络语言。 当然,如此强大的功能和多功能性需要权衡。JavaScript 有很多元素需要注意。它可能并不杂乱,但不可否认它是广泛的。孩子们必须完全掌握变量、数组、对象、方法、循环表、函数和参数,然后才能深入学习 JavaScript。 我们知道; 很多。但我们完全相信这是值得的。 在 CodaKid,我们认为 JavaScript 是一种升级技能,适用于已经拥有相当数量的 Scratch 或 Python 编码经验的孩子。我们推荐的年龄是 10 岁,但老实说,我们已经看到一些年仅 8 岁的孩子参加并充分享受我们的JavaScript 游戏开发 课程。X. C# (Unity) C# 与其说是一种编程语言,不如说是一种流行的游戏引擎(称为 Unity),拥有自己的语言。尽管如此,作为一个完整的平台,它仍然是一个很好的工具,可以教孩子们在创建具有专业外观的高质量游戏时如何编码。作为一个封闭源代码、跨平台的游戏开发应用程序,C# 允许用户在 3D 中使用对象。他们还可以选择向这些对象添加各种元素。 如果您的孩子熟悉 Java,他们可能会发现 C# 很相似,因此很容易掌握。 然而,尽管 C# 处于游戏平台状态,但它实际上主要被称为 Windows 应用程序开发的主要语言。相比大多数,C#A体面强大的语言,可用于许多项目其他比Windows应用程序。但是,其直观的功能和完整的 .NET 支持使其几乎成为每个开发人员在为 Windows 操作系统创建桌面软件时的首选。 C# 不是特别简单或对孩子友好,但 Unity 使孩子们可以在使用引擎创建游戏时学习该语言。更重要的是,学习 C# 的内在要求可以让您的孩子具备编程技能和软技能,他们可以在未来的编码工作中轻松使用这些技能。这使得 Unity 和 C# 成为好奇的新编码人员的一个很好的起点。 Unity 有一个免费版本可供下载,并且可以在 Unity 官方网站上下载大量免费教程和课程。有了足够的指导,孩子们在浏览引擎和网站来学习 C# 时应该几乎没有问题。XI. SWIFT (Swift Playgrounds) 虽然我们不太喜欢 Swift Playgrounds 如何将 Android 用户排除在体验其无可否认的丰富和完全吸引人的环境之外,但我们不能因为它是 iOS 独占而指责它。Swift Playgrounds 最初于 2016 年推出,作为教孩子们如何编码的工具进行销售。时至今日,它仍然是最适合儿童的编码工具和编程语言之一。 Swift Playgrounds 应用程序包含许多基本的编码课程和游戏化的编码挑战供孩子们完成。界面紧凑,干净,视觉上令人愉悦。绝对是一次很好的尝试,如果不仅仅是为了体验。 然而,这是值得注意的是,斯威夫特游乐场不允许太多的自由和其教训,给点创意思维,我们就会真正要调用的教训限制。与众多编码资源和儿童编码教学工具不同,用户不能偏离每节课和挑战中的预定义路径。这是一些孩子可能更喜欢的非常严格的体验(特别是如果他们喜欢秩序和指导),但这意味着其他孩子可能会觉得它太令人窒息或不够吸引人。XII. RUBY 最后但并非最不重要的是 Ruby——一种面向儿童的动态类型、面向对象的编程语言。它使用清晰的语法、垃圾收集和即时编译来优化编码体验。对于认真的编码人员,Ruby 可以支持多种编程范式(包括过程和函数式编码)。 对于新手程序员和年幼的孩子,Ruby 可以以一种随意、直接的方式介绍看似复杂的概念。它是一种专门设计用于使编码尽可能简单和简单的语言。根据创建者的说法,它遵循最小惊讶原则 (POLA) 哲学,并且基于同样简单的脚本语言,如 Smalltalk、BASIC 和 Lisp。 重要的是要记住,每个孩子都是不同的。没有一刀切的解决方案来教孩子们编码。 我们在这里学习、评估和推荐的 12 种语言都是很好的选择。这是列表的快速回顾:ScratchBlocklyAliceLuaJavaPythonGoTwineJavaScriptC#Swift PlaygroundsRuby