前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >儿童学编程的原因以及方法

儿童学编程的原因以及方法

作者头像
CSDN技术头条
发布于 2018-02-13 01:27:05
发布于 2018-02-13 01:27:05
2.6K0
举报
文章被收录于专栏:CSDN技术头条CSDN技术头条

译者注: 本文讲述了教儿童学习编程的原因以及方法,并介绍了多款针对不同年龄段、不同平台的应用程序。

无论你的孩子在长大后能否成为下一个扎克伯格,编程对他或者她来说都是一个非常有用的技能。它会帮助你的孩子提高解决问题的能力、创造力和沟通能力。同时,这对你来说也是一种乐趣。这里有一些经过检验的优秀的应用程序,可用来辅导任何年龄段的孩子学习编码。

没有比现在更合适的时候了

如果我们让孩子学习维修技术,那么很难想象等他们年龄大点的时候能开发出惊人的应用程序和工具。但最重要的是,当你向你的孩子介绍编程的时候,他/她不光光是在学习编程,而且还是在通过编程学习其他东西,麻省理工学院教授Mitchel Resnick这么写道。

我个人认为,我应当培养女儿编程的兴趣,就跟培养阅读或绘画的兴趣一样。在她7岁的时候,因为年龄太小,还不会用“If-then”语句,但她学习编程的动力未变:她想要做一个游戏或动画,但她甚至都不知道使用那些工具已经超出了她的能力范围。现在,一些优秀的应用程序激起了她的好奇心,并以探索和游戏的方式教她编程基础。这种学习方法再好不过了。

以下我将介绍了一些应用程序,有些是我们已经试用过的,有些是LifeHackers网站或者其他家长强烈推荐的。其中有很多是基于iPad的,因为触摸屏对于年幼的孩子来说更为直观。对于各个年龄段的学生来讲,都是有桌面和网络类的应用程序的。

为最年轻的学生准备的编程游戏

一款优秀的为小孩子设计的应用程序一般都会比较专注于图形和简单动画的表达方式,而不是专注于编程本身。虽然大多数这类寓教于乐的应用程序都是针对年龄在8岁及以上的孩子设计的,但如果你的孩子会阅读,能够理解因果关系,并且有动力去学习,那么你甚至可以将下面的这些游戏介绍给学前班的孩子。

Daisy the Dinosaur(恐龙黛西,iPad,免费):这是一款恐龙体育运动游戏,Elise在几年前自己发现了这个应用程序并安装了它。该应用程序指导孩子们通过循环、事件和其他方法(例如,在触摸的情况下,向前移动恐龙)来操纵一个角色:黛西。这是一个非常简单而又基本的程序,但简单性正是吸引低龄儿童的最大的优势。在这个应用程序中还有一个自由运动的版本,你可以让黛西在空中跳跃或者任意向后走。(但是,一旦孩子们知道了Toontastic这个儿童动画工具,那么恐龙黛西这个应用程序的吸引力马上就会消失。Toontastic教的不是编程,而是如何创作卡通故事)。

Move the Turtle(移动乌龟,iPhone/iPad,$3.99):与恐龙黛西类似,移动乌龟通过操纵一个图形对象进行闯关来教孩子们基本的编程概念。是的,就是一只可爱的小乌龟(就像60年代末到80年代的Logo语言中的海龟一样)。这个应用程序是由几个Lifehacker Twitter追随者推荐的,但Elise拒绝去尝试,因为这个游戏的概念与恐龙黛西相同,只能用乌龟去做某些事情,而她想用更多的角色做任何想要的事情。换句话说,基于单任务的教育应用程序已经满足不了她了。然而,通过移动乌龟这个游戏,孩子们可以学到大量的逻辑编程概念。

适合于各个年龄段初学者的图形工具

除了简单的单角色控制类应用程序之外,你还能找到一些通过拖放界面编程块来教孩子们学编程的应用程序。比如包含编程功能的乐高。在这些游戏中,你的孩子可以使用代码部件来控制多个对象(还能访问更多的命令、变量和事件)并创建动画或游戏。

