适合7岁孩子的环境

39

我7岁的孩子想学编程(这是他自己的想法,而不是我强迫他学习,他也在外面尝试很多事情,所以我不太担心这方面)。有一天我们坐下来写了一个非常简单的数字猜谜游戏(你选8就是正确的,选择其他数字都是错误的)。

进展还可以,但他基于语言的语法有很多问题。(我当时正好打开了IDE,所以我选择了Java。)我教授大学入门级的编程课程,所以这对我来说是个启示(大多数高中毕业生都不愿意问问题),因为我真的必须想办法向一个7岁的孩子解释语法。

显然,任何类C语言都会有相同的问题,大多数“语言”也是如此。我看过Squeak,但决定暂时不使用它。我看过Alice环境,但也不喜欢用它来教编程。

从物理角度来看,他习惯了键盘/鼠标,并且可以轻松组装乐高积木(因此按照有趣结果的指示进行操作对他有效)。我有Lego NXT可供使用,但他还有点小,(即使是由提供的图形环境),也需要花费太长时间才能看到工作成果。

理想情况下,我希望这种经验能帮助他建立数学和逻辑方面的信心(如果7岁的孩子有逻辑的话)。

我记得小时候用海龟绘图/Logo玩过。我正在倾向于使用这个,但不知道还有没有其他好的Logo环境推荐?

编辑1:

Logo效果不错。我需要教他关于角度的概念(90度、180度)。不幸的是,他们在学校还没有真正学习除法,所以讲解角度可能会有点难……

首先绘制一个正方形:

FORWARD 50
RIGHT 90
FORWARD 50
RIGHT 90
FORWARD 50
RIGHT 90
FORWARD 50
RIGHT 90

稍后我会进入循环:

REPEAT 4 
[
    FORWARD 50
    RIGHT 90
]

接下来是变量:

make "length 50

REPEAT 4 
[
    FORWARD :length
    RIGHT 90
]

这方法非常好,语法简单,7岁的孩子可以轻松记住词汇,并且能立即得到反馈。

编辑2:

这个方法是成功的,他在我不在房间的时候就能写出一个简单的程序(还没有循环)。它真的很有效 - 我们买了图纸和量角器,学会了90度角,他画了一堆正方形,将一个正方形变成了矩形,看到了自己的错误并学会了如何调试。我建议对于任何有兴趣学编程的7岁孩子都应该采用这种方法。我想我也会向我的大学生推荐这种方法!


1
我不同意“重复”标签。在开发方面,9岁和7岁的孩子差别很大。 - Yes - that Jake.
2
我们每个年龄段都要提出一个问题吗?作为重复问题关闭。 - Robert S.
我认为基于适当的编程环境有一系列问题是没有问题的,比如5、7、9、11、13、16。这些都是不同的问题,其答案明显不同。 - Yes - that Jake.
原则上我同意,Freddy。更准确地说,我会支持关于什么适合将编程介绍给十六岁和十三岁孩子的问题。 - Yes - that Jake.
@Jon Ericson,这个网站不是关于诗歌的。 - Robert S.
显示剩余12条评论
31个回答

23

谢谢!那应该很完美。 - TofuBeer
哇,Logo!我记得在四年级左右学过它,并写了一个小的Pac-man动画。 - gnovice
我无法让您提供的链接正常工作 - 但是我已经找到了另一个与 Logo 相关的链接,可以正常使用:http://www.softronix.com/logo.html - Rob Bergin

23

我强烈不同意那些认为七岁孩子学习新语法很困难的人。这完全是相反的。尝试教一个七岁孩子和一个三十多岁的非英语母语者使用Pig Latin。或者与孩子一起去国外旅行。看看谁能在一个月后流利地与当地人聊天(提示:可能不是你)。

孩子们比我们这些老年人更快地掌握任意的语言约定。


2
我同意,但学习也需要动力,对于一个刚开始学习的7岁孩子来说,学习语法似乎并不那么令人满意 :-) - TofuBeer
我不同意这个观点。虽然程序语言的语法已经通过大量的重复灌输给了计算机,但它们并不理解这些语法规则。因此,说它们可以轻松地学习另一种语言是具有误导性的。 - Beska
2
首先,“天赋知识”是与“通过大量重复灌输”的完全相反;其次,所有硬数据都表明,儿童能够比成年人更快地学习新的语法系统。这不是重复,而是发展上的倾向。 - MarkusQ
我看过一项研究,称成年人学习新语言的能力甚至更好,只是他们更善于找理由不去学。不幸的是,我不记得在哪里看到这个研究了。 - David Thornley

12
我十岁时学会了编程,和你教你儿子的方式完全一样。我的父亲使用了我们AT&T PC6300附带的GW-Basic解释器,我们写了一个游戏,电脑会问你一个问题,你需要回答A/B/C。GW-Basic中语法的一个重要优点是它没有多行语句。你可能想尝试类似的东西。Java由于其花括号可能有些困难。

