目前有很多可以教小朋友学习编程的资源,随便整理了下,给大家参考,自从我发了小朋友编程的内容后,有部分人来问我,不一一解答所以写了本博客,希望能多安利一些人。

由于精力问题,我也没有详细去全部了解所有的工具,主要是简单介绍一下Scratch这个怪兽,也不算是怪兽,比6岁的小朋友好搞多了,让他傻傻的在那边编程,你就可以看看电影,玩玩游戏(天天,你如果看到这,要相信爸爸不是说你傻,等等等等,我这边有个棒棒糖,你帮我“重复执行100次”,把棒棒糖“角色的大小增加-1”,“等待0.5秒”,最后“隐藏”)。此为抛砖引玉,如果有更好的,记得告诉我。

文章目录

教小朋友编程有什么价值?

题主的问题很功利,我为什么教儿子编程,就是好玩而已,奥巴马:所有美国人都应学习编程 http://tech.qq.com/a/20150215/041805.htm ,与其让小朋友玩游戏,投入时间在电脑iPad前面耗费视力,不如让他自己编游戏自己玩。自己编的东西,再怎么幼稚,也会觉得好玩。至于学习编程是否未来他会变成屌丝程序员,还是操作Excel,还是写写PPT,这个就不像程序那么好控制了。

小朋友学编程,受制于智力,也确实学不到具体啥,说白了也是在玩而已。只是让他明白还有这么一个东西,可以自动化处理一些事情,学习一些分而治之解决问题的技能就可以了。

编程技术好是一种怎样的体验?

我也想知道。

有哪些软件适合小朋友编程学习并且很好玩一点都不枯燥的?

谢邀。

市面上的所有教小朋友编程学习的软件都是以寓教于乐为前提的,他们也知道要骗小朋友入坑还是得给他们一些甜头,所以好玩是一定的。大部分国际化(i18n)都做得非常好。

  • 乐高机器人,包括了可编程主机、电动马达、传感器、乐高科技部分(齿轮、轮轴、横梁、插销)组件,乐高机器人 http://baike.baidu.com/view/1590087.htm 、Mindstorms LEGO.com官网 http://www.lego.com/zh-cn/mindstorms 、Lego 科技系列入坑选购指南。乐高可以在平板电脑或者PC上编程操作乐高。
  • Cubetto,如何教 3 岁小孩学编程,不用电脑 http://tech2ipo.com/10020774 ,包括玩具反斗城的可控制方面的小火车等等,过于弱智。

  • 各种开发板,树莓派、DragonBoard。五岁儿童也玩开发板?看看Qualcomm专家对未来物联网的看法 http://www.csdn.net/article/a/2016-03-25/15836884 。这些开发板上一般也是跑Scratch。也就是你可以有一个开发板,加显示器鼠标,就可以有个专门给小朋友学习编程的PC。
  • https://code.org/ ,Code.org是个公益组织,微软、FB、Google投入经费参与,旨在美国推广计算机编程教育。面向从小到大的各类人群。有较完善的入门进阶视频资料。
  • http://www.apple.com/swift/playgrounds/ http://www.apple.com/swift/playgrounds/ ,苹果公司在秋季计划推出的在iPad学习编程的软件。
  • https://scratch.mit.edu/ ,社区很好,如果说Code.org更多是老师教那么Scratch会更注重学生们互相交流,学习。
  • http://snap.berkeley.edu/ http://snap.berkeley.edu/ ,Scratch的fork版,功能更多。

当我们谈编程思想时我们是在谈什么?

很多人都会提到编程思想,在这些人眼里,仿佛只要你会了编程思想,你就可以叱咤江湖什么语言都无所谓。而且他也会附带说你读个大学其实不是在读大学,而是什么什么什么,你吃口大便其实不是在吃大便而是在体验生活。然而确实如此,我现在写一个程序,语法都记不住的,一个循环的语法都是要面向搜索引擎编程,遇到一个问题,要面向StackOverflow编程。

对于啥是编程思想,我觉得更多的是各个编程语言的共性。你知道控制流程,常量变量,算法,你知道在某个语言这个事情这么做,如果换个语言你知道这个事情肯定应该也是这么做或者有更好的。

