五嘎子 1 周前发布 | 496 次阅读 编程
我最常被老师和家长所问到的一些问题是: 我应该选择哪一种编程语言来教孩子编程呢? 坚持选择像 Scratch 这样的图形化编程语言作为开端很重要吗? 应该在什么年龄转换到学习代码编程呢? 还有我应该如何在 Python,Java, 还有 JavaScript 之间选择呢?
经过将近 10 年, 对成百上千个学生教授编程, 我经常出席各种会议, 或为刚接触计算机科学的老师举办讲习班. 许多老师都是第一次尝试在他们学校里建立计算机科学课程, 所以他们对于选择编程语言的谨慎, 是可以理解的. 除了试图找出最适合他们学生的东西外, 教师讲授的内容还必须在授课舒适度, 以及校园, 学生, 家长四者之间取得平衡.
那 "合适" 的编程语言, 真的存在吗?
编程语言不是重点, 编程中的概念才是!
就像你猜的那样, 答案自然是否定的. 编程语言不是重点, 但教导孩子如何利用编程去解决问题才是重点. 理解如何一步一步地建立算法, 从而搞定作业, 再想出最佳的思路来编写代码, 这可能才是最困难的部分.
学习相当少量的关键词和特定编程语言的简单语法很简单 -- 比学习一门真正的口语语言要容易得多! 相比而言, 为了独立完成编程, 必须了解编程中变量, 列表, 条件, 循环, 还有函数中的基本概念, 然后才能知道何时, 何地, 如何使用它们将算法转换为代码.
一个学生一旦掌握了以上这些概念, 并且以一种语言编程成功, 这时再用另一种语言来编程就不难了. 转换编程语言并非打个响指一样容易, 但确实可以做到.
话说回来, 掌握的第一种编程语言会改变将来思考和编程的方式吗? 学习当下行业里最流行的语言重要吗?
2018 年美国热门编程语言 Top10[图源: YoungWonks]
编程语言变化不定, 你终将适应
编程语言的流行度会变, 没有人敢保证我们今天教会孩子的东西, 在他们进入职场的时候还适用. 我学习的第一门编程语言是 Pascal(对, 你可能得百度一下).
多年以来, 我使用过不同的设备来学习不同的语言 -- 其中不乏一些晦涩难懂的. 在作为教育工作者的这 10 年里, 我学习了 Logo,Scratch,Processing,JavaScript,Arduino 和 Python 的一大堆知识, 好让我能在课堂上大展拳脚.
6 年前, 我建议孩子们从学习 Logo 开始, 一门最早应用于计算机科学教育当中的编程语言, 而我相信, 它就算放在今天, 也依然是一个颇具影响力的选项. 划重点: 如果你能教会孩子们基本的编程概念, 他们也能在一门语言上花上足够的时间, 他们理论上就已具备了日后转换语言的基本条件.
这还有一条经常提到的问题: 我们总是应该优先教会孩子图形化编程, 而非代码编程吗?
图形还是代码?
差不多 10 年前, 在一节六年级数字设计课上, 我开始使用 Scratch, 一门也许是最流行也是对孩子最友好的图形化编程语言. 我随后将这门编程语言拓展到所有年级. 我对不久前刚发布的 Scratch 3.0 中新功能感到兴奋 -- 尤其是文字转语音和文字翻译这两个拓展功能.
图形化编程的出现, 极大减轻了青少年对编程的挫败感, 诸如漏掉一个逗号或者忘了把右括号补上之类, 反而让他们留有更多时间来理解当中的概念. 另外, Scratch 对于创新的鼓励以及在图像创作, 声音编辑, 分享和项目混制方面的功能优化, 让它在成为各年龄段孩子首选编程语言上变得理所当然. 较之被称为 "编程语言", 它更希望被定位为一个绘图工具, 一个动画制作工具, 或是一个故事与游戏创作工具, 这些元素综合起来, 让 Scratch 变得更友好而不唬人.
我发现在使用 Scratch 几年后, 学生更愿意去尝试代码编程, 因为他们觉得那意味着长大, 只有 "真正的编程" 才会被行业采纳. 我还见证过语言的转换中, 有时只需要给孩子们回顾一下例如变量和循环的概念.
我的中学学生们愿意为学习代码编程付出额外的努力, 通常他们会放慢速度, 以保证在处理 Python,JavaScript,Arduino 和 Processing 挑战时不犯下拼写和语法错误. 不过, 学生一旦能够通过刚开始时 "我得看着点有没有打错字" 阶段, 他们常会爱上代码编程的灵活性和可塑性, 尤其是当他们发现复制, 粘贴, 协作和修改在代码编程中有多方便时, 偶会发出 "也没想象中那么糟嘛" 类似的感慨.
每年夏天, 我在 Foothill College KCI 计算机科学合作课程上, 都会分别用 Scratch 和 Python 两种语言, 为教师展示同一个项目. 他们爱看把两种语言放一起比较. 我们甚至会以伪代码, 或者叫流程图作为开始, 把完整算法在开始编程前先写下来.
这是一个检查密码的迷你项目, 它在流程图, Scratch, 和 Python 中, 分别长这样:
密码检查器流程图
用 Scratch 展示的密码检查器
用 Python 展示的密码检查器
我课堂中的老师和学生在没接触过图形化编程的前提下, 都能轻松学习 Python, 这说明好项目在前, 从代码编程开始学习同样行得通.
是什么让一门编程语言, 变成适合孩子学习的编程语言? 选择一门语言的标准是什么?
虽然知道教授编程, 更多是关于它的概念, 你也知道不需要再为作出完美的第一次选择而慌乱, 但问题依然没有得到解答: 什么因素让一门编程语言成为孩子学习编程的好选择呢? 通常由以下几点来衡量: 速度, 应用, 可用的库, 行业支持. 下面我再来说说我认为重要的几个标准.
它有强大的教育者社区吗?
我频繁提到 Scratch 和 Python 的其中一个原因是他们都有附属的线上教育者社区. 他们拥有如此庞大社区, 背后的原因是他们总是以免费的形式, 开放的姿态, 接纳来自世界每个角落的用户. 拥有庞大的社区, 意味着你能找到更多资源, 诸如项目, 教案, 教程, 视频和书籍一系列为课堂而设的材料.
学起来好上手吗?
有许多代码式编程语言可供选择, 一些在当今的科技行业中更吃香, 一些有特别的功能方便他们创造特定的项目. 虽然说许多高中生最终不得不为通过计算机科学进阶入学考试 (AP Computer Science A) 而学习 Java, 但这一定不是最简单的语言. Python 目前看起来更简单, 并且凭借着它简洁直白的逻辑, 在教育界中越来越受欢迎. 在我将 Python 用作计算机科学选修课语言 3 年后, 我依旧会被它完成工作的效率, 以及中学生用它编写代码的速度所震惊. 受到 Python 在教育孩子编程方面的启发, 我花时间写了一本关于它的书.
它背后的设计理念是什么? 它是为这个年龄段的用户所设计的吗?
为用户设计适合其年龄的工具很重要, 编程语言可以根据它不同年龄段的用户展示或者隐藏相应的功能. Scratch, 扎根在培养孩子的创造力表达上, 刻意将一些功能性代码以封装的形式呈现出来. ScratchJr. 是为还在识字的孩子而设计的, 所以它没有变量和条件这些对这个年龄段孩子来说太难理解的功能. Python 为不同类型的项目提供扩展支持, 但这些额外的扩展都需要你亲手把它们添加进来, 这样它们就不会在你不需要的时候出来干扰视线. 为更大的学生所用语言一定要含括对 debugging 的支持, 基本操作了. 如果讲授 "面向对象" 编程是重点环节, 那使用 Java 教学就是一个好选择.
容易安装吗? 能跨平台运行吗?
这些都是要记在心里的东西, 尤其当学生需要回家编程时显得更为重要. 一些语言只能在特定环境中工作, 譬如 Apple 的 Swift 编程语言. 如果学生在 Chromebook 上编程, 那么有一个稳定的, 基于浏览器的工具就更加关键. 需要考虑的另一个问题: 这个语言能让学生回到家中也免费使用吗? 还是有一些隐藏的扩展需要付费方才解锁?
能否轻松地在社区中分享项目?
Scratch 背后其中一个基本元素就是社区, 让孩子们互相分享, 相互学习. 这个社区对教师们来说也同样重要. 不过, 分享也要有计划: 何时分享, 允许学生分享多少内容, 评论和修改他人的作品等. 也许把 JavaScript 作为第一门代码式编程语言进行学习会让你大皱眉头, 虽在易用性和上手难度上都不如 Python, 但它的优势在于它是属于网络的脚本语言, 只要把项目发布到校园网服务器上就能展示给大家看, 方便又快捷.
撑起 Scratch 的一个重要基本元素 -- 社区
选择编程语言时要考虑的方面还有很多. 这个项目能用到什么语言? 不同的语言可能支持不同类型的项目. 举例来说, Processing 和 P5.JS 让制作动画变得更轻松; Python 把复杂的数据分析甚至是机器学习变为可能. 老师们也可能更倾向一个强大的课堂工具, 便于管理作业和批改成绩, 尤其对小组项目而言.
一个最经常被问到的问题是:"这门编程语言现在流行吗?" 流行度对于学生选择学习一门编程语言来说有很深影响, 也不难理解家长希望孩子能掌握对未来职业有利的技能那种心情. 无论如何, 教授良好的编程习惯胜过教授流行编程语言.
虽然我们可以强调要找到 "完美" 的编程语言, 但我们不要忘记, 最终的目标是让学生探索基本的编程概念. 他们或许在你的课后就不再插手编程, 你教的语言在他们长大后也可能变得过时, 重要的是, 教授编程将会帮助学生理解计算机是如何解决问题, 收获批判性思维技能, 并希望他们有朝一日洞察到, 用代码创造东西的乐趣.
本文由用户 五嘎子 自行上传分享, 仅供网友学习交流. 所有权归原作者, 若您的权利被侵害, 请联系管理员.
来源: http://www.open-open.com/news/view/5096697960981295027