关于开始孩子编程的建议

时间:2008-08-21 14:23:53

标签: language-agnostic children

你认为年轻人从编程开始应该使用哪些语言和工具应该在现代时代使用?

我们很多人都开始使用专有的Basics,他们并没有对我们所有人造成长期伤害:)但鉴于您从那时起的经验以及您对该领域的了解,现在有更好的选择吗?

有一个相关的查询,例如“Best ways to teach a beginner to program?”和“One piece of advice”关于开始成人编程,我提交了答案,但孩子可能需要不同的工具。

披露:选择这样一个问题的“正确”答案是很难的,所以在几天内获得最高分的人将根据社区选择获得“最佳答案”标记。

46 个答案:

答案 0 :(得分:43)

我建议LEGO Mindstorm,它为编程提供了一个直观的拖放界面,因为它带有硬件,它为孩子提供了一些有形的东西。此外,因为它是“乐高”,他们可能会认为它更像是一个游戏,而不是编程练习。

答案 1 :(得分:25)

我的日常工作是在一所学校,在过去的几年里,我见过或教过(或试图教过)各种各样的孩子,不同数量的编程课程。

孩子们都不同 - 有些是快速学习者,有些则不是。特别是,有些人比其他人有更好的识字能力,这肯定会对他们选择编程的速度产生影响。我敢打赌,我们这里的大多数人,作为专业的计算机程序员,以及那些阅读和发布到论坛上寻求乐趣的人,在很小的时候就学会了阅读。对于那些孩子,如果是你自己的孩子,你可以一对一教授,你可以做得比JavaScript更糟糕 - 它的优点是你可以立即用它来做真正的东西,以及编辑测试周期只是在浏览器中点击“刷新”。当你开始考虑JavaScript如何异步地完成所有事情并且调试很棘手时会让人感到困惑,但是对于一个聪明的孩子来说,接下来可以克服这些问题。

LEGO Mindstorms绝对是排在榜首的。大多数学校现在将砖块粘合在一起,以创建预制的模型,这些模型不会有任何痕迹,但这在家里应该不是问题。在Times Educational Supplement网站(英国每周教学报的网站论坛)上,“什么编程语言最适合儿童?”主题定期出现。 Scratch作为Mindstorms的替代品有很多建议 - 比Mindstorms更多的自由,对于那些也可以给予烙铁的更聪明的学生来说可能更好。

我发现较慢的学生仍然可能遇到Mindstorms的问题,即使编程环境是“图形化的” - 屏幕上仍然有很多事情发生,并且有一点需要记住(这是旧版本,心 - 没有尝试过那个时髦的新人。根据我的经验,编程的最佳全能介绍可能仍然是LOGO - 实际上是一种比大多数人都赞不绝口的强大语言。 Seymour Papert的原创Mindstorms书(与乐高无关 - 他们为自己的产品标出了本书的标题),LOGO的创始人之一,是将儿童编程作为“思考”的规范参考。技能“以及Constructionism在学习中的概念。

我们有7或8岁的课程编程LOGO。请注意,我们并非旨在使他们成为“软件开发人员”,这是他们可以在16之后的某个时刻决定的职业道路。在年轻的时候,我们试图让他们把“计算机编程”想象成另一种工具 - 如何设置一个计算机要解决的问题,就像他们可能使用思维导图帮助他们组织一样并记住考试的东西。任何贫穷的孩子都不应该坐在细节中并使用特定的语言,他们应该留下来探索和计算他们喜欢的东西。

答案 2 :(得分:13)

我将继续杰夫对Phrogram (used to be KPL)Alice的建议。

我唯一的另一个建议是Lego Mindstorms NXT。 NXT的编程语言是拖放式的,非常易于使用,并且一旦您学习它就可以执行一些非常复杂的任务。年轻男孩通常喜欢看东西移动。 :)

我和一些年幼的孩子一起使用了Alice和NXT,他们已经很好地接受了它。

答案 3 :(得分:10)

有两种可能性:

Scratch - 在麻省理工学院开发 - http://scratch.mit.edu/

来自每个孩子一台笔记本电脑的名字 - http://wiki.laptop.org/go/Squeak