Hopscotch(iPad,免费):出自恐龙黛西的制造商,Hopscotch是针对8-12岁儿童的可视化编程入门软件。孩子们可以选择预设的角色或自己创建文本对象,并通过拖放方块来控制它们。例如,你可以在X-Y轴上以指定的距离移动对象,改变对象的大小或重复动作。该应用程序为孩子的入门提供了一定数量的控件。他们做的很有限,但这意味着孩子们可以自己玩iPad,并了解每种基本方法的工作原理。(所以,当你的孩子问你“如何让猴子向后移动”时,你不必内疚地说“你自己想办法”)。Elise在一个星期内使用Hopscotch自己做了十八个动画,并用她喜欢的动画角色代替了文本块。这个应用程序里大多数的动画都是按照用户自己的想法来对对象的做简单的探索,但她还是学到了如何用数学和时间事件来放置对象。

Scratch(Web,免费):这是一个由麻省理工学院推出的专门为8至16岁的儿童设计的项目,Scratch已被世界各地的教育者和家长使用,以帮助孩子们通过拖放代码块的方式来开发动画、互动故事和游戏。这是我在几年前参加编程课程时介绍给女儿的第一个编程工具。我记得我对女儿说:“嗨,Elise,改一下这个代码块,我可以让这只狗像猫一样喵喵叫。”。从那以后,她就迷上了这个应用程序。

Scratch仍然是我们最喜欢的编程工具,主要是因为它提供了非常多的控件。它跟前面提到的Hopscotch类似,但是更强大;跟App Inventor也很像(下文会提到),但是用户界面更友好。在Scratch中,有一个超级大的对象库可以使用或定制。 (不要低估孩子对这个角色进行着色的重要性)。由于包含了大量的方法,你可以让他们做任何事情。 Elise想做一个名为“蜘蛛奔跑”的游戏(就跟神庙逃亡差不多,但改成了机械蜘蛛追赶你,并且地上有钉子,能让你减慢速度),而且到目前为止,我们讨论过的可以实现这个游戏唯一的工具就是Scratch。尽管不能把游戏转成手机移动程序,但你孩子的可以保存到网上,并在网上分享。

StencylWindows、Mac、Lunux;免费):Scratch是我们目前最喜爱的程序,但是自从在Thorin Klosowski上知道了Stencyl之后,我们就打算要用用这个试试。它向“Scratch”表示了敬意,但专门为创建游戏而设计,并可以发布到每个平台上(iOSAndroid,Flash,HTML5,Windows和Mac)。使用Stencyl创造了超过12,000个游戏,我迫不及待地想去尝试了。

其他建议:Google+上的Robert Hirsch还有一些其他的建议(基于iPad):

DynamicArt [$2.99]很像scratch,但更侧重于制作程序图纸。 Kodable [免费]是一款非常适合小孩子的应用程序,它通过让孩子编程来解决谜题。 还有一个类似的应用程序叫做A.L.E.X [免费],你可以控制机器人做一些动作。 Codea [$9.99],一个iPad上的Lua解释器,我不认为这个适合7岁的孩子。它包含了许多很酷的东西,但它是面向对象的,这可能对于一个孩子来说这个有点难,除非你碰巧知道Lua。

为年龄更大的儿童(或者心理年龄比较年轻的成人)准备的更强大的编程工具

以下介绍的应用程序更为先进,侧重于编码本身,并通过可视化的界面来展示其工作原理。

App Inventor(Web,免费):以前是Google的一个项目,现在由MIT托管。App Inventor像Scratch一样,可以拖放代码块。然而,它包括了用来创建Android应用程序所需的所有方法、功能和其他编程元素。在使用App Inventor开发后,你最终会得到一个真正的Android应用程序。

这款在线工具真的非常强大,但是界面对年幼的孩子来说并不友好。对于至少初中以上(或大人)的孩子来说,这可能是最好的,没有指引,而且功能的使用并不直观。

