【问题标题】:Learning programming language concepts [closed]学习编程语言概念[关闭]
【发布时间】:2011-02-04 11:35:53
【问题描述】:

作为一名学生教师,我对 Scratch、Logo、Alice 和 Lego mindstorms 等“迷你语言”在教授学生编程的核心概念(如变量、函数和循环)方面的效果非常感兴趣。

在教授这些基本核心概念方面,一种“迷你语言”是否比另一种更好?

【问题讨论】:

    标签: mindstorms mit-scratch logo-lang alice block-programming


    【解决方案1】:

    我认为您使用哪种“迷你语言”并不重要。但我认为,如果您不打算解释比基础知识更多的内容,那么您最好使用真正的小型语言而不是“真正的”语言。 当我学习了基础知识(使用 Java)时,我真的很恼火,因为我不得不记住 public static void main 却不知道这一切意味着什么。 所以我会选择一种开销尽可能少的语言。 选择哪种特定语言实际上取决于学生的年龄。

    【讨论】:

      【解决方案2】:

      这是一个非常困难的问题。 Logo 和 Smalltalk(仅举两个明显的例子)最初都是专门为教孩子编程而设计的。但是您很快就会遇到一个问题:很难定义一种语言既简单到足以让小孩子完全理解,又足够丰富以避免它很快变得限制和笨拙。

      至少在我所见的情况下,大多数尝试在两个方面都表现不佳。仅举个例子,大多数尝试包含旨在使代码读起来更像英语的冗长(例如 Logo 中的“To:”)。孩子们的键盘输入技能通常很差,以至于这种冗长令人沮丧。他们还(根据我的经验)期望如果部分语法看起来像英语,该语言也应该接受其他有效的英语(我希望其他语言的母语人士也是如此,但我的经验主要是说英语的人)。

      同时,大多数孩子(我曾与之共事过)很快就会发现他们发现迷你语言有限制。其中一些可能源于上面提到的挫败感。有些可能还源于他们的老师(至少有一些)在想出有趣和具有挑战性的练习时缺乏想象力。我认为今天也比(比如说)20 年前困难得多——当时,孩子们对他们可以用海龟图形绘制的东西感到兴奋(例如)。如今,他们已经习惯了具有照片般逼真的 3D 图形的游戏,而用直线绘制 2D“玫瑰”似乎让更多人觉得基本是蹩脚的。

      【讨论】:

        【解决方案3】:

        有很多可能性,归根结底这种问题与“品味”有很大关系。不过,出于几个原因,我确实认为该方案是一个非常好的选择。一个是它是一种非常简约的语言,几乎没有使事情复杂化的语法方式。另一个是我觉得方案表达了关于计算的一些真正基础的东西,并且非常清楚地表达了这一点。另一个是 Scheme 可以以非常“多范式”的方式使用。您可以在 Scheme 中进行函数式编程,或命令式编程。从头开始为 Scheme 构建一个对象系统也很容易——您可以用不到 100 行代码将一个简单的对象系统移植到该语言上。还有一些具有大量库的 Scheme 实现,因此您可以在其中进行图形编程或 Web 编程等操作。

        最后,大量的注意力都投入到了用 Scheme 开发好的教学材料上。 “计算机程序的结构和解释”被公认为是经典,但我认为其中的很多材料对于年幼的孩子来说会非常困难(它针对的是麻省理工学院的新生。)但也有更温和的材料,例如“如何设计程序”:http://www.htdp.org/ 在 htdp 中您可以非常清楚地看到的一件事是,Scheme 的最小语法如何使您能够正确理解重要的想法。

        Scheme 作为第一语言的主要缺点是,现在真正广泛使用的大多数语言看起来都不像 Scheme,所以学生在迁移到它们时可能会有一些调整。但我倾向于认为,尤其是对于孩子来说,首先获得核心思想是最重要的。

        【讨论】:

          【解决方案4】:

          根据你教的孩子的年龄,我会选择更简单的语言,比如 python。

          这是一本免费的书,它教授所有的基础知识,只有大约 200 页: http://www.greenteapress.com/thinkpython/thinkpython.html

          【讨论】:

          • 同意python!如果只是因为它具有绝对最低的语法要求和最少的标点符号。像这样的美学可以对新开发人员产生巨大的影响。还有一些非常好的框架,比如 PyGame,可以非常轻松地制作交互式内容。我认为任务比语言更重要。跳过“向控制台打印消息”,而是专注于“当我点击它时这个图形会做出反应”
          • Livewires 是一门教孩子编程的开源课程,它使用 Python 和 PyGame 的简化版本让他们学得更快。我已经浏览了它 - 它看起来很有希望。 livewires.org.uk/python/home
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-02-22
          • 2021-06-12
          • 2011-10-01
          • 2013-10-21
          • 2012-11-19
          • 2013-01-24
          • 2011-02-01
          相关资源
          最近更新 更多