但是我想这个提法是不是有点落后了,因为以前确实语言很少,大家特性都差不多,然而现在。不同类型的编程思想Thinking in XXX还是很不同的。如果你编些小程序自己玩玩那无所谓,但是如果你的程序需要给别人来用,那不安全就不要出来丢人了。真正编程还是有一些门槛的。

儿童如何系统地学习编程?

题主提到系统这个词,说明至少已经有这个意识了,我看过一些父母,由于自己懂了某些方面的知识,就开始自己教小朋友。这个不叫系统的学习,你这样子教出来的我们会叫非科班、草根。或许会有一些奇才,但是你总是觉得他缺少了点什么。当然如果你本身是教练当我没说。

所以我的建议是,一定要按照教材学完全部的文档。

什么是Scratch?

Scratch IDE主界面包括一个舞台,舞台可以有背景,背景有多个造型。背景上有多个角色,每个角色也可以有多个造型,所有的图片都可以通过导入文件或者自己画图。自带的画图功能还算可以。由于支持图片导入,所以也可以拍照后导入。

对于角色,可以给角色赋值脚本,脚本由多个区块拼接起来,所有的区块截图如下,角色根据类型使用不同颜色区分:

角色脚本整个是基于事件的,比如当开始的时候执行某些动作,当接收到某个按键或者消息时执行一些动作。加上切换角色的多个造型,时间停顿的控制,就可以让角色活动起来。通过类似搭积木一样组合角色的区块完成编程。

也可以引入光线,声音传感器等等。

脚本区的每个区块都是可以直接运行的,也就是如果你点击“动作”的“移动10步”,角色立刻就会移动10步,有点类似所见即所得的编辑器。对于小朋友来说,通过点击某个动作,角色立刻响应,多巴胺分泌得到奖励,学习过程一点都不枯燥。脚本停止后角色不会归位,所以一般角色的位置等信息都是需要在脚本最开始初始化的。

所以整个编程流程就是,想好要编什么,把一些资源(背景图片,角色图片)传上来,或者可以现场立刻画图。然后对每个角色编写脚本,运行,调试。

Scratch官网有一些别的小朋友编程的例子。点进去进入设计页面就可以立刻修改,门槛非常低。Scratch 2 Offline Editor是离线版本,由于是基于Adobe AIR的,所以是跨平台的,也正是有离线版本,所以我才选择了Scratch。

建议小朋友如果中文版熟悉了以后可以在英文界面下编程,因为单词也没有几个。

Scratch有哪些优缺点,是否有比Scratch更好用的儿童编程软件

初步使用下来,感觉Scratch对于代码重用这块做得不够。目前没有类库的概念,或者包管理器,如果有的话,就可以重用别人或自己编过的一些代码,会很大减少工作量,扩展性也会更高。如果多个角色有相同的代码,也无法共享,只能独立为每个角色编写同样的代码。为何没有类似角色的过程,官方有个issue说到了这个问题。

所以也可以考虑fork版Snap,Snap基于HTML5,可以直接运行在任何浏览器内。Snap支持头等函数,在函数上实现了重用,可以写函数的函数,其他包括嵌套角色等等。具体新增功能

  • Build their own blocks via drag & drop
  • Host and join Mesh sessions, share sprites over the mesh
  • The “Elements” feature allows you to edit the underlying Smalltalk code in a Scratch-like environment.
  • Nestable sprites
  • True object oriented sprite hierarchy
  • Compiler (makes a project into an .exe/.app (application) file).
  • Scrolling enhancements
  • Undo (Scratch 1.4 only contains “Undelete”, which some 1.3 fans find useless)
  • Pause / resume the project
  • Debugger
  • Multi-dimensional lists (lists in lists, or arrays)
  • First class procedures (lambda) and full closures
  • Cloning
  • Atomicity control
  • Type checking
  • A tools sprite with many common procedures

有哪些 100 元以下,讲述儿童编程方面实用且贴心,看了之后相见恨晚甚至感动出泪的书?

如果是Scratch方面的,请搜索某东,关键字Scratch。