Alice(Windows,Mac,Linux; 免费):这款Carnegie Melon开发的运行在Windows、Mac和Linux平台上的桌面应用程序使用了独特的3D编程环境来教孩子编程基础。它比其他针对小孩的编程工具更先进,对于年龄较大的孩子来说也是如此。它有一个受欢迎的功能:孩子们可以在软件中看到项目背后的代码。有一个不受欢迎的地方:你需要Java Runtime才能运行Alice。

来自Pluralsight的视频课程(Web,免费):在线培训网站Pluralsight为孩子们提供了三个视频课程,教他们如何在Visual Basic、Scratch、App Inventor中用C#进行编程。如果你孩子的年龄足够大,可以坐着看完视频教程,那么这些视频可以为他们的动手训练做补充。

CodecademyKhan Academy(Web,免费):这些互动的在线工具更适合于年龄较大的孩子(可能是中年级及以上)和大人。但是,它们是学习代码的最佳方式之一,因为你可以在分屏中看到内容更改后的效果。Codecademy包含了Web方面的基础知识,jQuery、JavaScript、Python、Ruby、PHP等。Khan Academy的编程环境使用的是JavaScript。

关于教孩子编程,我们学到了什么

我们在使用上面这些应用程序时充满了欢乐,但我认为,这是因为我们不是以“让我们学习编程”的心态来看待这些程序,而是以“嘿,想要做某事吗,我们可以用这个程序来实现”的心态来看待。Sarah Mei在她的Ruby to Kids演讲中谈到,当你准备要开始冒险的时候,你应该设定一个具体的目标,例如,“我想让莉莉在她自己探索的时候感到开心”。对于我们来说,学习编程并不是最终结果,而是为了实现某个目标。

