美文网首页技匠志I_LifeJAVA
如果要为孩子写一本编程书

如果要为孩子写一本编程书

作者: 技匠 | 来源:发表于2016-11-02 07:21 被阅读3831次

    最近我开始考虑明年的一些个人计划,我并不会强迫自己去完成一些目标,而只是将自己在未来一段时间内感兴趣的事情罗列出来,然后挑一些去进行尝试。而其中的一项便是写一本书。我和一些出版社的编辑都曾讨论过关于出书的事情,唯独对于书的选题让我颇为纠结。我并不愿意去写一本纯技术的书籍,虽然这看起来相对容易也更安全(有市场)——基本上选一个热门领域或技术,然后参考其他同类书籍,结合自己编写的示例和相关经验进行重写,但这对于我来说却有点像炒冷饭,并没有太大的意义。我知道如果缺乏动力,自己很难写好这本书,甚至根本就无法完成。而如果让我按照内心的意愿去选择的话,我更愿意尝试去为孩子们写一本编程书。

    我的儿子今年六岁,在区里的一所示范幼儿园读大班,除了上学之外,他还报名参加了思维训练的培训班。虽然每天都在按照要求在完成课程和作业,但看得出,他学得并不快乐。之所以要这么做,也无非是为了想让孩子上一个更好的小学。我同事的孩子今年三年级了,和很多同龄孩子一样,也参加了奥数班,虽然对她的孩子并不了解,但我却总能看到我的那位同事埋头坐在那里,绞尽脑汁地解那些奥数题。我就想,如果这些题目连我们这些大人解起来都如此费劲,那它们对孩子们的成长又是否真的那么有帮助呢?有没有一种更好的方式来训练孩子的思维呢并帮助他们更好应对未来呢?如果能抛开所有功利的应试需求,我想学习编程或许会是一个不错的选择。

    虽然有了方向,但要想教好、教会孩子编程却并不简单,我们有必要透过针对孩子们的编程教育现状,来看看那些普遍存在的问题:

    • 过时的教材:很多学校还在使用那些过时的编程教材,比如,他们仍在教孩子们学习Pascal语言(一种过时的编程语言),而这是我将近20年前学习编程所时使用的语言。有人说,教编程的真正目的是教会孩子一种新的思维方式,与使用哪一门编程语言无关。对于前半句,我很赞同,但关于编程语言,我却觉得,如果能教孩子那些在未来更能派上用场的编程语言,并且让他们从一开始就能习惯使用这些更现代的编程语言,我们又为什么不这么做呢?
    • 不恰当的教学方式:那些给孩子上编程课的大部分都是在校老师。老师当然有他们的优势,比如更了解孩子,也能更好地驾驭教学。但老师们大多并没有太多的编程经验,他们也更多地像是在教数学、物理那样将一门编程语言的语法、语义、算法等硬生生地灌输给孩子,而作为考核标准的也大多是那些毫无生趣的算法题,这恰恰忽略了编程最重要的趣味性以及创造和思维能力的培养。结果是,孩子们如完成家庭作业般去完成那些编程题,一点也无法体会到编程所带来的的乐趣,这也直接摧毁了孩子们学习的热情,学习编程竟成了孩子们的又一个负担。
    • 赶时髦般的培训班:随着编程教学越来越受到家长的重视,很多社会上针对儿童的编程培训机构也都冒了出来,当然是鱼龙混杂,良莠不齐。我们姑且不论那些培训班的资质以及老师的教学能力,就拿他们广泛使用的编程语言Scratch来说,也只是像这些年很火的乐高培训一样,一些根本不懂编程的老师经过短期培训,便去教孩子了,能教会孩子什么,真的很难说。编程是一项深入的思维运动,需要长期实践才能逐渐掌握,而像今天那些家长那样,不根据自己孩子的情况,赶时髦般地将他们赶去学习编程,并不会得到理想的效果。
    • 美学教育的缺失:我认识很多程序员,他们都不是编程的初学者,但往往阻碍他们写出优秀程序、作出更优秀产品的却并不是大多数人理解编程所需要的逻辑思维能力,反而是对于美的认知。既然不知道什么是美的,那作出来的东西又怎么会美呢?这并不单纯指我们平时听到的那些UI(用户界面)、UX(用户体验)等设计概念和技巧,更在于对美的本质的感知和觉察能力。而这种能力本应该在儿童时期就开始培养,但遗憾的是国内对于美学教育的缺失非常严重。编程教学作为一项制作与创造课程,本是可以将那些关于美的知识和实践融入其中的,但大多数的教材和老师并没有那样做。

    通过一本书来解决上面这些问题看似天方夜谭,但却值得去尝试一番,即使作为对现有编程教学大环境的一点小小补充,也会让我觉得颇有意义。

    一本给所有编程初学者的入门书

    与动辄几百元一节的幼儿编程课不同,我始终认为,教授孩子编程的最佳方式应该是家长与孩子一起学习编程,大人的理解能力加上孩子的想象和创造能力,这简直是一个完美的学习组合,而在家长的陪伴下持续地学习和实践远比每周上一节编程课来的有效。我可能并不会在这本书里加入过多适合低龄儿童的插图,而是希望包含尽可能多的内容,以编程为主,并涉及从艺术、设计、编程、思维、作品发布等各个环节,让孩子们通过学习能够真正作出有意义的作品来。在我看来,这本书应该适合所有有意愿陪孩子一起学编程的家长以及那些希望自学编程的初学者来读。

    教手艺,而不是知识

    教授知识与教授手艺的最大区别在于其目的性,对孩子们来说,学知识往往是被动的,真正应用如化学、物理等知识常常需要进入大学相关专业之后,而在中小学期间,孩子们学习过程中得到的激励往往来自于比较,如考试成绩,家长的表扬,或老师提问时比其他同学更早算出答案。但比较往往会带来压力,也仅仅对那些优秀学生更有效。而学手艺却是为了去不断作出更好的作品,你是在和过去的自己比较,而只要持续地学习和实践,你就一定能获得正面的激励,因为随着技能的提升,你做出来的东西总是会比过去更好,它对所有学习者都是有效的。我想写的这本书里当然会包含某一门编程语言的语法、语义等基本知识,但并不会包含那些复杂的数据结构或算法,只有在用到的时候我们才会用最简明的方式加以介绍,一切都会围绕获得更好的手艺并作出更优秀的作品去写。

    一门现代且面向未来的语言

    对于孩子和那些编程初学者来说,这或许是他们的第一门编程语言。这门语言既应该是易学的,又应该是现代且面向未来的

    • 易学:考虑到不同年龄段孩子的接受能力,这门编程语言应该是简明、一致、清晰的。这体现在语言的语法、数据结构、控制逻辑、可供使用组件、甚至包括IDE(集成开发环境)以及教学资源和等各个方面。它应该是易学、且更易构建出丰富应用的。
    • 现代的:编程语言的种类非常多,有些语言的年龄比我们都大,而几乎每一门语言背后都会有一个长长的故事,至于为什么发明这门编程语言,它的主要用途是什么,它又有什么特点,这些问题往往要花上一整天才能讲清。今天,很多新语言在不断出现,比如Swift、R、Go,也有很多语言则已逐渐被淘汰,比如VB、Pascal。一门现代语言意味着它具有那些经过长期实践被证明是优秀的语言特性,另外它也正在得到广泛的应用。
    • 面向未来的:面向未来的编程语言应该是开放的(比如:开源),这意味着它能借助更多程序员的力量获得持续的发展,并得到更多人的使用和认可。另外,一门编程语言的基因也能决定它的未来,比如:面向过程、面向对象、声明式编程、函数式编程等等,正是它们决定了一门编程语言的特性、编程思想、适用场景以及未来的发展方向。举例来说,虽然,现在仍有很多iOS应用是用Object C来开发的,但当我们理解Swift将会成为“第一款工业级质量的系统编程语言!”这个断言,以及认识到Swift的那些优秀语言特性后,我们就应该意识到对于iOS开发者来说不去追求Swift是非常愚蠢的。

    基于这些考虑,我比对了自己心目中那些可以用来教学的编程语言,决定在Python或Swift中选择一门语言,来完成这本书。

    利用所有优秀的资源

    很多编程书籍中都会包含自带的代码、示例、工具等等,看起来这样的书非常完整,但我却发现这些附带的资源往往并不好用,或没有什么价值。现在网上有太多优秀的学习资源,只是很多人不知道,或者不善于使用罢了。而我希望这本书能够更加开放,如果网上已经有了更优秀的内容,那我就没有必要再去重复,而只需要帮助大家去发现和更有效地使用它们。例如,假设我这本书最终使用Swift语言进行教学,那我一定会告诉你利用iPad上Palyground这款APP进行学习,当然我会在书中告诉大家如何更有效地使用它,这会大大提高我们的学习效率。

    兼顾艺术、设计与创造

    光有编程,我们并无法得到那些吸引人的东西,人们特别是孩子都是视觉动物,如果做出来的东西不漂亮,那他们很容易会感到失望而对学习失去兴趣。我希望这本书能对编程教学做一些延伸和扩展,比如在那些示例中引导孩子正确地理解和运用色彩、合理地进行排版使内容更加清晰,巧妙使用动效让作品更加生动有趣等等,通过这些,让孩子们在学习编程的同时,掌握最基本的设计知识,并启发他们对于对于美的认知。

    关于书的形式

    关于书的形式,我希望会有不同的版本,我可能会做一个网站来呈现这本书,包括那些教学视频、示例代码、并且展示那些孩子们通过学习制作出来的作品。我也希望有纸质书和电子书的版本,以满足不同读者的需求。


    上面的这些观点只是我此时此刻所能想到的,而更多的东西只有在实践中才能获得。好在我已经有了自己的学生,我的儿子Ian。我会不断在这个专题中更新我教学的内容、进展、孩子学习的反馈,并接受大家的意见。如果你对教孩子编程这件事也有自己的想法,不妨留言,这将能帮助我更好地完成这个挑战。

    相关文章

      网友评论

      • 第一生产力:我觉得应该选IDE极简单、语言极简洁就、功能极强大的语言,国产的”简码编程网站”就很不错。
      • ankyliu:赶紧搞,不然孩子都长大了
      • 695143b642fc:不了解swift.个人偏向js语言,关键是能做出图形界面,这应该是孩子喜欢的,易于接受的
      • 封涯:js会不会更好些!?
      • 88e849d04b56:想法不错,很期待
      • 峂峂:首先很喜欢你的想法,自己也有想过,但是我觉得这个小孩子看时间长了可能会烦,swift只适用于ios 以及Macos 还有服务端,python大多数用于开发网站和深度学习,有局限性,并且难度较大,我觉得第一门语言还是用js比较好,随着水平的提高可以做后台,网页,android iOS还有单片机的开发,这个很重要,孩子比较喜欢玩具嘛,也更有兴趣去学:smile:
      • 迷失的夜:喜欢你的观点
      • 16debf510a5f:国内编程人员越来越多,周围结婚了的程序猿类们基本都有‘编程从娃娃开始抓起’的概念和想法。但是苦于方法,作为一名猿类,基本时间精力上不是很多可以完成。而且要结合小孩的乐趣,才能学得下去,生搬硬套反倒会引起单纯完成任务的反感
      • aafcec81a6f1:有个〖编程一小时〗活动,推广编程运动。

        可以借鉴下,进行本土化,加入些天朝元素…
      • 34c343e7515f:非常期待这本书,加油:smile:
      • f429fe19796b:好好的一个童年,为什么非得被一堆教材环绕?不悲观么?而且子非鱼,安之鱼之乐?
        0eedcf8f3e82: @殺手兔00 赞成
      • 锦添2016:期待早日看到这本书,到时和我的孩子一起学习学习。最重要的是思维的学习。超级认同!
      • 8f1ad77e889c:支持,出书求@
      • 米斯特YANG:非常期待能有这么本书!必须支持!
      • 颜小婧:果断收藏
      • 许问渠:很棒的想法,其实成年初学者也可以这样开始学编程。
      • 五谷观精分道长:说的好,我选择python或者更简单的语言
        五谷观精分道长: @itfanr但是用它写计算器是最简单的
        itfanr:@五谷观精分道长 Python其实不简单
      • 13a0abc24bc6:这个想法很不错!模式也适合
      • medisol:虽然过时了,但不是应该叫Pascal嘛。。。
        medisol:@技匠 :relaxed: 初中的时候学过,印象比较深
        技匠:@Kukoaaron 谢谢提醒
      • c2b915dcf7e9:过几年小宝宝长大了,我也打算教他编程,学习了
      • 玩牛牛:支持,我也一直想做一个这样的网站,目前也在考虑是 Python 或者 Scratch,Swift 不太了解,不过看到在 iPad 上的Playground 应用,觉得应该也蛮有优势的。现在的儿童编程教育太单一,基本就是推箱子游戏,我觉得无论是交互手段,还是教育内容,都有比较大的缺失,期待楼主的更新
      • itfanr:支持博主的想法,不知道博主现在在哪里?我们可以交流。
      • itfanr:点击链接加入群【编程从娃娃抓起】:http://jq.qq.com/?_wv=1027&k=415S16l 群号码:392736886
      • sjcandy:期待更新
      • 顾宇:Rails Girls的发起人Linda写了一个绘本,叫Hello Ruby,可以借鉴下。Swift所见即所玩,比如孩子未来会搞一个毕业同学录,可以搞个电子版的。相较于Python趣味性更大一些。相关的编程游戏swift也比较多。
        技匠:@顾宇 谢谢建议
      • CodingTech:Python比较适合,swift不太了解。个人认为缺一种支持社交和物联网交互的语言,现在的语言对小孩来讲,还是太技术
      • Binboy_:虽然我还年轻,暂时还没孩子,但我对少儿编程教育一直非常感兴趣。一方面因为本身是 iOS 开发者,二一方面看好 Swift 的简洁优雅与未来感,以及苹果对普及这门语言的重视,最近也正着手打算写一本 Swift 的少儿编程书,算是与作者不谋而合。如果有机会,希望能一起做这么件有意义的事情:yum:
        wely:完全可以尝试一下的
        技匠:@王兴彬_Binboy 可以一起尝试 :smiley:
      • 张隐蔽:没有地址吗

      本文标题:如果要为孩子写一本编程书

      本文链接:https://www.haomeiwen.com/subject/lbytuttx.html