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