首页 / 知识
关于语言不可知:关于开始儿童编程的建议
2023-04-12 18:08:00

Suggestions on starting a child programming您认为年轻人从编程开始应该使用哪些语言和工具? 我们很多人都开始使用专有的Basics,他们并没有对我们所有人造成长期的伤害:)但是考虑到你从那时起的经验以及你对域名的了解,现在有更好的选择吗? 有一个相关的问题,如"教初学者编程的最佳方法?" 关于开始成人编程的"一条建议",我提交了答案但儿童可能需要不同的工具。 披露:很难选择这样一个问题的"正确"答案,所以在几天内获得最高分的人将根据社区选择获得"最佳答案"标记。 我建议使用LEGO Mindstorm,它为编程提供了一个直观的拖放界面,因为它带有硬件,它为孩子提供了一些有形的东西。此外,因为它是"乐高",他们可能会认为它更像是一场游戏,而不是编程练习。 我的日常工作是在一所学校,在过去的几年里,我见过或教过(或试图教过)各种各样的孩子,不同数量的编程课程。 孩子们都是不同的 - 有些是快速学习者,有些则不是。特别是,有些人比其他人有更好的识字能力,这肯定会对他们选择编程的速度产生影响。我敢打赌,我们这里的大多数人,作为专业的计算机程序员,以及那些阅读和发布到论坛上寻求乐趣的人,在很小的时候就学会了阅读。对于那些孩子,如果是你自己的孩子,你可以一对一教授,你可以做得比JavaScript更糟糕 - 它的优点是你可以立即用它来做真正的东西,以及编辑测试周期只是在浏览器中点击"刷新"。当你开始考虑JavaScript如何异步地完成所有事情并且调试很棘手时会让人感到困惑,但是对于一个聪明的孩子来说,接下来可以克服这些问题。 LEGO Mindstorms绝对是排在榜首的。大多数学校现在将砖块粘合在一起,以创建预制的模型,这些模型不会有任何痕迹,但这在家里应该不是问题。在Times Educational Supplement网站(英国每周教学报的网站论坛)上,"什么编程语言最适合儿童?"主题定期出现。 Scratch作为Mindstorms的替代品有很多建议 - 比Mindstorms更多的自由,对于那些也可以给予烙铁的更聪明的学生来说也许更好。 虽然编程环境是"图形化的" - 我仍然发现Mindstorms的速度较慢的学生仍然存在问题 - 屏幕上还有很多内容,而且还有一些值得记住的东西(这是一个旧版本,天堂般的避风港)还没试过那个时髦的新人。根据我的经验,编程的最佳全能介绍可能仍然是LOGO - 实际上是一种比大多数人都赞不绝口的强大语言。 Seymour Papert最初的Mindstorms书(与乐高无关 - 他们为自己的产品标出了这本书的标题),LOGO的创始人之一,是将儿童编程作为一种"思维技巧"的规范参考。建构主义在学习中的概念。 我们有7或8岁的编程LOGO课程。请注意,我们并非旨在使他们成为"软件开发人员",这是他们可以在16之后的某个时刻决定的职业道路。在年轻的时候,我们试图让他们把"计算机编程"想象成另一种工具 - 如何设置一个计算机要解决的问题,就像他们可能使用思维导图帮助他们组织一样并记住考试的东西。没有可怜的孩子应该坐下来钻进细节和使用某种语言,他们应该留下来探索和计算出他们喜欢的东西。 我将继续Geoff对Phrogram(曾经是KPL)和Alice的建议。 我唯一的另一个建议是Lego Mindstorms NXT。 NXT的编程语言是拖放式的,非常易于使用,并且一旦您学习它就可以执行一些非常复杂的任务。年轻男孩通常喜欢看东西移动。 :) 我和一些年幼的孩子一起使用了Alice和NXT,他们已经很好地接受了它。 两种可能性是: Scratch - 在麻省理工学院开发 - http://scratch.mit.edu/ 和 来自每个孩子一台笔记本电脑的名字 - http://wiki.laptop.org/go/Squeak 完全披露:我是发明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。的"绝对初学者的程序设计"也可以作为平装本在亚马逊和其他地方使用。 对于一个孩子,我会和爱丽丝一起去。任何孩子都会喜欢爱丽丝使用的拖放式互动,而不是试图记住如何拼写和标点符号任何编程语言。他/她将学习基本的编程结构(条件,循环等),并将体验构建动画节目的乐趣,他们可以向其他家人或朋友展示。 当地社区大学的初学者CS课程实际上使用Alice以与语言无关的方式教授编程。它为将来使用特定语言(或几种语言)进行编程提供了良好的基础。 我最近看了一篇关于GreenFoot(一个基于java的儿童学习环境)的演讲。它看起来很棒。如果我有孩子,我会尝试一下 链接到演示文稿 这是一个非常有趣的环境,您可以从非常基本的方法开始。孩子们以面向对象的方式学习思考(你无法实例化动物,但你可以实例化一只猫)。他们获得的越多,你可以用它们发现的Java就越多。 我会选择Scratch,关于它的一些观点。
我想要指出的是,尽管我们中的许多人在年轻时开始使用基本或徽标进行编程,并且因为程序员以后的生活并不意味着这些都是好的语言。我认为今天的孩子有更好的选择,比如刮刮或爱丽丝。 查看Phrogram(以前的KPL)和Alice 我会说:给孩子一个真正的C64,因为这就是我开始的方式。但是,今天......我会说Ruby,但Ruby有点混乱。从长远来看,BASIC会更好。处理很容易学习,它基本上是Java。 我推荐C64的原因是因为它是BASIC,但你还是要学习某些与计算机相关的东西,比如内存模型,像素,字符,字符映射,换行符等等,如果你想做更高级的东西。此外,如果你的孩子发现它很无聊,你知道他的心真的不是编码。 我会推销LOGO。这是我小学教的东西。它提供了几乎即时的反馈,并将教授真正基本的编程概念。移动那只小乌龟可以带来很多乐趣。 我推荐python,因为它简洁而富有表现力。在入门时看起来不太可能令人沮丧,但也提供了充足的空间来学习更高级的概念。
这是爱丽丝的另一票。我的4个孩子在使用它和学习编程的基本概念方面有很多乐趣。当然对他们来说,所有关于与仙女和食人魔的社交活动,但是我工作的遗产系统可能会使用一些小食和食人魔。 Game Maker可能是另一种方法。您可以通过简单的拖放开发简单地开始,然后随时介绍更高级的编程。"游戏制作者的学徒:初学者游戏开发"一书有许多示例游戏,并指导您完成制作游戏所需的步骤。 由Alan Kay开发的Checkout Squeak认为编程应该在早期教授。 几岁?很多人在某些时候都盯着BASIC,但在那之前,我学会了将命令串在一起,变量和用LOGO循环的概念。弄清楚如何用一个只能直线和转弯的三角形绘制圆圈是我的第一个编程成就。 编辑:这个问题及其答案让我觉得自己老了。 我认为python是一个很好的选择;它是一种非常强大的语言,你也可以很容易地做很多事情(根本不乏味)。 正如我在这里所说,我会选择Squeakland和着名的Drive a Car示例(由Squeak提供动力)。 Smalltalk语法很简单,非常适合儿童。 随着孩子的进化,他可以学习更复杂甚至非常先进的概念,这些概念也在Squeak中(例如,通过自动重构和自动化单元测试来编写状态丰富的webapps!)。 就像@cpuguru和@Rotem所说的那样,Scratch(也是基于Squeak的)也很棒。 我认为第一个问题是:创建什么类型的程序会有趣?让我开始编程的一件事(在BBC基础版和QBasic版中)是编写图形程序的简便性。我可以编写几行代码,看看我的程序会立即在屏幕上划一条线。 我最近看到的那种最简单的是python和Processing的pygame库,一组带有IDE的java库。 我认为黑客攻击网页将是另一种开始的好方法:这将需要HTML,Javascript(使用像jQuery这样的库),也许是PHP或类似的东西。 无论您提供什么工具,关键是要让它立即开始。如果你必须编写二十行正确的代码,并在看到任何有形结果之前弄清楚如何调用编译器,那么进展将会很慢。 这里有很多好的建议。我真的同意Kronikarz。获取您感兴趣的复古计算机(或仿真器)并进行教学。为什么复古电脑? Basic是内置的。制作声音和原始图形是一项微不足道的任务。真正的交易可能比模拟器更好,因为对于习惯只看现代设备的孩子来说,它会更有趣。 我认为你应该在C中开始它们。他们越早得到指针就越好。 请参阅了解指针,我是否应该学习C. 虽然__在过去一年左右没有给予他太多的爱,但有一段时间我对Hackety Hack感到非常兴奋。我认为大多数新程序员的关键,特别是那些对事物不感兴趣的孩子,都是即时反馈。这是关于Hackety Hack的非常棒的事情:几行代码,突然间你面前有一些东西可以做些什么。有一些类似的应用程序旨在绘制图形(其中一个,我简要地帮助Nathan Weizenbaum,Scribble!)。孩子们只需要积极的反馈,他们会定期做正确的事情,否则没有什么能让他们对手头的任务感兴趣。我认为教孩子们编程的未来是一种基于语言友好的语言构建的DSL(可能包括Ruby,Python和Scheme),其目的是为简单构建提供直观的环境游戏(比如,Tic-Tac Toe,或Hangman)。 我会选择我想知道的第一个:一个简单的MS-DOS盒和集成的汇编器(调试)。真正学习和理解与计算机交谈的基础知识真是太棒了。 如果这不会吓跑一个孩子,那么我会去"下一级"并引入C.这应该不是很难,因为那时指针,寄存器和指令的基本概念已经被很好地理解了。 但是,我不完全确定,接下来要去哪里。大胆跳转到Lisp,Haskell或类似的抽象语言,或者是否应该抛出一些简单的面向对象语言(甚至可能是C ++),还是会有更多的伤害而不是帮助? 我认为Context Free Art可能是一个不错的选择,有了图形输出,它可以让你学习无上下文语法很有趣。 好吧,如果他们年轻并且没有学习他们的ABC,你可以尝试使用BF - 而不是那些讨厌的字母和数字来处理。 我会给我'大衣。 Skizz 看着爱丽丝,我看到它是"专为高中和大学生设计的"。似乎有另一种名为Story Telling Alice的语言/版本"专为中学生设计" 爱丽丝下载页面 我认为Java可能是一个很好的选择,因为你可以轻松制作GUI,并看到"很酷的事情"发生。出于同样的原因,也许是任何.NET语言。我也听说过有关脚本语言(特别是Ruby和Python)的好东西,让孩子们学习如何编程。 试试[Guido van Robot] [1]。这是对机器人技术的精彩介绍,它是向孩子们介绍事物编程方面的一种很好的方式(与"建立机器人"方面相比)。 Smalltalk不是为此目的而设计的吗?我认为Ruby是一个不错的选择,作为Smalltalk的后代。 蛮力 "做它或者别的!" 我的儿子(和我)使用这里提到的一些建议很好玩:
NXTurtle是一个小小的mashup开始... 我是一名小学六年级学生,自从我看到一台电脑以来,我一直对编程的概念感兴趣。我已经尝试了很多编程语言(.NET,Python和Javascript),我不得不说,到目前为止我最喜欢的是Visual Basic(.NET),因为设计很简单,代码本身也很容易理解。看到一个你工作和操作的程序,它真是太酷了,我认为Visual Basic有最好的方法。 -Karl
PHP或Visual Basic。 商标 是 真棒 当我的女儿大约6或7岁时,我展示了她的标志 - 应该认为绘制形状很有趣 - 但后来失去了兴趣。 当她10岁时,我尝试了吱吱声 - 她觉得这很棒。她很快就接受了Smalltalk语法并且非常有趣。我也试过Greenfoot - 但成功率较低。 我认为Ruby可能值得一试(我不时使用Ruby - 好东西!) 现在她对其他 - 非计算 - 活动更感兴趣。
所以现在,我会说Squeak值得一试。 刮。 不要让卡通式的结果欺骗你。孩子们喜欢这个东西,它提供了你在编程语言中所期望的大部分内容:循环;条件逻辑;事件;子程序;和面向对象的编程。 其他喜欢的事情:
最重要的是,Scratch可以在Windows,Linux和OS X上运行,因此不会遗漏具有混合硬件设置的学校。 有一本名为"Hello World:儿童和其他初学者的计算机编程"的新书,由Warren和Carter Sande为我9岁开始购买。他将学习编程,我将学习Python。
有人遇到过BigTrak吗?
可能适合5-8岁, 我知道在高中的最初几年,我们被"教"了Logo,奇怪的是,HTML。之后,进展到MS Office中的宏,然后是基本VBA,接着是Visual Basic。 在familyinternet.about.com上有一篇关于此的好文章。 虽然我过去曾使用LEGO Mindstorms(并且喜欢它),但我会完全推荐XNA Game Studio,原因如下:
AIML怎么样?与其说是一种编程语言,不过是一种即时的实现,因为它完全是人工智能,它可能会引发他(她的)兴奋感。 我开始用Flash编程。 "玩具语言"meh meh meh。 在此之前,学校里有一小部分Logo 我不知道心灵风暴,但我想它会很好。 我认为,除非有真正的学习动力,否则一开始只需要输入和输出命令行驱动程序就会感到沮丧。 有了一点即时的满足感,通过在屏幕上移动一些图片,在这里和那里触发一些声音,可能比建立一个收银机程序,制作一个fizz buzz程序等更有吸引力的结果。 "看奶奶,我建了一个网页!" - 甚至从HTML和一些javascript开始,到处都有表格和字体标签,并且能够与非技术人员共享开发的东西,从长远来看可能比30行C代码更有利于编码以安抚代码疯狂父亲。这可能是也可能不是 那么Stagecast Creator呢? 我和我7岁的女儿一直在使用它(我们从6岁开始)。 不要被小子界面所迷惑。一旦你开始使用它,你就会意识到它正在教授许多复杂的想法。这是顺序处理,它都是图形驱动的。您可以通过定义"如果图片看起来像这样,然后使其看起来像'类型功能"来定义字符规则。角色可以改变外观,发出声音,移动其他角色,响应键盘和鼠标等。 它教导if..then..else逻辑。操作顺序(因为它处理第一个规则是真的)。有一个调试器,所以你可以单步执行代码等。 一个非常好的工具,让你的年轻人发现编程背后的思维过程,以及一种有趣而简单的方法来确定他们是否对这类事物感兴趣。 一旦你确定了这一点,就可以转向"真正的"语言。 Python是一种很棒的第一种编程语言,它可以用于实现过程语言和函数语言的概念。 免费的A Byte of Python是一本简单的介绍,为初学者编写,并且有几种语言版本。 看看PythonTurtle。 |
最新内容
相关内容
python有map方法吗
python有map方法吗,培训,位置,数据,函数,列表,序列,参数,元素,方法,使用方法,python中的map:map()会根据提供的函数对指定序列做映射。第一个pythonc语言取余和python取余的区
pythonc语言取余和python取余的区别,培训,资料,语言,负数,区别,被除数,符号,除数,规定,余数,今天看书发现python与C的负数取余运算结果不同,python学习python编程可以从事什么
python学习python编程可以从事什么工作岗位,工作,分析,网络,数据,数字,行政,销售,培训,资产,庞大,一、学Python编程能做的工作,编程方向:1、Webpython网络编程及前端常见问题
python网络编程及前端常见问题,数据,服务,分析,培训,状态,前端,区别,服务器,常见问题,上面,当我们学习Python时,需要掌握的的知识有很多,除了有python可以做网页编程吗?
python可以做网页编程吗?,技术,公司,数据,网络,人工智能,工资,分析,工作,设计,市场,什么是Python? Python是一种计算机编程语言,也是一种pythonPython和r语言的区别
pythonPython和r语言的区别,数据,分析,流程,培训,工具,系统,服务,平台,代码,语言,Python与R语言的共同特点1.Python和R在数据分析和数据挖掘pythonpython是函数式语言吗
pythonpython是函数式语言吗,培训,代码,函数,概念,指数,状态,语言,变量,计算机,程度,函数是Python内建支持的一种封装,我们通过把大段代码拆成python有哪些方法可以解压文件?
python有哪些方法可以解压文件?,工具,系统,工作,培训,文件,文件夹,方法,窗体,不同于,以下内容,在Python学习和日常使用中,很容易造成文件过大。python函数与方法的区别是什么
python函数与方法的区别是什么,培训,函数,方法,区别,对象,以上,方式,更多,内容,python中函数和方法的区别1、函数要手动传self,方法不用传selpython类自带方法吗
python类自带方法吗,培训,方法,里面,实例,也就是说,下面,对象,以上,之后,参数,python中的类,创建好之后,里面是没有方法的,也就是说,类并没有自带python子类可以调用父类方法吗
python子类可以调用父类方法吗,培训,名称,资料,情况,地方,函数,参数,方法,表示,语句,python中的子类中的__init__()函数会覆盖父类的函数,一些python静态方法怎么使用self
python静态方法怎么使用self,培训,管理,不了,方法,静态,属性,实例,变量,对象,参数,python-静态方法,类方法,属性方法静态方法实际上与类(或者实