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