学习编程语言概念

时间:2010-04-05 16:01:43

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

作为一名学生老师,我非常感兴趣的是,像Scratch,Logo,Alice和Lego思想风格这样的“迷你语言”如何有效地教会学生编程的核心概念,如变量,函数和循环。

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

4 个答案:

答案 0 :(得分:5)

根据您教孩子的年龄,我会选择像python这样简单的语言。

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

答案 1 :(得分:5)

这是一个非常棘手的问题。 Logo和Smalltalk(仅举两个明显的例子)最初都是专为教孩子们编程而设计的。然而,你很快就遇到了一个问题:很难定义一种既简单又容易让小孩子完全理解的语言,并且仍然足够丰富以避免它迅速变得有限和笨拙。

至少从我所看到的情况来看,大多数尝试在两个方面都表现不佳。例如,大多数尝试包括旨在使代码更像英语的冗长(例如Logo中的“To:”)。儿童通常具有足够差的键盘技能,这种冗长令人沮丧。他们(根据我的经验)期望如果语法的一部分看起来像英语,那么该语言也应该接受其他有效的英语(我希望其他语言的母语使用者也是如此,但我的经验主要是说英语的人。)

与此同时,大多数孩子(我曾与之合作过)很快就达到了他们发现迷你语言限制的程度。其中一些可能源于上面提到的挫折。有些人可能也是因为他们的老师(至少有些人)在提出有趣且具有挑战性的练习时缺乏想象力。我认为今天比20年前(比如说)20年前要困难得多 - 那时候,孩子们对用乌龟图形绘制的东西很兴奋(例如)。今天,他们已经习惯了使用照片般逼真的3D图形游戏,并且用直线画出2D“玫瑰”似乎更多地打击了他们,因为它基本上是蹩脚的。

答案 2 :(得分:4)

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

答案 3 :(得分:1)

有很多可能性,最终这类问题与“品味”有很大关系。我认为这个计划是一个非常好的选择,原因有两个。一个是它是一种极简主义的语言,在语法方面很少使事情复杂化。另一个是我觉得方案表达了一些关于计算的真正基础,并且非常清楚地表达了这一点。另一个是Scheme可以以非常“多范式”的方式使用。您可以在Scheme或命令式编程中进行函数式编程。对于Scheme来说,从头开始构建一个对象系统也很容易 - 你可以用少于100行的代码将一个简单的一个移植到语言上。还有一些具有大量库的Scheme实现,因此您可以在其中执行图形编程或Web编程等操作。

最后,人们开始大力关注在Scheme中开发优秀的教学材料。 “计算机程序的结构和解释”被认为是一个经典之作,但我认为它中的很多材料对于幼儿来说都是非常艰难的(它针对麻省理工学院的新生。)但也有更多的温和材料,如“如何设计程序”:http://www.htdp.org/你可以在htdp中清楚地看到的一件事是,Scheme的最小语法如何让你能够正确理解重要的想法。

Scheme作为第一语言的主要缺点是,目前使用最广泛的大部分语言看起来都不像Scheme,因此学生在迁移时可能会有一些调整。但我倾向于认为,特别是对于孩子来说,获取核心思想起初是最重要的。

相关问题