有关启动子程序的建议
我们认为现代编程入门的年轻人应该使用哪些语言和工具?
我们很多人都是从专有的Basics开始的,他们并没有对我们所有人造成长期伤害:),但是鉴于我们从那时起所拥有的经验以及我们对领域的了解,现在有更好的选择吗?
有与此相关的查询,例如"教初学者编程的最佳方法?"。和有关开始成人编程的"一条建议",我都提交了答案,但是孩子可能需要其他工具。
披露:很难为这样的问题选择一个"正确"的答案,因此,根据社区的选择,几天内得分最高的人将获得我的"最佳答案"标记。
解决方案
回答
我最近看到了有关GreenFoot(一种基于Java的儿童学习环境)的演示。看起来很棒。如果我有孩子,我会尝试一下
链接到演示文稿
这是一个非常好玩的环境,我们可以从非常基本的方法开始。孩子们以面向对象的方式学习思维(我们不能实例化动物,但是可以实例化猫)。而且它们越好,我们可以从中发现更多的Java。
回答
我认为Java可能是一个不错的选择,因为我们可以轻松地制作GUI并看到"很酷的事情"的发生。出于相同的原因,也许是任何一种.NET语言。我也听说过有关脚本语言(尤其是Ruby和Python)的好东西,可以让孩子学习编程。
回答
检阅Phrogram(以前称为KPL)和Alice
回答
对于一个孩子,我会和爱丽丝一起去。与尝试记住如何拼写和标点任何编程语言相比,任何孩子都会喜欢Alice使用的拖放交互。他/她将学习基本的编程结构(条件,循环等),并会体会到制作动画节目的乐趣,并可以向其他家人或者朋友炫耀。
本地社区学院的CS入门课程实际上使用Alice以与语言无关的方式教授编程。它为将来使用特定语言(或者几种语言)进行编程提供了良好的基础。
回答
几岁?我们中的很多人在某个时候都盯着BASIC,但是在那之前,我学习了将命令串在一起,变量和使用LOGO进行循环的概念。弄清楚如何用只能沿直线转弯的三角形绘制圆是我的第一个编程成就。
编辑:这个问题及其答案使我感到老了。
回答
我建议使用python,因为它是如此简洁和富于表现力。入门时似乎不太可能感到沮丧,但也提供了足够的空间来学习更高级的概念。
回答
尽管_why在过去的一年左右没有给予太多爱,但是一段时间以来,我对Hackety Hack感到非常兴奋。我认为对于大多数新程序员来说,关键是即时反馈,特别是对于那些对事物失去兴趣的孩子。那是Hackety Hack的真正妙处:几行代码,突然之间我们有了可以做某事的东西。还有一些类似的应用程序,用于绘制图形(其中之一,我曾短暂地协助Nathan Weizenbaum编写了Scribble!)。孩子们只需要正面的反馈,即他们定期做正确的事情,否则就没有什么让他们对手头的任务感兴趣。我认为将来要教孩子编程的是某种基于具有友好语法(可能包括Ruby,Python和Scheme)的语言构建的DSL,其目的是为构建简单的语言提供直观的环境。游戏(例如Tic-Tac Toe或者Hangman)。
回答
For a child, I would go with Alice.
这是爱丽丝的另一张选票。我的4个孩子在使用它和学习编程的基本概念时都玩得很开心。当然,对他们来说,这全是关于与妖精和食人魔进行社交,但是我从事的令人毛骨悚然的遗产系统也可能会使用某些妖精和食人魔。
回答
我认为我们应该在C中启动它们。它们越早掌握指针的指针越好。
请参阅了解指针和我应该学习C。
回答
我将其次介绍Geoff关于Phrogram(以前称为KPL)和Alice的建议。
我唯一的建议是Lego Mindstorms NXT。 NXT的编程语言是拖放式的,非常易于使用,一旦学习它就可以完成一些非常复杂的任务。另外,小男孩通常喜欢看到事物在移动。 :)
我已经将Alice和NXT与一些小孩一起使用,他们对此非常满意。
回答
我认为python是一个不错的选择。它是一种非常强大的语言,我们也可以轻松地做很多事情(一点也不觉得无聊)。
回答
艾伦·凯(Alan Kay)开发的Checkout Squeak认为编程应该在幼儿时代就开始学习。
回答
好吧,如果他们还年轻,还没有学过ABC,则可以尝试使用BF,而无需处理那些令人讨厌的字母和数字。
我去给我外套。
斯基兹
回答
我建议使用LEGO Mindstorm,它为编程提供了直观的拖放界面,并且由于它附带了硬件,因此它为孩子提供了切实的东西。另外,由于它是" LEGO",因此他们可能将其视为游戏而非编程练习。
回答
我希望先了解一下:一个简单的MS-DOS框和一个集成的汇编器(调试器)。真正学习和理解与计算机交谈的基础知识真是太好了。
如果那不能吓跑一个孩子,那么我将进行"下一个级别"并介绍C。鉴于那时到那时,指针,寄存器和指令的基本概念已经基本被理解,这应该不难。
但是,我不确定下一步要去哪里。跳到Lisp,Haskell或者类似抽象的语言,还是应该引入一些简单的面向对象的语言(甚至是C ++),还是弊大于利?
回答
我认为第一个问题是:创建什么样的程序会很有趣?让我从小开始编程的一件事(从BBC基础版开始,然后是QBasic)是易于编写图形程序。我可以编写几行代码,然后看我的程序在屏幕上立即画出一条线。
我最近看到的与这种简单性最接近的是用于python和Processing的pygame库,这是一组带有IDE的Java库。
我想对网页进行黑客入侵将是入门的另一种好方法:这将需要HTML,Javascript(使用类似jQuery的库),PHP或者类似的东西。
无论我们提供什么工具,关键是要立即轻松上手。如果我们必须编写二十行正确的代码,并在看到任何实际结果之前弄清楚如何调用编译器,那么进展将会很慢。
回答
两种可能性是:
麻省理工学院http://scratch.mit.edu/开发的Scratch
和
每个孩子一台笔记本电脑中的EToys一举成名http://wiki.laptop.org/go/Squeak
回答
我会说:给孩子一个真正的C64,因为这就是我的入门方法。但是,今天...我会说Ruby,但是Ruby有点太混乱了。从长远来看,BASIC会更好。处理很容易学习,并且基本上是Java。
我之所以推荐C64是因为它是BASIC,但是如果我们想做更多高级的事情,我们仍然必须学习某些与计算机相关的知识,例如内存模型,像素,字符,字符映射,换行符等。另外,如果孩子觉得很无聊,我们就会知道他的心真的不在编码中。
回答
Smalltalk并非是为此目的设计的吗?我认为,作为Smalltalk的后代,Ruby是一个不错的选择。
回答
这里已经有很多好的建议。我真的同意Kronikarz。获得我们感兴趣的复古计算机(或者仿真器)并进行教学。为什么要使用复古电脑? Basic是内置的。制作声音和原始图形是一项琐碎的任务。真正的交易可能比模拟器更好,因为这会使习惯于仅看现代设备的孩子更加着迷。
回答
游戏制作者可能是另一种方法。我们可以从简单的拖放式开发开始,从简单开始,然后在进行过程中引入更多高级编程。 《游戏制作者的学徒:初学者的游戏开发》一书提供了许多示例游戏,并带我们完成制作它们的必要步骤。
回答
我会推销LOGO。那是我小学教的东西。它几乎可以立即提供反馈,并将教授真正的基本编程概念。到处移动那只小乌龟可能会很有趣。
回答
看着爱丽丝,我看到它是"为高中生和大学生设计的"。似乎还有另一种名为"讲故事的爱丽丝故事"的语言/版本是"为中学生设计的"
爱丽丝下载页面
回答
我的日常工作是在学校里,在过去的几年中,我见过或者教过(或者试图教过)各种数量不同的儿童编程课程。
孩子们都是不同的,有些是快速学习者,有些则不是。特别是,有些人的读写能力比其他人更好,这无疑会影响他们学习编程的速度。我打赌我们这里的大多数人都是专业的计算机程序员,也是那种为了娱乐而阅读和发帖到论坛的人,他们在很小的时候就学会了阅读。对于这类孩子,如果我们可以一对一地教自己的孩子,那么我们可能做得比JavaScript差,它的优点是我们可以立即用它来做真正的事情,并且编辑测试周期为只需在浏览器中点击"刷新"即可。当我们开始尝试JavaScript如何异步执行所有操作时,这会令人困惑,并且调试起来很棘手,但是对于学费高昂的聪明孩子,可以解决这些问题。
乐高Mindstorms绝对位于列表顶部。现在,大多数学校都将砖块超级粘合在一起,以创建预制模型,这些模型不能有任何刻痕,但这在家里应该不是问题。在Times Times Educational Supplement网站(英国每周教学报纸的网站论坛)上,"哪种编程语言最适合儿童?"这个话题经常出现。在那儿有很多建议可以代替Scratch作为Mindstorms的选择,这比Mindstorms有更多的自由度,对于聪明的学生也可以使用烙铁,这又可能更好。
我发现,即使编程环境是"图形的",速度较慢的学生仍然会遇到Mindstorms的问题,但屏幕上仍然有很多内容,并且还有很多需要记住的地方(这是一个较旧的版本,没想到尝试了时髦的新产品)。以我的经验,最好的全面编程入门仍然可能是LOGO,实际上,LOGO是一种比大多数人认为的要强大得多的语言。 Seymour Papert的原版Mindstorms书籍(与LEGO无关,他们没有为其产品打上书名),是LOGO的创始者之一,是将儿童编程教学作为"思维能力"的规范参考。建构主义在学习中的概念。
我们有7或者8岁的编程LOGO的班级。请注意,我们并不是要让他们成为"软件开发人员",这是他们可以在16岁后某个时候决定的职业道路。在年轻的时候,我们试图让他们将"计算机编程"视为另一种工具,该工具将如何提出要由计算机解决的问题,同样,他们可能会使用思维导图来帮助他们组织和解决问题。记得考试的东西。任何可怜的孩子都不应坐下来钻研细节,并使用一种特定的语言,应任由他们随意探索并弄清楚东西。
回答
我会选择Scratch,对此有几点要点。
- 这是一种图形化编程语言。它不是基于文本的(可能是肯定的也可能是否定的)。它的确使儿童(7岁及以上)更直观,更轻松。
- 这实际上是高度对象。我们为这些图形脚本编写的对象具有添加的代码,可以重复使用和移动。
- 非常重要:快速而令人印象深刻的结果。孩子们需要快速行动并取得结果,才能着迷。
我想指出的是,尽管我们中的许多人都在很小的时候就开始使用基本或者徽标进行编程,并且因为程序员晚年并不意味着这些都是入门的好语言。我认为今天的孩子有更好的选择,例如从零开始或者爱丽丝。
基于文本的语言(python,ruby,basic,cor甚至c)依赖于外部库和工具(编辑器,编译器),而诸如Alice或者草稿之类的东西则具有包容性,将教给孩子们(而不是青少年)编程概念。之后,他们可以继续前进并扩大学习范围。
回答
就像我在这里所说的,我会去Squeakland和著名的Drive a Car示例(由Squeak提供支持)。
Smalltalk语法很简单,非常适合儿童使用。
后来随着孩子的成长,他可以学习Squeak中也有的更复杂甚至非常高级的概念(例如,使用自动重构和自动单元测试来编程全状态Web应用程序!)。
就像@cpuguru和@Rotem所说的那样,Scratch(也基于Squeak)也很棒。
回答
我知道在高中的头几年,我们是"教"徽标的,而奇怪的是HTML。之后,进展到MS Office中的宏,然后是基本VBA,然后是Visual Basic。
回答
在familyinternet.about.com上有一篇很好的文章。
回答
我认为上下文免费艺术可能是一个不错的选择,带有图形输出,这使学习上下文无关的语法变得非常有趣。
回答
尽管我过去曾经(并喜欢)乐高Mindstorms,但出于以下原因,我会彻底推荐XNA Game Studio:
- 它涉及创造许多孩子会感兴趣的东西(游戏)。
- 免费。
- 这是一种真正的语言(C#)和一种真正的IDE(Visual Studio)。
- 我们将学习OOP。
- 父母会和孩子们一样找到很多乐趣。
回答
AIML呢?与其说是一种编程语言,不如说是一种编程语言,而是我们可以立即实现,并且因为它与人工智能有关,因此很可能会激发他(她?)的兴奋感。
回答
我开始在Flash中编程。
"玩具语言",嗯,嗯。
而在那之前,学校里只有一小部分徽标
我不知道头脑风暴,但我想那会很好。
我认为,除非有真正的学习动力,否则一开始只使用输入和输出命令行驱动的程序可能会感到沮丧。
通过在屏幕上四处移动一些图片,到处或者到处触发一些声音而产生的即时满足感,比构建收银机程序,制作嘶嘶声程序等具有更吸引人的结果。
"看奶奶,我建立了一个网页!"即使从HTML和一些javascript开始,到处都有表格和字体标签,并且能够与非技术人员共享开发的内容,从长远来看,可能比30行C语言来安抚一个疯狂的父亲更有益。可能会或者可能不会
回答
那Stagecast Creator呢?
我一直在和7岁的女儿(我们从6岁开始)一起使用它。
不要被小孩子的界面所欺骗。一旦开始使用它,我们就会意识到它正在教授许多复杂的想法。它是顺序处理,并且全部由图形驱动。我们可以通过定义"如果图片看起来像这样然后使其看起来像那样"类型功能来定义字符规则。角色可以改变外观,发出声音,移动其他角色,响应键盘和鼠标等。
它讲解了if.then..else逻辑。操作顺序(处理第一个为真的规则时)。有调试器,以便我们可以逐步执行代码等。
一个非常好的工具,可以让年轻人发现编程背后的思维过程,并且是一种有趣而简单的方法来确定他们是否对此类事情感兴趣。
确定这一点后,就可以使用"真实"语言。
回答
Python是一种很棒的第一门编程语言,可用于练习过程语言和功能语言的概念。
免费书籍《字节的Python》是一个简单的入门指南,是为初学者编写的,并提供多种语言版本。
回答
完全公开:我是发明儿童编程语言的人之一,该语言现在为http://www.Phrogram.com,其他人在这里推荐。让我添加一些有关面向程序员的信息。
它是一个代码IDE,而不是拖放或者基于设计器。对于我们而言,这是有意的,我们希望使基于真实文本的编程(尤其是对游戏和图形编程)的操作变得轻松有趣。这是我们与Alice and Scratch之间的根本区别。我们选择的问题取决于孩子,他们的年龄和才能,目标。如果要这样做,与同一个初学者连续使用它们可能是一个不错的选择,我建议按顺序使用Scratch,Alice和Phrogram。 Phrogram在12年及以上的时间里效果最好,但是我知道有6岁的孩子用它教孩子的父亲,我也有10岁的孩子用它教孩子的父亲。
该语言尽可能地像英语一样,并且尽可能地少用。秘诀在于基于类的对象层次结构,它又像我们可以做到的那样简单,直观和英语。对象层次结构针对游戏和图形进行了优化。提供3D模型和2D精灵。支持使用屏幕坐标进行绝对移动,或者支持LOGO龟向前移动(x),TurnLeft(y)相对移动。
IDE附带了100多个示例,一些语言示例(循环),一些学习示例(数组),一些功能齐全的游戏和sims(乒乓球,导弹指挥系统,生活游戏)。
为了让我们感觉到我们对语言和IDE的利用程度:使用27条指令,我们可以使用键盘在3D天窗周围飞行3D飞船模型。对于2D子画面,相同的是12到15条指令。
我们正在开发与Blade兼容的Phrogram版本,该程序将允许程序在XBox 360上运行。成为孩子入门的好动力吗? :)
Phrogram包括对基于类的编程的支持,具有方法和属性,但这仅是封装,而不是继承或者多态性。
提供了教程和用户指南,
我自己的电子书可在Amazon和其他在线商店"学习使用Phrogram!编程"中找到,并通过对经典Pong进行编程来使初学者入门。
杰里·李·福特(Jerry Lee Ford,Jr.)编写的"绝对入门的笔编程"也可以在亚马逊和其他地方作为平装本使用。
回答
当我的女儿大约6或者7岁时,我向她展示了徽标应该认为绘制形状很有趣,但随后却失去了兴趣。
当她10岁时,我尝试了Squeak,她认为那很棒。她很快就了解了Smalltalk语法,并从中获得了很多乐趣。我也尝试过Greenfoot,但收效较差。
我认为Ruby可能值得一试(我不时使用Ruby!)
现在,她对其他非计算活动更感兴趣。
因此,这些天来,我想说Squeak值得一试。
那Hackety-Hack呢?还没有和孩子们尝试过,但是看起来很有趣。
回答
尝试[Guido van Robot] [1]。这是对机器人技术的出色介绍,也是将孩子介绍到编程方面的一种好方法(与"构建机器人"方面相比)。
回答
沃伦(Warren)和卡特·桑德(Carter Sande)有一本名为《 Hello World:儿童和其他初学者的计算机编程》的新书,我从9岁那年就开始购买。他将学习编程,而我将学习Python。
回答
刮。
不要让类似卡通的结果欺骗我们。孩子们喜欢这个东西,它提供了我们期望的大多数编程语言:循环;条件逻辑事件;子程序和面向对象的编程。
其他喜欢的东西:
- 优秀的文档
- 多功能性有些孩子喜欢游戏。其他人则喜欢讲故事或者创作动画片。其他人喜欢制作音乐或者图形效果。一切都可以通过Scratch完成。孩子们甚至可以将他们的程序发布到他们作为多媒体/网络课程的一部分创建的网站上。
- 环境图形化的开发环境,其中的编程元素固定在一起。形状和颜色很好地用作视觉提示。
- 社交编码社区创建的带有程序评分系统的大量程序集,孩子们可以用来获得新的想法,弄清如何解决特定问题或者与同龄人分享他们的创作。
- 骇客对于孩子来说,添加自己的自定义声音并绘制自己的角色非常容易。让我想起了数字构造纸。
- 平易近人的界面非常简单,孩子们只需很少的介绍就可以开始使用它。
最重要的是,Scratch可以在Windows,Linux和OS X上运行,因此不会遗漏具有混合硬件设置的学校。
回答
标识
是
惊人的
回答
查看PythonTurtle。
回答
PHP或者Visual Basic。
我9岁时就开始使用PHP,现在我只喜欢一百种语言。
我最喜欢的是PHP和C ++。
回答
蛮力
"去做吧!"
回答
我的儿子(和我)结合了这里已经提到的建议,玩得很开心:
- Python是一种非常直观的语言
- 徽标龟图形
- 乐高头脑风暴
NXTurtle是一个入门的小混搭...
回答
我是六年级的学生,从我看到计算机以来,我就对编程的概念很感兴趣。我尝试了许多编程语言(.NET,Python和Javascript),但我不得不说,到目前为止我最喜欢的是Visual Basic(.NET),因为它设计简单,代码本身也易于理解。小时候看到我们自己制作和运行的程序真是太酷了,我认为Visual Basic是做到这一点的最佳方法。
-卡尔
回答
有人遇到BigTrak吗?
这是我第一次编程经验。
从本质上讲,它实际上是一只巨型徽标龟,
以战车的形状
它上面有一个小键盘,用于键入程序。
大概适合5至8岁的儿童,
也就是说,甚至在孩子没有耐心/协调才能在屏幕上打字之前。