作为一名学生教师,我对诸如 Scratch、Logo、Alice 和 Lego mindstorms 等“迷你语言”在教授学生编程的核心概念(如变量、函数和循环)方面的有效性非常感兴趣。
在教授这些基本核心概念方面,一种“迷你语言”是否比另一种更好?
作为一名学生教师,我对诸如 Scratch、Logo、Alice 和 Lego mindstorms 等“迷你语言”在教授学生编程的核心概念(如变量、函数和循环)方面的有效性非常感兴趣。
在教授这些基本核心概念方面,一种“迷你语言”是否比另一种更好?
这是一个非常困难的问题。Logo 和 Smalltalk(仅举两个明显的例子)最初都是专门为教孩子编程而设计的。但是你很快就会遇到一个问题:很难定义一种语言既简单到足以让一个小孩完全理解,又足够丰富以避免它很快变得限制和笨拙。
至少从我所见,大多数尝试在这两个方面都表现不佳。举个例子,大多数试图包含冗长的内容是为了让代码读起来更像英语(例如 Logo 中的“To:”)。孩子们的键盘输入技能通常很差,以至于这种冗长令人沮丧。他们还(根据我的经验)期望如果部分语法看起来像英语,该语言也应该接受其他有效的英语(我希望其他语言的母语人士也是如此,但我的经验主要是英语使用者)。
同时,大多数孩子(与我一起工作过)很快就发现他们发现了迷你语言的限制。其中一些可能源于上面提到的挫败感。有些可能还源于他们的老师(至少有一些)在想出有趣和具有挑战性的练习时缺乏想象力。我认为今天也比(比如说)20 年前困难得多——当时,孩子们对他们可以用海龟图形绘制的东西感到兴奋(例如)。今天,他们已经习惯了具有照片般逼真的 3D 图形的游戏,而用直线绘制 2D“玫瑰”似乎让更多的人觉得基本上是蹩脚的。
根据您所教的孩子的年龄,我只会使用更简单的语言,例如 python。
这是一本免费的书,它教授所有的基础知识,只有大约 200 页: http ://www.greenteapress.com/thinkpython/thinkpython.html
我认为您使用哪种“迷你语言”并不重要。但我认为,如果您不打算解释比基础知识更多的内容,那么您最好使用真正的小型语言而不是“真正的”语言。当我学习了基础知识(使用 Java)时,我真的很恼火,因为我必须在public static void main
不知道这一切意味着什么的情况下记住。所以我会选择一种开销尽可能少的语言。选择哪种特定语言实际上取决于学生的年龄。
可能性挺多的,归根结底这类问题与“品味”有很大关系。不过,出于几个原因,我确实认为该方案是一个非常好的选择。一个是它是一种非常简约的语言,几乎没有使事情复杂化的语法方式。另一个是我觉得方案表达了一些关于计算的真正基础,并且非常清楚地表达了这一点。另一个是 Scheme 可以以非常“多范式”的方式使用。您可以在 Scheme 中进行函数式编程,或命令式编程。从头开始为 Scheme 构建一个对象系统也非常容易——您可以用不到 100 行代码将一个简单的对象系统移植到该语言上。还有一些具有很多库的 Scheme 实现,
最后,大量的注意力都致力于在 Scheme 中开发好的教学材料。“计算机程序的结构和解释”被公认为是经典,但我认为其中的很多材料对年幼的孩子来说是相当困难的(它针对的是麻省理工学院的新生。)但也有更温和的材料,例如“如何设计程序”:http : //www.htdp.org/ 在 htdp 中您可以非常清楚地看到的一件事是,Scheme 的最小语法如何使您能够正确理解重要的想法。
Scheme 作为第一语言的主要缺点是,现在真正广泛使用的大多数语言看起来都不像 Scheme,所以学生在迁移到它们时可能会有一些调整。但我倾向于认为,特别是对于孩子来说,首先获得核心思想是最重要的。