建议学习应当围绕以下几个类型的书:

  • Get started,入门,由于太简单了,这个可以不要。
  • Manual,一本说明书,最好是最土的,很多界面截图的,几分钟就可以看完的书。但是你还是必须保证每页都看过去。
  • Faq,常见问答。
  • Best practice,最佳实践,条条道路通罗马,但是总有一条是最优路径,保证你尽量少走弯路。
  • Cookbook,一本案例书,里面最好是一些实例编程,如果提供光盘或者素材下载更佳。看完说明书后你就可以根据案例来学习了,模仿是最好的老师。

有哪些是学习编程中很多人忽略但是掌握以后会受益终生的技巧

乌玛·瑟曼,a natural born killer

我跟刘家辉学功夫开始啥都没干就每天用拳头打打木头,这个技能点后来救了我一命。

李连杰,连续五年获得全国武术全能冠军

师父,我做和尚三个月了,天天不是挑水、砍柴,就在这儿蹬脚,

郑海山,为什么我这么啰嗦写了这么多

有。作为一个从高中开始编程到工作了十几年的人进来答题。

首先我很赞同其他高票人的答案,编程功夫在诗外,我把他称为程序员的自我修养

,我说的其实就是编码格式。包括变量大小写严格、自注释的变量名,函数名、代码的格式化、清晰的逻辑等等,这些不会影响你程序的运行,但是会增加你的代码的可读性。

应用到在Scratch里面就是:

  • 角色的代码编排。每个角色的代码块按一定的规则排列,比如初始化脚本可以放在最左边,并且单独一个Block。
  • 建立自定义Block并且调用。类似函数和过程。
  • 使用广播事件做IPC调用模拟函数。
  • 各个角色命名,尽量不采用默认的角色1角色2。
  • 类型有必要的话确定中心点。

初学编程的人一个最经常犯的毛病就是滥用拷贝黏贴,导致有很多重复代码。对于快速解决问题这不失为一个好的方法,但是考虑可读性和后期维护,应当重构代码。

所以也可以说是细节,细节细节。你可能经常听说,成大事者不拘小节,抓大放小,眼睛要看远一点啥的,这个有他的道理不反驳,但是建议在时间允许的情况下,多投入一些在细节。当然,从0%到80%和从99%到100%时间成本是不同的,这就需要自己去寻找一个平衡了。

职人介绍所·哪个星座更适合编程工作?为什么?

处女座,不解释。

你或者你周围的人编过最牛的一个程序是什么?

我儿子,在爸爸乱教下学习编程,以上是背景。

小朋友经常在外玩疯了不肯回家,有些策略是说给他们定时,比如告诉他再玩5分钟就回去。然而我家小朋友会说:“5分钟怎么这么快”,唱:“再给我两分钟”。对于这种无赖的行为,根据小朋友喜欢玩游戏和争强好胜的性格,他妈妈发明了一个新方法,在回家的路上一般铺着瓷砖,有很多的格子,我们3个人一人一列格子,根据锤子剪刀布比赛,谁赢了就前进一步,为了确保开开心心回家,会给他一个系数,比如他赢了走2步,这样子一步步傻傻骗回家。怎么又说傻傻的?以上还是背景。

有一天儿子叫我去调试一个程序,我看到舞台是一大片格子(是的,类似程序员的格子衫),然后有3个角色,数字5,2,0,分别代表布,剪刀,拳头,按个空格键就可以比大小走了。顿时有种时空错乱的感觉,就是类似这样子

哈哈哈哈哈哈太尴尬了啊,出续集了!刷爆朋友圈!最完整版呈上! http://mp.weixin.qq.com/s?__biz=MzAwNDc0OTczMA==&mid=2661491445&idx=1&sn=7052bff6b458eed07179ace8eeb78c9b&scene=1&srcid=0722BlS4brSgnSaegDQnDMsb#wechat_redirect

看完回来了?我突然觉得这个程序蛮神奇的。

其他资源

少年儿童编程,是确实必要还是情怀? http://mp.weixin.qq.com/s?__biz=MzAwNTYxMzk0Mw==&mid=400832044&idx=4&sn=da727b06ba4819e2f63315e5b3ccdbd7&scene=24&srcid=0805G7NaSdigq5nG0lbbxX4t#wechat_redirect