为什么我 11 岁的儿子说要放弃编程,却又转战 Python?
2016 年 12 月,我写了一篇关于教 10 岁的儿子编程经历的文章[1]。一年半之后,他的编程之旅仍在继续,且伴随着许多起伏和曲折的剧情。
“学习编程”不应该感觉像一份工作。我从不强迫孩子编程。我是一名有工作的家长,没兴趣管理一家编程学校。对于尽情玩耍、读书、学校的作业,或有时什么也不做(孩子嘛,偶尔什么也不做也是可以的)来说,学习编程永远是次要的。
学习编程需要一种内在的动力,否则就无法坚持下去。这个过程中,我的角色已经发展成了管理、教导和鼓励。
回到 Python
2016 年 12 月,数据科学是科技媒体中的热门话题,而且作为 Web 开发我想扩展一下自己的知识,于是加入了一个专门学习数据科学、R、Python 的网站。我浏览了一些课程,和我的儿子聊起了这点。
“还记得 Python 吗?”我问他。
“记得一点,”他脸上带着多疑的表情回答道。
“你知道世界各地的统计学家,甚至 Google(我不得不提到 Google)的数据和统计科学家都在用 Python 吗?而且你不需要再敲括号和分号。你想试试看吗?”我问道。
“不学 JavaScript 了?”他问道。
“暂时不学了。”我回答说。
“好的。”他答应了。
于是,我儿子从 2017 年 8 月开始参加了 Python 数据科学入门的课程,并取得了很大进展(主要是在周末学习几个小时)。一个月后,他完成了第一门课程。在课程结束时,我儿子已经掌握了 Python 的语法、列表、函数、包和 NumPy。
再攀高峰
随后,儿子继续开始学习中级 Python 数据科学,但是在 10 月的时候中断了,他很少登录学习,并最终放弃了。
我只好介入了……
“课程怎么样了?你遇到什么困难了吗?“我问道。
“我很喜欢,但我真的不知道如何使用。”
儿子如是说。
编程的上下文环境
我们俩进行了很长一段谈话,但是主要内容是“怎样(How)”。我经常注意到孩子学编程的一个问题是:缺乏上下文环境。
学习编程结构和算法没问题,但是孩子无法领会抽象概念,除非与他们现实世界的某些东西相关联。所以,我儿子真正的问题是:“这对我有什么用?Python 怎样才能赋予我超级力量?”
寻找新的机遇
我需要一些可以激起儿子好奇心的东西。一种可以让他回到编程之旅的方法。
人工智能和机器学习在 2017 年主导了科技媒体,我跟儿子分享了许多那一年的有趣的新闻。他对大部分并不感兴趣(孩子们似乎不喜欢读邮件),但是根据与学校的来回讨论,以下是一些他觉得有意思的故事:
人工智能通过观看别人玩游戏,学会了重建超级玛丽兄弟[2]
人工智能演讲生成器可以假冒任何人的声音[3]
新型人工智能可以写出跟人类作曲家一样好的音乐[4]
日本的人工智能写了一部短篇小说,差一点获得了文学大奖[5]
发现问题了吗?
所有上述故事都是机器学习代码完成人类工作的例子。它们赋予了我们超级力量!
“如果你能写一个程序来帮助你做作业,所有那些阅读摘要和日记,怎么样?”我说。
“真的吗?怎么做?”儿子的脸上闪着亮光。
“你可以用 Python 学习人工智能和机器学习。”
一个重要的里程碑
我儿子真的很喜欢统计。2017 年 9 月他完成了网站提供的描述性统计课程,并开始了推理统计学课程。
这是一个重要的时刻。这是第一次,他独自闯入了一个超出我的水平的学科领域。我在大学里只上过一门统计学的课程,而且那都是很多年前的事儿了。我无法再立即回答他的问题,它必须自己寻求答案。这一刻,我这个编程老师的角色彻底淡出了。
正如我所料,儿子与这些课程爱得痴缠,他很努力的学习,比我预期的还要努力。2018 年 1 月,他完成了推理统计课大约三分之二的课程。然后,他心满意足地暂停休息了一下,一直到 2018 年 4 月。
一个新的机会
2018 年 4 月,我看到了新一期的用 Python 进行人工智能编程的微型学位课程。此时距离我儿子编程已经有几个月了,这个课程对他来说是一个很好的回顾 Python(NumPy、Pandas、Matplotlib)概念的方式,课程还需要一些额外的机器学习的知识的条件(线性代数和神经网络)。而且想到可以拿到结业证书的时候,我儿子也非常积极,于是我们那天就注册学习该课程了。
接受现实
但是,因为课程和实验非常严格,儿子很快就落后于推荐的完成期限了。因为原则上每周需要花费 10 小时才能按时完成课程,所以我并不感到惊讶,但我不想遏制儿子的热情。由于学习量非常大,儿子一整学年每周都需要花费 2-4 小时学习。
图:儿子在学习的用 Python 进行人工智能编程的微型学位课程中使用 Jupyter notebook
现实的期望
对于那些刚开始向孩子介绍编程的父母,请将其视为附加的课外活动。编程不应优先于其他活动,如学校作业、自由玩耍或安安静静做小朋友。编程有点抽象,而且并不总是那么有趣,但从长远看来非常有益。
就个人而言,我儿子愿意学习编程让我感觉很自豪。我并没有期望他会很快就会成为超级明星程序员。我希望他能够建立新的心理模型,帮助他从不同角度来处理将来的问题。
我们这代人大多是在命令式编程的世界里长大的,解决问题时需要按顺序定义每个步骤。孩子的世界是不同的。无处不在的人工智能和机器学习能够让计算机根据适当的数据和算法定义这些步骤。希望我儿子能为此做好准备。
前方的路
对于那些感兴趣的人,我计划在大约六个月内再发表一篇文章,总结我儿子的最新进展和问题。谁知道呢,也许届时他已经转战其他新东西了……如今的孩子们啊。
我还计划写一写教我的小女儿写代码(6 岁和 9 岁)的经历。我的大女儿目前在玩 Scratch,是 Scratch 年轻一代中最小的一个。
本文参考资源:
[1]https://hackernoon.com/how-my-10-year-old-learned-javascript-d8782b586db7
[2]https://www.theverge.com/2017/9/10/16276528/ai-video-games-game-engine
[3]https://gizmodo.com/this-artificially-intelligent-speech-generator-can-fake-1794839913
[4]https://futurism.com/a-new-ai-can-write-music-as-well-as-a-human-composer/
[5]https://www.digitaltrends.com/cool-tech/japanese-ai-writes-novel-passes-first-round-nationanl-literary-prize/
原文:
https://hackernoon.com/why-my-11-year-old-stopped-coding-then-started-again-ccc259f2f1a5
作者:Rich Klein,Web 开发,作家。兴趣包括全栈 Web 开发、Laravel、JavaScript、Vue.js 和机器学习。
译者:弯月,审校:沭七
热 文 推 荐
☞ 12 岁开始自学 Web 开发,他竟说初学者别搭理大牛?!
☞ 零编程基础的 15 岁少年,仅用 9 个月开发了 9 款 App?!