关于开始编程的build议
你认为从编程开始的年轻人应该在现代使用什么语言和工具?
我们很多人开始使用专有的基础知识,他们并没有做我们所有的长期伤害:)但是鉴于你从那时起的经验,你现在的知识领域有更好的select?
这个问题有相关的疑问,比如“ 教授初学者的最佳方法? ”和“关于开始成年人编程的一个build议 ”,我都提交了答案,但是孩子可能需要不同的工具。
披露:对于这样的问题,select一个“正确的”答案是很难做到的,所以谁能在几天内得到最好的分数,就可以根据社区的select得到我最好的答案。
我会build议乐高头脑风暴 ,它提供了一个直观的拖放界面进行编程,因为它提供了硬件,它提供了一个有形的孩子把握。 而且,因为它是“乐高”,所以他们可以把它看作是一场游戏,然后是一场编程练习。
我的日常工作是在一所学校里,在过去的几年中,我看过或者教过(或者试图教过)各种各样的孩子,不同的编程课程。
孩子们是不同的 – 有些是快速学习者,有些则不是。 特别是有些人的识字能力比其他人好,这对他们编程的速度肯定有影响。 我敢打赌,我们这里的大多数人,作为专业的电脑程序员,以及那些在论坛上阅读和发表趣闻的人,都在一个相当年轻的时代学会了阅读。 对于那些孩子,如果你可以一对一地教你自己的孩子,你可以做比JavaScript更糟糕的事情 – 它的优点是你可以马上做真正的事情,编辑testing周期只是在浏览器中点击“刷新”。 当你开始学习JavaScript如何asynchronous地完成所有的事情时,会感到困惑,而且debugging起来很棘手,但是对于一个聪明的孩子来说,这些问题可以被克服。
乐高头脑风暴肯定是在那里顶部的名单。 现在大多math校都把超级砖粘在一起,制造出不可缺less的预制模型,但这在国内应该不成问题。 在“泰晤士报教育补充”网站(英国每周教学报的网站论坛)上,“什么编程语言最适合儿童?” 话题相当有规律地出现。 很多build议在那里作为替代Mindstorms Scratch – 比Mindstorms更多的自由,再次可能更好的更聪明的学生,也可以给一个烙铁。
我发现尽pipe编程环境是“graphics化的”,但是即使编程环境是“graphics”的,学生的速度仍然会比较慢,但屏幕上还是有很多东西需要记住(这是一个老旧的版本,避风港还没有尝试过那个时髦的新人)。 根据我的经验,编程最好的全面介绍可能还是LOGO–实际上它是一种比大多数人所称赞的更强大的语言。 Seymour Papert原创的Mindstorms书(与LEGO无关 – 他们为自己的产品剔除了本书的标题),LOGO的创始人之一是为孩子们编程作为“思考技能”的规范参考书build构主义在学习中的概念。
我们已经有7或8岁的编程LOGO的课程。 请注意,我们不打算让他们成为“软件开发者”,这是他们可以在16岁以后的某个时候决定的职业道路。 在年轻的时候,我们试图让他们把“计算机编程”看作是另一种工具 – 如何设置一个计算机要解决的问题,就像他们可以用思维导图来帮助他们组织并记住考试的东西。 没有一个可怜的孩子应该坐下来,在细节中使用某种特定的语言,他们应该留下来探索和找出他们喜欢的东西。
我会再次Geoff的关于Phrogram(曾经是KPL)和Alice的build议 。
我唯一的build议是乐高Mindstorms NXT 。 NXT的编程语言是拖放式的,使用非常简单,一旦学习,就可以完成一些非常复杂的任务。 另外年轻的男孩通常喜欢看东西移动。 🙂
我和一些年轻的孩子一起使用了爱丽丝和NXT,他们已经很好的了。
两种可能性是:
从MIT开发 – http://scratch.mit.edu/
和
来自“每个儿童一台笔记本电脑”的EToys名声 – http://wiki.laptop.org/go/Squeak
充分披露:我是发明了孩子的编程语言,现在是http://www.Phrogram.com ,其他人在这里推荐的人之一。 让我添加一些面向程序员的信息。
这是一个代码IDE,而不是拖放或基于devise器。 这是我们的故意 – 我们想要使真正的基于文本的编程变得简单而有趣,特别是编程游戏和graphics。 这是我们和Alice和Scratch的根本区别。 你挑选的是一个孩子,他们的年龄和性向,你的目标。 如果你这样做的话,我会build议使用Scratch,Alice,Phrogram作为订单。 Phrogram已经工作了12年了,但是我知道6岁的爸爸曾经教过他们的孩子,我知道10岁的孩子已经自学了。
这个语言和我们可以做到的一样英语,尽可能less,我们可以做到。 秘诀在于基于阶级的对象,这又像我们所能做到的那样简单,直观,像英语一样。 对象heirarchy针对游戏和graphics进行了优化。 3D模型是可用的,2D精灵。 支持使用屏幕坐标的绝对移动,或相对移动ala LOGO龟 – Forward(x),TurnLeft(y)。
IDE带有100多个示例,一些语言示例(循环),一些学习示例(数组),一些function齐全的游戏和模拟(Pong,导弹命令,生命游戏)。
为了让您了解我们是如何使用语言和IDE的高度杠杆化的,您可以使用键盘在27个指令中围绕3D天空飞行3D飞船模型。 2D精灵也是12到15条指令。
我们正在开发一个与Blade兼容的Phrogram版本,它将允许程序在Xbox 360上运行。是的,Xbox,在你的大电视上。 好孩子的动机开始了吗? 🙂
Phrogram支持基于类的编程,包含方法和属性 – 但这只是封装,而不是inheritance或多态。
教程和用户指南可用,
我自己的电子书可以在亚马逊和其他地方在线获得,“通过Phrogram!学习编程”,并通过编程经典的Pong开始初学者。
Jerry Lee Ford,Jr.的“绝对初学者的程序devise”也可在亚马逊和其他地方作为平装本使用。
对于一个孩子,我会和爱丽丝一起去的。 任何孩子都会喜欢Alice所使用的拖放式交互,而不是试图记住如何拼写和标点任何编程语言。 他/她将学习基本的编程结构(条件,循环等),并将体验到构buildanimation程序的乐趣,这些animation程序可以展示给其他家人或朋友。
当地社区学院的初级CS课程实际上使用Alice以独立于语言的方式教授编程。 它为下一个语言(或几种语言)的编程提供了良好的基础。
我最近看到关于GreenFoot (基于Java的儿童学习环境)的演示文稿。 它看起来很棒。 如果我有孩子,我会试试看
链接到演示文稿
这是一个非常有趣的环境,你可以从非常基本的方法开始。 孩子们以面向对象的方式学习思维(你不能实例化动物,但你可以实例化一只猫)。 而且他们得到的越多,你就可以发现更多的Java。
我会和Scratch一起去看看 。
- 这是一种graphics化编程语言。 这不是基于文本(这可能是积极的或消极的)。 它确实使孩子们更直观,更容易(7岁以上)。
- 这实际上是高度的对象。 您编写这些graphics脚本的对象将代码附加到它们,并可以重复使用和移动。
- 非常重要 :快速,令人印象深刻 孩子们需要快速行动,并得到结果,才能上瘾。
我想指出的是,虽然我们很多人从小就开始在基本或标识方面进行编程,并且因为程序员以后的生活并不意味着这些语言是最好的开始。 我认为今天的孩子有更好的select,比如抓草或爱丽丝。 基于文本的语言(python,ruby,basic,c#甚至c)都依赖于外部库和工具(编辑器,编译器),而像Alice或scratch这样的东西是包容性的,会教孩子们(不是针对青less年)编程概念。 之后,他们可以继续前进,扩大学习。
检查Phrogram (以前KPL)和爱丽丝
我会说:给孩子一个真正的C64,因为我就是这样开始的。 但是,今天…我会说Ruby,但Ruby有点太混乱了。 BASIC从长远来看会更好。 处理简单易学,基本上是Java。
我推荐C64的原因是因为它是基本的,但是如果你想要做更高级的东西,你仍然需要学习某些与计算机相关的东西,比如内存模型,像素,字符,字符映射,换行符等等。 而且,如果你的孩子觉得无聊,你就知道他的心真的不是编码。
我会推介LOGO。 这是我小学所教的东西。 它提供了几乎即时的反馈,并将教授真正的基本编程概念。 移动那只小乌龟可能会很有趣。
对于一个孩子,我会和爱丽丝一起去的。
这是对爱丽丝的另一个投票。 我的4个孩子玩得很开心,学习了编程的基本概念。 当然对他们来说,这完全是与精灵和食人魔进行社交,但是我所工作的那个遗产系统也可以使用一些农民和食人魔。
我build议Python,因为它是如此简洁和expression。 入门似乎不太可能让人沮丧,但也提供了大量空间来学习更高级的概念。
游戏制作者可能是另一种方法。 您可以从简单的拖放开发开始,然后随时引入更高级的编程。 “ 游戏制造者的学徒:初学者的游戏开发 ”一书有许多示例游戏,并会带您完成制作游戏所需的步骤。
我认为python是一个很好的select。 它是一个非常强大的语言,你也可以轻松地做很多事情(而不是无聊)。
艾伦•凯 ( Alan Kay )开发的结账吱吱声(Seque out Squeak )认为编程应该在早期教授。
几岁? 很多人在某个时候盯着BASIC,但是在那之前,我学习了将命令串在一起,variables和用LOGO循环的概念。 弄清楚如何绘制一个只能走直线和转弯的三angular形是我第一次编程的成就。
编辑:这个问题及其答案让我感觉老。
尽pipe在过去一年左右,我们并没有给予太多的爱,但是一段时间以来,我对Hackety Hack感到非常兴奋。 我认为大多数新程序员,特别是那些对事物失去兴趣的孩子的关键是瞬间的反馈。 这就是Hackety Hack的真正奇妙之处:只需几行代码,突然之间,你就有一些东西在做什么。 有几个类似的应用程序,旨在绘制graphics(其中之一,我短暂地帮助内森Weizenbaum, Scribble! )。 孩子们只需要积极的反馈,他们正在定期做正确的事情,否则没有什么可以让他们对手头的任务感兴趣。 我认为未来教孩子们编程是一种基于友好语法的语言构build的DSL(这可能包括Ruby,Python和Scheme),其目的是提供一个直观的环境来构build简单游戏(比如说Tic-Tac Toe或Hangman)。
我认为你应该从C开始,越早越好。
请参阅理解指针 , 我应该学习C。
我想第一个问题是:创build什么types的程序会很有趣? 从小编程开始(从BBC基本到QBasic),开始编程的一件事便是编写graphics程序。 我可以写几行代码,看看我的程序马上在屏幕上画一条线。
我最近看到的那种简单性最近就是python和Processing的pygame库 ,一个带有IDE的java库。
我想在网页上进行黑客攻击是另一个好的开始:这需要HTML,Javascript(使用像jQuery这样的库),也许PHP或者其他的东西。
无论你提供什么工具,关键的一点是,它很容易马上开始。 如果你必须写出20行正确的代码,并在看到任何实际的结果之前弄清楚如何调用编译器,那么进展将会变得缓慢。
这里已经有很多好的build议了。 我真的同意Kronikarz。 获得一个你感兴趣的复古电脑(或模拟器),并教导。 为什么一台复古电脑? 基础是内置的。制作声音和原始graphics是一项微不足道的任务。 真正的交易可能比模拟器更好,因为对于习惯于只看现代设备的孩子来说,它会更吸引人。
正如我在这里所说的,我会去Squeakland和着名的Drive a Car例子(由Squeak提供支持)。
Smalltalk语法很简单,这对于孩子来说很好。
后来随着孩子的发展,他可以学习更复杂甚至是非常先进的概念,这些概念也是在Squeak中的(例如,用自动化重构和自动化unit testing编写完整的webapps!)。
就像@cpuguru和@Rotem所说的那样,Scratch(也是基于Squeak的)也很棒。
我认为Java可能是一个不错的select,因为您可以轻松地制作GUI,并且看到“酷炫的事物”正在发生。 出于同样的原因,也许任何.NET语言。 我还听说过脚本语言(特别是Ruby和Python)的好处,让孩子们学习如何编程。
那么,如果他们还年轻,还没有学过ABC,那么你可以试试BF,而不是那些讨厌的字母和数字来处理。
我会拿我的外套。
Skizz
我会select我希望我已经知道的第一个:一个简单的MS-DOS框和集成的汇编程序(debugging)。 真正学习和理解与计算机交谈的基本知识是非常好的。
如果这样做不能吓跑一个孩子,那么我就去“下一个级别”,介绍一下。这个应该不难,因为那时一般的指针,寄存器和指令的基本概念已经被很好的理解了。
但是,我不完全确定,下一步该去哪里。 把Lisp,Haskell或类似的抽象语言大举跳过,或者应该有一些简单的面向对象的语言(甚至C ++)被抛入,或者会比帮助更受伤害吗?
看着爱丽丝,我看到它是“为高中和大学生devise的”。 似乎还有另一种语言/版本,称为故事讲爱丽丝 “是专为中学生”
爱丽丝下载页面
我认为上下文 无关的 艺术可能是一个不错的select,输出graphics,这使得上下文无关语法的学习变得非常有趣。
试试[Guido van Robot] [1]。 这是对机器人的一个很好的介绍,这是一个很好的方式来介绍孩子们的编程方面的事情(与“build设机器人”方面)。
Smalltalk不是为这样的目的而devise的吗? 我认为Ruby是一个不错的select,作为Smalltalk的后代。
我知道在高中的头几年,我们“教”了Logo,奇怪的是HTML。 之后,进展到MS Office中的macros,其次是基本的VBA,其次是Visual Basic。