答案 4 :(得分:10)

完全披露:我是发明Kid's Programming Language的人之一,现在是http://www.Phrogram.com,其他人在这里推荐。让我添加一些关于它的程序员信息。

这是一个代码IDE,而不是拖放或基于设计器。这是我们的故意 - 我们希望能够轻松有趣地进行真正的基于文本的编程,特别是编程游戏和图形。这是我们与Alice和Scratch之间的根本区别。你选择的是孩子,他们的年龄和能力,你的目标。使用相同的初学者连续使用它们可能是一个很好的方法 - 如果你这样做,我会推荐Scratch,Alice,Phrogram作为订单。 Phrogram在12年及以上的时间里效果最好,但我知道6岁的孩子已经教过他们的孩子,我知道10岁的孩子已经自学了。

这种语言与我们能够制作的英语一样,并且尽可能地达到最低限度。秘密酱是在基于类的对象层次结构中,它再次像我们所能做到的一样简单,直观和英语。对象heirarchy针对游戏和图形进行了优化。提供3D模型和2D精灵。支持使用屏幕坐标的绝对移动,或者相对移动ala LOGO乌龟 - 前进(x),转左(y)。

IDE提供了100多个示例,一些语言示例(循环),一些学习示例(数组),一些全功能游戏和sims(Pong,Missile Command,Game of Life)。

为了让您了解我们制作语言和IDE的高杠杆率:使用键盘,您可以使用27条指令围绕3D天空盒飞行3D太空飞船模型。与2D精灵相同的是12到15条指令。

我们正在开发兼容Blade的Phrogram版本,允许程序在XBox 360上运行。是的,XBox,在你的大电视上。让孩子开始的好动力? :)

Phrogram包括对基于类的编程的支持,包括方法和属性 - 但这只是封装,而不是继承或多态。

可以使用教程和用户指南,

我自己的电子书可以在亚马逊和其他地方在线获得,“学习使用Phrogram编程!”,并通过编写经典Pong开始初学者。

Jerry Lee Ford,Jr。的“绝对初学者的程序设计”也可以作为平装本在亚马逊和其他地方使用。

答案 5 :(得分:8)

对于一个孩子,我会选择Alice。任何孩子都会喜欢爱丽丝使用的拖放式互动,而不是试图记住如何拼写和标点符号任何编程语言。他/她将学习基本的编程结构(条件,循环等),并将体验构建动画节目的乐趣,他们可以向其他家人或朋友展示。

当地社区大学的初学CS课程实际上使用Alice以与语言无关的方式教授编程。它为将来使用特定语言(或几种语言)进行编程提供了良好的基础。

答案 6 :(得分:7)

我最近看了一篇关于GreenFoot(基于java的儿童学习环境)的演讲。它看起来很棒。如果我有孩子,我会尝试一下

Link to the presentation

这是一个非常好玩的环境,你可以从非常基本的方法开始。孩子们以面向对象的方式学习思考(你无法实例化动物,但你可以实例化一只猫)。他们获得的越多,你可以用它们发现的Java就越多。

答案 7 :(得分:7)

我会和Scratch一起讨论一些问题。

  • 这是一种图形化编程语言。它不是基于文本的(这可能是 积极的还是消极的)。它确实让孩子们更直观,更轻松(7和7) 向上)。
  • 这实际上是高度客观的。您编写这些图形脚本的对象附有代码,可以重复使用和移动。
  • 非常重要:快速而令人印象深刻的结果。孩子们需要快速前进并获得结果才能上瘾。