示例代码:

10 PRINT "What color is Big Bird?"
20 PRINT "A. Blue"
30 PRINT "B. Green"
40 PRINT "C. Yellow"
50 INPUT$ ANSWER$
60 IF ANSWER$ = "C" THEN PRINT "Good Job!" ELSE PRINT "Oops, wrong answer!"

我花了数小时使用各种语法排列和编写自己的“游戏”。这让我想要学习更多……可能会有所帮助。


这让我想起了我是如何学习的... - AlexJReid

9

告诉他关于解析器。你只需添加上下文和理由,解释为什么这些东西存在。花括号的作用是让读取代码的机器知道事物的开始和结束位置。

我发现大多数人包括孩子只要你能解释清楚它们的目的,就能轻松掌握。这就是为什么学校对我来说是一个可怕的失败,因为没有人解释学习其中一半东西的意义。


我对此没有任何问题,实际上我也有过同样的经历,但现在还不行 - 首先我想确定他是否感兴趣(我不想让他对编程失去兴趣)。 - TofuBeer
嗯,我同意这个概念,但我怀疑对于一个7岁的孩子来说这可能还是太抽象了。 - Beska
再次为这个目的点赞。我希望我的许多老师也能这样做... - lc.
1
作为开发人员,我们习惯于向计算机明确地表达我们想要的内容(包括最细节的部分)。我认为孩子们应该被教导,计算机实际上是非常愚蠢的,需要我们的帮助。这就是为什么我们需要以一种简单易懂的方式提供如此明确的指令,否则他可能会感到自己很笨。 - levhita

6

我认为Python可能适合你的需求。它以易于学习而闻名,比许多其他语言更容易上手,交互式解释器使程序员能够立即看到代码执行时发生了什么。它附带的IDLE GUI易于使用。此外,它还通过TKinter拥有一个turtle模块。

https://docs.python.org/library/turtle.html


不是自吹自擂,但我在6-7岁时就开始自学BASIC并编写有意义的应用程序。只要有足够的时间和动力,完全有可能做到。我相信如果当时使用Python,我会做得更好。尽管如此,我还是记得在8岁时尝试切换到Pascal时指针让我有些困惑。 - Nicholas Riley
1
现在他已经十岁了,开始学习Python。前几天写了一个英语-> Pig Latin和一个Pig Latin->英语的翻译器。 - TofuBeer

6

Scratch是另一个。它是专门为教授儿童编程而在麻省理工学院开发的。


我也赞同提到Scratch。我用它来向我自己的7岁儿子介绍基本的编程概念,效果非常好。 - Eric King

5

从发展角度来看,七岁的孩子即使在口语上也不太可能掌握语法基础。

无论你使用什么语言或环境,我建议将编程视为游戏而非编写实际程序的能力。为此,像Python这样可以从命令行运行并立即看到结果的东西,或者更具图形化体验的Silverlight可能是最好的选择。


是的,那就是我所做的(不关注语法)...我让他解释他想要发生什么,然后我写了代码...但即使这样,这对我们两个人来说也不是“有趣”的事情。 - TofuBeer
嘿!永远不要低估孩子的力量。我7岁时,父亲给了我一台Timex Sinclair 1000电脑,我很容易学会了BASIC语言(但不要用BASIC来玷污一个干净的板子!),我的父亲帮助我编写了一个生成质数的程序。 - Jason S

5
Microsoft有几个有趣的项目,似乎非常适合:
- Popfly:http://msdn.microsoft.com/en-us/devlabs/cc950523.aspx --- "Popfly 包含了一种简单的方式来创建和与朋友分享游戏。选择各种内置模板或从头开始创建侧向滚动游戏、2D射击游戏或其他类型的游戏。最重要的是,你可以在不编写任何代码的情况下开始使用它"...我认为它可以真正帮助激发动力 :) - Smallbasic:http://msdn.microsoft.com/en-us/devlabs/cc950524.aspx --- 据说是简化版但具有智能提示+.net框架支持(短描述过于营销,所以我没有粘贴 :P)

4
尝试使用Small Basic,它具有迷你BASIC语言,并为年轻人简化了操作。 点击此处可了解更多信息。

“对于那些之前接触过BASIC的学生来说,教授良好的编程几乎是不可能的:作为潜在的程序员,他们已经被精神上残废到无法再生的地步。”——艾兹格·迪科斯彻 - Svante
Svante...认真点...他/她才7岁。 - Inisheer

3

远离Java!尝试一些专为教学设计的东西,比如scratch、LOGO或PLT Scheme


我没想到Java能行得通,但不得不从某个地方开始看看接下来该去哪里(而当时Netbeans是打开的...)。他对Logo很感兴趣,看起来那是我要开始的地方。我也会考虑其他人建议的来选择下一步。 - TofuBeer
好的。立即奖励建设性活动总是很好的做法(对研究生也适用)。 - Norman Ramsey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接