所以,一直以来,我已经学会了作为一个家长保持沉默。最难的地方是要避免徘徊在孩子的肩膀之上,并阻止自己说“不,使用这个功能,不是那个”。相反,我现在正在学习她在用的那个应用程序,所以我可以说,“嘿,看看这是做什么”或者“如果我们这样做会发生什么”。现在,我们是在这里一起探索编程。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-05-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CSDN技术头条 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java调用Golang生成的动态库(dll,so)
如果提示命令未找到,那么说明你的计算机中还没有gcc,去安装一个吧,gcc官方网站:https://gcc.gnu.org/ 如果从来没有安装过gcc的朋友可以直接安装win-build,可以帮你快速的安装 官方网站:http://mingw-w64.org/doku.php/download/win-builds
李海彬
2019/05/08
5.3K0
使用jna调用c语言动态库对接华视电子身份证阅读机
一些C语言的接口见上一篇文章 同样把用到的动态库放到jdk的bin目录文件夹下 Termb.java
周杰伦本人
2022/10/25
6370
使用jna调用c语言动态库对接华视电子身份证阅读机
Java跨语言调用,使用JNA访问Java外部接口
先说JNI(Java Native Interface)吧,有过不同语言间通信经历的一般都知道,它允许Java代码和其他语言(尤其C/C++)写的代码进行交互,只要遵守调用约定即可。首先看下JNI调用C/C++的过程,注意写程序时自下而上,调用时自上而下。
朝雨忆轻尘
2019/06/18
4.6K0
c#封装动态库_nginx调用so动态库
一直对动态库的封装理解不是很透彻,虽然之前写过一个Demo,不过并没有真正的理解。所以写下来,帮助自己理解下。
全栈程序员站长
2022/11/14
2.9K0
c#封装动态库_nginx调用so动态库
【Android NDK 开发】Android.mk 配置动态库 ( Android Studio 配置动态库 | 动态库加载版本限制 | 本章仅做参考推荐使用 CMake 配置动态库 )
Android Studio 中使用 Android.mk 配置第三方 动态库 :
韩曙亮
2023/03/27
3.7K0
【Android NDK 开发】Android.mk 配置动态库 ( Android Studio 配置动态库 | 动态库加载版本限制 | 本章仅做参考推荐使用 CMake 配置动态库 )
java高级用法之:调用本地方法的利器JNA
JAVA是可以调用本地方法的,官方提供的调用方式叫做JNI,全称叫做java native interface。要想使用JNI,我们需要在JAVA代码中定义native方法,然后通过javah命令创建C语言的头文件,接着使用C或者C++语言来实现这个头文件中的方法,编译源代码,最后将编译后的文件引入到JAVA的classpath中,运行即可。
程序那些事
2022/03/28
1.9K0
Java调用so文件[通俗易懂]
公司的硬件让我帮忙调用一个so文件,想着一直都没机会自己写一个jni,于是就答应了,在调用的过程中还踩了不少坑,特地写一篇博客记录一下。
全栈程序员站长
2022/11/04
9.8K0
Java调用so文件[通俗易懂]
【错误记录】Android Studio 导入外部 so 动态库报错 ( java.lang.UnsatisfiedLinkError | 指定 APK 打包动态库的 CPU 架构 )
外部引用 so 动态库 , 如果只有一个 armeabi-v7a 的动态库 , 那么如果在 arm64 的手机上执行 , 就会报如下出错误 ;
韩曙亮
2023/03/29
7340
【错误记录】Android Studio 导入外部 so 动态库报错 ( java.lang.UnsatisfiedLinkError | 指定 APK 打包动态库的 CPU 架构 )
Linux下跨语言调用C++实践
总第504篇 2022年 第021篇 不同的开发语言适合不同的领域,例如Python适合做数据分析,C++适合做系统的底层开发,假如它们需要用到相同功能的基础组件,组件使用多种语言分别开发的话,不仅增加了开发和维护成本,而且不能确保多种语言间在处理效果上是一致的。本文以美团搜索实际场景下的案例,讲述在Linux系统下跨语言调用的实践,即开发一次C++语言的组件,其他语言通过跨语言调用技术调用C++组件。 1 背景介绍 2 方案概述 3 实现详情 3.1 功能代码 3.2 打包发布 3.3 业务使用 3.4
美团技术团队
2022/04/24
6.2K0
Linux下跨语言调用C++实践
LoadLibrary加载动态库失败
1.1 文件路径的确错误。比如:本来欲加载的是A文件夹下的动态库a.dll,但是经过仔细排查原因,发现a.dll动态库竟然被拷贝到B文件夹下去了。
全栈程序员站长
2022/07/18
2.9K0
jnaerator:java调用动态库的神器,JNA代码自动生成工具
版权声明:本文为博主原创文章,转载请注明源地址。 https://blog.csdn.net/10km/article/details/79252303
10km
2019/05/25
4.5K0
Java调用C/C++ 动态库dll操作串口实例
大家好,今天分享的是使用C/C++编写一个读取串口数据的代码,然后将其编译成Windows下的动态链接库(.dll文件),然后写一个简单的java demo来调用C/C++接口。
飞哥
2021/08/06
1.5K0
【Android NDK 开发】Android.mk 配置静态库 ( Android Studio 配置静态库 | 配置动态库与静态库区别 | 动态库与静态库打包对比 )
Android Studio 中使用 Android.mk 配置第三方 静态库 :
韩曙亮
2023/03/27
4.5K0
【Android NDK 开发】Android.mk 配置静态库 ( Android Studio 配置静态库 | 配置动态库与静态库区别 | 动态库与静态库打包对比 )
python调用dll动态库
python调用动态库有两种类型,主要看dll的导出函数的调用约定:__stdll和__cdecl
py3study
2020/01/08
2.5K0
【Android NDK 开发】Android Studio 使用 CMake 导入动态库 ( 构建脚本路径配置 | 指定动态库查找路径 | 链接动态库 )
参考博客 : 【Android NDK 开发】Android Studio 使用 CMake 导入静态库 ( CMake 简介 | 构建脚本路径配置 | 引入静态库 | 指定静态库路径 | 链接动态库 )
韩曙亮
2023/03/27
9.7K0
【Android NDK 开发】Android Studio 使用 CMake 导入动态库 ( 构建脚本路径配置 | 指定动态库查找路径 | 链接动态库 )
Android so 加载原理分析
http://gityuan.com/2017/03/26/load_library/
望天
2020/01/02
8.2K0
Android So动态加载 优雅实现与原理分析
开源地址: https://github.com/AnyMarvel/ManPinAPP
Anymarvel
2020/06/12
6.2K0
Android So动态加载 优雅实现与原理分析
java调用c++的几种方式
jna是jni的封装,可以直接写c++代码(导入java的c头文件),再通过java调用,jna没有jni效率高。
sofu456
2022/09/27
6290
Windows平台LoadLibrary加载动态库搜索路径的问题
在给Adobe Premiere/After Effects等后期制作软件开发第三方插件的时候,我们总希望插件依赖的动态库能够脱离插件的位置,单独存储到另外一个地方。这样一方面可以与其他程序共享这些动态库,还能保证插件安装时非常的清爽。就Adobe Premiere Pro/After Effects来说,插件文件是放到C:\Program Files\Adobe\Common\Plug-ins\7.0\MediaCore(Windows平台)的。这个是PremierePro和AfterEffects的公共插件目录,二者在启动的时候都会尝试去这个位置加载插件。与此同时,我们希望自己开发的插件所依赖的动态库放到另外的位置,另外也希望插件显示链接的动态库能够尽量少。因为如果是显式链接的话,这些插件依赖的动态库必须和插件保存在同一个位置。不然插件找不到这些依赖文件就会加载失败的。当然,我们也可以在环境变量里面增加一条路径,但是这容易污染环境变量,或者与其他的程序库产生冲突。LoadLibrary在这个时候就产生作用了。LoadLibrary通过将指定路径的动态库加载到当前的调用进程,然后获取其导出的函数就可以正常使用了。对于像第三方插件这样的应用场景,LoadLibrary可以说是个不错的实现方式。但是正因此也有个弊端,我们无法使用工具得知其的依赖库。
24K纯开源
2019/11/23
4.9K1
【错误记录】NDK 导入外部 so 动态库报错 ( java.lang.UnsatisfiedLinkError | Android Studio 配置外部 so 动态库两种方法 )
外部引用 so 动态库 , 拷贝到 jniLibs , 尽量 4 架构都设置完全 ;
韩曙亮
2023/03/29
1.1K1
【错误记录】NDK 导入外部 so 动态库报错 ( java.lang.UnsatisfiedLinkError | Android Studio 配置外部 so 动态库两种方法 )
推荐阅读
Java调用Golang生成的动态库(dll,so)
5.3K0
使用jna调用c语言动态库对接华视电子身份证阅读机
6370
Java跨语言调用,使用JNA访问Java外部接口
4.6K0
c#封装动态库_nginx调用so动态库
2.9K0
【Android NDK 开发】Android.mk 配置动态库 ( Android Studio 配置动态库 | 动态库加载版本限制 | 本章仅做参考推荐使用 CMake 配置动态库 )
3.7K0
java高级用法之:调用本地方法的利器JNA
1.9K0
Java调用so文件[通俗易懂]
9.8K0
【错误记录】Android Studio 导入外部 so 动态库报错 ( java.lang.UnsatisfiedLinkError | 指定 APK 打包动态库的 CPU 架构 )
7340
Linux下跨语言调用C++实践
6.2K0
LoadLibrary加载动态库失败
2.9K0
jnaerator:java调用动态库的神器,JNA代码自动生成工具
4.5K0
Java调用C/C++ 动态库dll操作串口实例
1.5K0
【Android NDK 开发】Android.mk 配置静态库 ( Android Studio 配置静态库 | 配置动态库与静态库区别 | 动态库与静态库打包对比 )
4.5K0
python调用dll动态库
2.5K0
【Android NDK 开发】Android Studio 使用 CMake 导入动态库 ( 构建脚本路径配置 | 指定动态库查找路径 | 链接动态库 )
9.7K0
Android so 加载原理分析
8.2K0
Android So动态加载 优雅实现与原理分析
6.2K0
java调用c++的几种方式
6290
Windows平台LoadLibrary加载动态库搜索路径的问题
4.9K1
【错误记录】NDK 导入外部 so 动态库报错 ( java.lang.UnsatisfiedLinkError | Android Studio 配置外部 so 动态库两种方法 )
1.1K1
相关推荐
Java调用Golang生成的动态库(dll,so)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档