我想要注意的是,尽管我们中的许多人在年轻时开始使用基本或徽标进行编程,并且因为后来的程序员并不意味着这些语言很好。我认为今天的孩子有更好的选择,比如刮刮或爱丽丝。 基于文本的语言(python,ruby,basic,c#或甚至c)依赖于外部库和工具(编辑器,编译器),而像Alice或scratch这样的东西是包容性的,并且将教孩子(不针对青少年)编程概念。之后他们可以继续学习。

答案 8 :(得分:6)

查看Phrogram(以前称为KPL)和Alice

答案 9 :(得分:6)

我会推销LOGO。这是我小学教的东西。它提供了几乎即时的反馈,并将教授真正基本的编程概念。移动那只小乌龟可以带来很多乐趣。

答案 10 :(得分:6)

我会说:给孩子一个真正的C64,因为这就是我开始的方式。但是,今天......我会说Ruby,但Ruby有点混乱。从长远来看,BASIC会更好。处理很容易学习,它基本上是Java。

我推荐C64的原因是因为它是BASIC,但你还是要学习某些与计算机相关的东西,比如内存模型,像素,字符,字符映射,换行符等等,如果你想做更多的事情先进的东西。此外,如果你的孩子发现它很无聊,你知道他的内心真的没有编码。

答案 11 :(得分:5)

  

对于一个孩子,我会和爱丽丝一起去。

以下是Alice的另一票。我的4个孩子在使用它和学习编程的基本概念方面有很多乐趣。当然对他们而言,这都是关于与仙女和食人魔的交往,但是我工作的遗产系统可能会使用一些小食和食人魔。

答案 12 :(得分:5)

我推荐python,因为它简洁而富有表现力。在开始时似乎不太可能挫败,但也提供了足够的空间来学习更高级的概念。

答案 13 :(得分:4)

Game Maker可能是另一种方法。您可以通过简单的拖放开发简单地开始,然后随时介绍更高级的编程。本书The Game Maker's Apprentice: Game Development for Beginners包含许多示例游戏,并指导您完成制作游戏所需的步骤。

答案 14 :(得分:3)

多大了?很多人在某些时候都盯着BASIC,但在那之前,我学会了将命令串在一起,变量和用LOGO循环的概念。弄清楚如何用一个只能直线转弯的三角形绘制圆圈是我的第一个编程成就。

编辑:这个问题&它的答案让我觉得自己老了。

答案 15 :(得分:3)

Squeak制定的结帐Alan Kay,他们认为编程应该在早期教授。

答案 16 :(得分:3)

我认为python是一个很好的选择;它是一种非常强大的语言,你也可以很容易地做很多事情(根本不是很无聊)。

答案 17 :(得分:2)

我认为第一个问题是:创建什么类型的程序会有趣?让我开始编程的一件事(在BBC基础版和QBasic版中)是编写图形程序的简便性。我可以编写几行代码,看看我的程序会立即在屏幕上画一条线。

我最近看到的那种简单性最近的是pygame library for python和Processing,一组带有IDE的java库。

我认为在网页上进行黑客攻击是另一种开始的好方法:这需要HTML,Javascript(使用类似jQuery的库),也许是PHP或类似的东西。

无论您提供什么工具,关键是要让它立即开始。如果你必须编写二十行正确的代码,并在看到任何有形结果之前弄清楚如何调用编译器,那么进展将会很慢。

答案 18 :(得分:2)

我认为你应该在C中开始它们。他们越早得到指针就越好。

请参阅Understanding PointersShould I learn C

答案 19 :(得分:2)

虽然在过去一年左右的时间没有给予他太多的爱,但有一段时间我对Hackety Hack感到非常兴奋。我认为大多数新程序员的关键,特别是那些对事物不感兴趣的孩子,都是即时反馈。这是关于Hackety Hack的非常棒的事情:几行代码,突然间你面前有一些东西可以做些什么。有一些类似的应用程序旨在绘制图形(其中一个,我简要地帮助Nathan Weizenbaum,Scribble!)。孩子们只需要积极的反馈,他们会定期做正确的事情,否则没有什么能让他们对手头的任务感兴趣。我认为教孩子们编程的未来是一种基于语言友好的语言构建的DSL(可能包括Ruby,Python和Scheme),其目的是为简单构建提供直观的环境游戏(比如,Tic-Tac Toe,或Hangman)。

答案 20 :(得分:2)

这里有很多好的建议。我真的同意Kronikarz。获取您感兴趣的复古计算机(或仿真器)并进行教学。为什么复古电脑? Basic是内置的。制作声音和原始图形是一项微不足道的任务。真正的交易可能比模拟器更好,因为对于习惯只看现代设备的孩子来说,它会更有趣。

答案 21 :(得分:2)

正如我所说here,我会选择Squeakland和着名的Drive a Car示例(由Squeak提供支持)。

Smalltalk语法很简单,非常适合儿童使用。

随着孩子的进化,他可以学习更复杂甚至非常先进的概念,这些概念也在Squeak中(例如,通过自动重构和自动化单元测试来编写状态丰富的webapps!)。

就像@cpuguru和@Rotem所说的那样,Scratch(也是基于Squeak的)也很棒。

答案 22 :(得分:1)

我认为Context Free Art可能是一个不错的选择,通过图形输出,可以了解context-free grammar

答案 23 :(得分:1)

试试[Guido van Robot] [1]。这是对机器人技术的精彩介绍,它是向孩子们介绍事物编程方面的一种很好的方式(与“建立机器人”方面相比)。

答案 24 :(得分:1)

我认为Java可能是一个不错的选择,因为你可以轻松制作GUI,并看到“酷事”的发生。出于同样的原因,也许是任何.NET语言。我也听说过有关脚本语言(特别是Ruby和Python)的好东西,让孩子们学习如何编程。

答案 25 :(得分:1)

我会按照我希望的方式首先使用:一个简单的MS-DOS框和集成的汇编程序(debug)。真正学习和理解与计算机交谈的基础知识真是太棒了。

如果这不会吓跑一个孩子,那么我会去“下一级”并介绍C.这应该不是很难,因为指针,寄存器和指令的基本概念一般都是通过然后

但是,我不完全确定,接下来要去哪里。大胆跳转到Lisp,Haskell或类似的抽象语言,或者是否应该抛出一些简单的面向对象的语言(甚至可能是C ++),还是会比帮助更伤害?

答案 26 :(得分:1)

看着爱丽丝,我看到它是“专为高中和大学生设计的”。似乎有另一种名为Story Telling Alice的语言/版本“专为中学生设计”

Alice Download Page

答案 27 :(得分:1)

好吧,如果他们年轻并且没有学习他们的ABC,你可以尝试使用BF - 而不是那些讨厌的字母和数字来处理。

我会给我'大衣。

Skizz

答案 28 :(得分:0)

当我的女儿大约6或7岁时,我展示了她的标志 - 应该认为绘制形状很有趣 - 但后来失去了兴趣。

当她10岁时,我尝试了吱吱声 - 她觉得这很棒。她很快就接受了Smalltalk语法并且非常有趣。我也试过Greenfoot - 但收效甚微。

我认为Ruby可能值得一试(我不时使用Ruby - 好东西!)

现在她对其他非计算活动更感兴趣。

所以这些天,我会说Squeak值得一试。  怎么样 Hackety-Hack 。还没有和孩子们一起尝试,但看起来很有趣。

答案 29 :(得分:0)

任何人遇到 BigTrak ? 这是我第一次编程经验。 基本上它是一个巨大的徽标乌龟, 在战斗坦克的形状, 用键盘在上面键入程序。

可能适合5-8岁, 即使在孩子有耐心/协调的情况下在屏幕上打字之前。

答案 30 :(得分:0)

我是一名小学六年级学生,自从我看到一台电脑以来,我一直对编程的概念感兴趣。我已经尝试了很多编程语言(.NET,Python和Javascript),我不得不说,到目前为止我最喜欢的是Visual Basic(.NET),因为设计很简单,代码本身也很容易理解。看到一个你工作和操作的程序,它真是太酷了,我认为Visual Basic有最好的方法。

-Karl

答案 31 :(得分:0)

我的儿子(和我)使用这里提到的一些建议很好玩:

NXTurtle是一个小小的mashup开始......

答案 32 :(得分:0)

蛮力

“做它或其他!”

答案 33 :(得分:0)

PHP或Visual Basic。 我9岁的时候开始使用PHP,现在我只喜欢上百种语言了。 我最喜欢的PHP和C ++。

答案 34 :(得分:0)

查看PythonTurtle

答案 35 :(得分:0)

答案 36 :(得分:0)

Scratch

不要让卡通式的结果欺骗你。孩子们喜欢这个东西,它提供了你在编程语言中所期望的大部分内容:循环;条件逻辑;事件;子程序;和面向对象的编程。

其他喜欢的事情:

  • 优秀文档
  • 多功能性有些孩子喜欢游戏。其他人喜欢讲故事或创作漫画。其他人喜欢制作音乐或图形效果。一切都可以用Scratch完成。孩子们甚至可以将他们的节目发布到他们创建的网站,作为多媒体/网络课程的一部分。
  • 环境将编程元素拼接在一起的图形开发环境。形状和颜色很好地用作视觉提示。
  • 社交编码大量社区创建的计划,其中包含评级系统,孩子们可以使用该系统获取新想法,找出如何解决特定问题,或与同行分享他们的创作。
  • 黑客孩子们可以轻松添加自己的自定义声音并绘制自己的角色。让我想起数字建筑纸。
  • 平易近人这个界面很简单,孩子们可以开始使用它,而且介绍方式很少。

最重要的是,Scratch可以在Windows,Linux和OS X上运行,因此不会遗漏具有混合硬件设置的学校。

答案 37 :(得分:0)

有一本名为“Hello World:儿童和其他初学者的计算机编程”的新书,由Warren和Carter Sande为我9岁开始购买。他将学习编程,我将学习Python。

答案 38 :(得分:0)

Python是一种很棒的第一种编程语言,它可以用于练习过程语言和函数语言的概念。

免费书籍A Byte of Python是一本简单的介绍,专为初学者编写,并且有多种语言版本。

答案 39 :(得分:0)

Stagecast Creator怎么办?

我和我7岁的女儿一直在使用它(我们从6岁开始)。

不要被小子界面所欺骗。一旦你开始使用它,你就会意识到它正在教授许多复杂的想法。这是顺序处理,它都是图形驱动的。您可以通过定义“如果图片看起来像这样,然后使其看起来像'类型功能”来定义字符规则。角色可以改变外观,发出声音,移动其他角色,响应键盘和鼠标等。

它教导if..then..else逻辑。操作顺序(因为它处理第一个规则是真的)。有一个调试器,所以你可以单步执行代码等。

一个非常好的工具,让你的年轻人发现编程背后的思维过程,以及一种有趣而简单的方法来确定他们是否对这类事物感兴趣。

一旦你确定了这一点,就可以使用“真正的”语言。

答案 40 :(得分:0)

我开始在Flash中编程。

“玩具语言”meh meh meh。

之前在学校里有一个很小的Logo

我不知道心灵风暴,但我想这会很好。

我认为,除非有真正的学习驱动力,否则一开始只需输入和输出命令行驱动程序就会感到沮丧。

有了一点即时的满足感,通过在屏幕上移动一些图片,在这里和那里触发一些声音,比建立一个收银机程序,制作一个fizz buzz程序等更有吸引力的结果

“看奶奶,我建了一个网页!” - 甚至从HTML和一些javascript开始,到处都有表格和字体标签,并且能够与非技术人员共享开发的东西,从长远来看可能比30行C代码更有利于编码以安抚代码疯狂父亲。可能是也可能不是这样的

答案 41 :(得分:0)

AIML怎么样?与其说是一种编程语言,并不是一种即时的实现,因为它完全是人工智能,它可能会引发他(她的)兴奋感。

答案 42 :(得分:0)

虽然我过去曾使用LEGO Mindstorms(并且喜欢它),但我会完全推荐XNA Game Studio,原因如下:

  • 它涉及创造很多孩子会感兴趣的东西(游戏)。
  • 它是免费的。
  • 这是一种真正的语言(C#)和一个真正的IDE(Visual Studio)。
  • 你可以学习OOP。
  • 这是父母们会发现和孩子们一样多的乐趣。

答案 43 :(得分:0)

Smalltalk不是为此目的而设计的吗?我认为Ruby是一个很好的选择,作为Smalltalk的后代。

答案 44 :(得分:0)

familyinternet.about.com上有一篇关于此的好文章。

答案 45 :(得分:0)

我知道在高中的最初几年我们被'教'徽标,奇怪的是,HTML。之后,进展到MS Office中的宏,然后是基本VBA,然后是Visual Basic。