了解 Alice
在我撰写了一篇关于 Scratch 编程环境的评论后,我们的一位读者建议我研究一下 Alice 编程环境。http://alice.org/ 嗯,我已经了解了 Alice,发现它是一个非常令人印象深刻的编程环境。 顺便说一句,我一直在寻找有趣的主题来写作,所以如果您有建议,请通过电子邮件发送给我。
Alice 是一个编程环境,允许学生在引人入胜的 3D 环境中学习面向对象编程。 通过 Alice,学生可以将对象添加到 3D 世界中,并使用每个对象的内置方法来创建动画、互动故事或游戏。 当学生对他们的作品感到满意时,他们可以将其导出为标准网页的形式,与他们的朋友或教师分享。 尽管 Alice 是用 Java 编写的,并且主要针对 Java,但在 Alice 中演示的大多数概念和结构都适用于几乎任何现代语言。
在本文中,我使用的是 Alice 2.0.7 版本,您可以在图 1 中看到初始屏幕。坦率地说,它看起来很像任何其他 IDE。 让我们看一下图 2,这是加载示例项目之一的结果。 在本例中,我选择了最喜欢的“游乐园”项目。
在左上角的面板中,我们有所谓的对象窗口。 在这里,我们看到了项目中使用的所有对象的列表。 用户从列表中选择一个对象后,他们可以在下面的左下角窗口中看到属于该对象的方法和属性列表。 从那里,用户可以单击“编辑”按钮并编辑给定的方法。
当然,节目的亮点位于下方的中央窗口,我们可以在那里找到代码窗口。 在代码窗口的主要部分,您可以看到构成当前对象或方法的代码。 在底部,您可以看到可用于构建程序的代码元素。
要创建对象方法,学生只需从对象窗口中选择对象,然后单击该对象的“创建方法”按钮。 从那时起,学生只需将代码段从屏幕底部拖到代码面板上。 学生可以通过单击代码右侧的按钮之一来创建方法参数或变量。
在代码窗口的底部,我们看到“顺序执行”、“同时执行”、“If/Else”、“循环”、“While”、“按顺序对所有执行”、“同时对所有执行”、“等待”、“打印”和“//”。 这些是 Alice 程序员可用的核心代码元素。 对象方法可以通过简单地单击对象窗口中的对象并将所需的方法拖到代码窗口中来引入。
“顺序执行”只是一种将按顺序执行的指令分组的方法,很像其他语言中的括号或 BEGIN/END 组。 另一方面,“同时执行”是一种将并发执行的指令分组的方法。 这是一个相当高级的功能,它为探索多线程编程提供了机会。
“If/Else” 使学生能够创建一个带有可选“else”子句的“if”子句。 一旦学生将“If/Else”拖到代码窗口中,他们将看到一个条件表达式容器,以及与指令的“if”和“else”侧相对应的代码容器。 学生可以将他们希望的任何指令拖到每个代码容器中。 但是,我确实发现布尔表达式创建过程一开始有点麻烦。 一旦我意识到我可以将变量拖到条件表达式容器中,然后 Alice 会引导我完成其余的操作,事情就变得顺利多了。 使用条件容器中提供的选择列表会导致奇怪的结果。
“循环”使用起来非常方便。 在其默认模式下,学生只需指定他们希望代码块执行多少次。 在高级模式下,学生可以指定完整的类似 C 的结构。
“While” 的使用方式与 “If/Else” 非常相似,理应如此。
“按顺序对所有执行”和“同时对所有执行”功能允许程序循环遍历列表中的每个元素。 列表可以动态创建,也可以是预定义的变量。 一旦放置了这些代码元素中的任何一个,就会创建一个本地范围的索引变量,其中包含列表中的当前项。
“等待”元素只是使执行暂停给定的秒数。
人们会认为“打印”元素应该相当直观。 但是,我无法确定输出实际上去了哪里。 但是,由于 Alice 主要是一个 3D 编程环境,我想打印是不相关的。
所有 Alice 程序都是使用这些简单的代码元素构建的,但真正的力量(和乐趣)来自对象为 Alice 环境提供的方法。 例如,相机对象提供在 3D 环境中移动用户视点的方法。
仅仅在空旷的环境中移动会很无聊,所以让我们谈谈 Alice 自带的一些对象。 对象从图库加载,包括各种类型的人物、建筑物、动物、车辆、地形特征和其他道具。
我认为描述可能性的最佳方式是通过示例。 参见图 3。在这里,我们看到了一个示例项目,该项目演示了章鱼和旋转木马对象。 这些对象是完全动画的,并且每个对象都提供一组独特的方法。 例如,章鱼对象提供了一个 SpinAnimation 方法,该方法使手臂上下移动并使对象绕其轴旋转。
另一方面,PinkBallerina 对象提供的方法允许她在环境中移动并向用户“说”消息。
Alice 呈现的 3D 环境引人入胜,坦率地说,非常有趣。 在哪里你还能在同一个地方拥有日本武士、电贝斯、月球着陆器和牛仔? 虽然我不喜欢严格的面向对象编程,但我确实理解面向对象编程的好处,并且 Alice 对于相当高级的学生来说是一个很好的入门。
话虽如此,我确实发现 Alice 有点不稳定,有时也有点违反直觉。 某些对象支持某些在上下文中似乎没有意义的方法,而缺少其他似乎合适的方法。 但有时这就是编程的本质,大多数程序员已经学会了忍受。 Alice 严格的面向对象性质和引人入胜的 3D 演示使其成为现代编程技术的良好入门,但它可能只适合于相当高级或成熟的学生。 由于我的儿子们还太小,无法有效地使用 Alice 环境,我当然会建议任何指导年龄较大的学生(比如高中生)的人考虑使用 Alice 作为中高级编程的教学工具。