【AICon】探索八个行业创新案例,教你在教育、金融、医疗、法律等领域实践大模型技术! >>> 了解详情
写点什么

作者访谈:Programming for Kids

  • 2014-04-11
  • 本文字数:3514 字

    阅读完需:约 12 分钟

Peter Armstrong 专门为那些想学编程的孩子写了这本书。 Programming for Kids 一书中含有大量 Ruby 编写的、适合 9-14 岁孩子学习编程基础的实例。书中还向孩子们展示了如何在 Mac 上使用命令行。父母可以坐在孩子身边一起学习。

InfoQ 就孩子学习计算机编程和培养编程技巧的不同方法,以及用 Leanpub 自助出版电子书等问题采访了这本书的作者 Peter Armstrong。

InfoQ: 是什么让你决定为孩子写一本编程书?

Peter:我想教儿子。他是重度玩家,7岁时决定要学编程。那个时候我试着教他,但他准备得不怎么样。他用过 Scratch,想深入了解 Lego Mindstorms,但还没有准备好坐在电脑前思考并录入——像程序员那样的编程模式。所以,我在等。9 岁的时候,他又求我教他,我觉得他可能准备好了。就给他买了很多评价相当不错的编程书,但这些书让他充满挫败感。如果是青少年,这些书会很合用,9 岁的话,要求还是过高了。原理要描述得更浅显,例子也要更短些,诸如此类。所以,如果儿子确实想读这样一本合适的书。我会为他写的。我为专业程序员写过很多编程书,但我从未给孩子写过书。不过,因为这些年一直在为儿子解惑,我觉得自己可以试试。圣诞时有些空暇时间,就写了这本书。儿子学完了整本书,并且大胆地提出了自己感到困惑的地方!

InfoQ: 哪一年龄阶段的孩子可以开始学编程?这本书面向的又是哪一年龄段?

Peter: 我觉得 9 或 10 岁的孩子就可以开始学编程。有些情况下 8 岁也行。这本书面向 9 到 14 岁的孩子。对更大些的孩子也适用——有个同事半开玩笑地说,他们应该向地方高校非计算机专业的一年级新生推荐这本书——但最适合的读者应该是 9 到 14 岁的孩子。对于更大的孩子,有更多选择。

InfoQ: 书中有很多编程练习。你为什么选择练习这种编程教学方式?

Peter:起初,这本书只有一些我为儿子所写的模仿示例。没有任何练习。但 Yves Hanoulle 在着手翻译丹麦版的时候,在邮件中强烈建议我试试练习。我这样做时,发现我所认为儿子理解了的东西实际上并没有达到预想的层次。所以,我重新组织了结构并将练习作为这本书的关注重点。书有 185 页,其中 30 页是练习答案!有了这些练习,才能真正知道你是否理解了。

InfoQ: 为什么选 Ruby 做编程语言?

Peter:主要是因为 Ruby 简单。JavaScript 或 CoffeeScript 也可以选,但那样的话,要么需要和浏览器及 DOM 交互,要么需要安装 Node.js。我决定选一门符合以下条件的语言:(1) 孩子的 Mac 上已经装好了;(2) 交互执行 (REPL) 并且 (3) 简单。基本上只剩下 Ruby 和 Python 可选,而相比 Python,我更擅长 Ruby。比如,Leanpub 本身就是用 Ruby on Rails 搭建的。

InfoQ: 对象在 Ruby 中相当核心,为什么你却只字未提?

Peter:这本书的目标是向孩子介绍编程基础,而不是特定的编程范式。既不是面向对象编程,也不是函数式编程,更不是 Ruby 编程。只是编程。书中我没有完全隐藏 Ruby 的特征(例如,我用了块),但我希望这本书主要关注通用概念,比如循环,迭代,条件语句等。此外,我想让书变得有趣,这也是为什么我大量使用了 say 命令(包括反引号)等等。

InfoQ:书里是纯粹介绍编码,还是也教孩子们测试?

Peter:只关注编码。书里有随机测试(ad hoc testing),但没有单元或集成测试。这本书是在教孩子编程基础,而不是软件工程。这也有助于发挥我自己的优势:也许我是公司里最糟糕的自动化测试人员,同时可以说是最好的随机测试人员。

InfoQ: 现阶段绝大多数软件开发都在团队中进行。书里有没有合作练习,也就是孩子们能一起做练习的地方?教师能将这本书用在课堂上和学生团队中么?

Peter: 这本书是为独立完成阅读和学习的孩子所写的。孩子们也可以一起读书做练习。我认为 Yves 的孩子们是在一起做练习,因为他在做丹麦语翻译。对于教师和课堂:当然没问题!孩子们可以在计算机课上用这本书,一个人或团队。本书没有 DRM(数字版权保护),而价格也能被整个课堂或学校接受。

InfoQ:要是父母也想学编程怎么办?他们能和孩子一起读这本书么?

Peter:那是当然!我鼓励父母坐在孩子身边一起学习——特别是在孩子用父母笔记本的时候。我希望父母能和孩子们一起学习。对我而言,编程是一种新知识。

**InfoQ:这本书正被译为丹麦文、**法文和西班牙文。进展如何?

Peter:非常棒!反响出人意料,尤其是丹麦版本译者 Yves Hanoulle。他大着胆子在我写了很少一部分的时候(近 5 章)就开始翻译这本书。不过,某种程度上这并不是真的风险,因为他只想用来教儿子。现在,对我而言很有意思的一件事是,写作时同步翻译让我更多关注如何完成一章。我尊重 Yves 不想浪费他的时间,所以不想让他因为我的重写而耗费精力。我让他比我的进度晚几章,直到我确定书的大方向。那种情况下,一旦完成,我会让他立刻翻译儿子验证过的章节。只有通过了测试,我才会考虑下面要写的章节。我认为如果不做任何修改,每章都难以通过儿子的检验。

InfoQ: 由于书在 Leanpub 发布,以后我们能看到新版本么?

Peter:会的!现在这一版本已经完成。一旦被翻译为多种语言、获得广泛认同,我就会试着更新。也许我会开发出一个系列。例如,我没有教 web、对象、函数式编程等等。但随着本书的发展,我慢慢发现了最佳篇幅。绝大多数儿童读物不可能有 500 页!所以我还是挺高兴包括练习题答案只有 143 页的。读完这本书,做完所有练习,就是一件巨大的成就。对 9 岁的孩子而言,尤其如此!所以,我更希望在读完 143 页后获得这种巨大的成就感,而不是 200 或 300 页后一些小孩因放弃而一无所获。

InfoQ:如果孩子想当好的软件开发者,除却编程,还要学些什么技巧?

Peter:很多。首要的一点是交流。无论是说还是写,你要能清楚准确的交流。另一方面,你要能在讨论时聆听并快速思考,以便了解真正的需求,重要和不重要的各是什么。你要有自信,不要因为害羞而错过争论。创业之前我当了十多年的程序员,现在我是名创业公司创始人,相当于产品拥有者。我在职业中真正所学的技能之一就是辨别什么是真正的需求,什么不是。如果你能避免解决那些难而非必要的问题,就太好了!

InfoQ:要是孩子读完这本书后想学更多编程方面的知识,能做什么?

Peter: 还有很多为年龄更大的孩子所准备的书,理论上这应该是下一步。也有很多像这样的网站,现在就很好,并且还在快速提升。

InfoQ: 你写过很多编程练习方面的书籍,Flexible Rails 和 Hello! Flex 4(《Flex 4 一学就会》)。这和为孩子们写书有什么不同?

Peter:首先,背景知识。孩子们不光不知道终端是什么,他们还不知道文本文件是什么或是控制键和命令键的位置。所以,这些都要解释。书的开头,我甚至附了一张键盘图,用箭头标示出某些键,由于儿子毕竟只是个玩家,没有用过一些必要的键。类似的,每次你用像反引号 (`) 或是脱字号 (^),需要在键盘上标注所在的位置以及如何输入。这很难。为专业程序员写书时,主要的挑战在于让书有趣,而我不需要解释如何运行 Spotlight 或终端。另一方面,看到儿子喜欢按书学习很让我欣慰——一旦我说有完成的章节需要验证,他就放下视频游戏,抓过笔记本。除了享受读书的乐趣外,他还很认真!我还记得他带我去修改某处稍显迷惑的地方时,说,“这就是为何你要有测试人员。如果这被出版,是不是会有一场灾难?”他的完美主义像我。

InfoQ: 作为 Leanpub 的联合创始人,这是你在 Leanpub 上的第二本书。你从这本书的写作中学到了什么有关 Leanpub 产品的事情么?

Peter:是的!我们的翻译和共同执笔者工作流需要一定的改进!现在他们用 Dropbox,还好,但当有多个版本的时候(比如,原版书籍),译者会不知道究竟改了哪些,基于 Git 的工作流会更稳妥一些。这也适用于共同创作的情况,如果多个作者需要编辑同一份文件。所以,2014 年我们要做些改变。另一件事是一名翻译所提的,通过一次点击从原本中获取所有设置和登陆页面文本。这非常有意义,还未实现这点让我很吃惊。站在用户角度使用 Leanpub 很赞:一些事看去微不足道,但实际上对作者而言很重要。只有真正经历过问题,才会感同身受!

可以从 Leanpub 下载一份 programming for kids 试读本。

作者简介

Peter Armstrong Leanpub Dashcube 的联合创始人,是 4 本书的作者: Lean Publishing Flexible Rails_、_Hello! _Flex 4_ 以及 Programming for Kids 。有超过十年的软件开发经验,其中 8 年在硅谷初创企业。Peter 是精益发布和创业的资深演讲者。可以通过 peter@leanpub.com 与他联系。

查看原文链接: Author Q&A on Programming for Kids


感谢崔康对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-04-11 23:412313

评论

发布
暂无评论
发现更多内容

结构化流-Structured Streaming(八-上)

数据与智能

spark 查询引擎 结构化思维

ARTS之释义

清风明月

一文读懂区块链技术如何改变非洲贸易(上)

CECBC

我们都是那条流浪的小黄狗|靠谱点评

无量靠谱

澳鹏看点 | 厉害了,3D点云语义分割

澳鹏Appen

人工智能 自动驾驶 语义分割 数据标注 3D点云

河南平安,附最全自救锦囊

石云升

7月日更 郑州加油

基于机器学习的语音编解码器声网Agora Silver:支持超低码率下的高音质语音互动

声网

RTE 技术详解 音频体验 AI Codec

好未来 x StarRocks:全新实时数仓实践,深入释放实时数据价值

StarRocks

数据库 flink 实时数仓 好未来 StarRocks

腾讯、网易纷纷出手,火到出圈的元宇宙到底是个啥?

行者AI

游戏

聊聊 Web Workers 吧

Faye

JavaScript 大前端

想聊天?自己搭建个聊天机器人吧!

百度大脑

人工智能 聊天 飞桨

没有你,对我很重要|靠谱点评

无量靠谱

为什么BAT的程序员能月薪 20k ,而你一个月只能拿 6K 的低保?差别就在这!

白亦杨

Java 编程 程序员

有图,有代码,好理解,学习内存管理,mmap机制

奔着腾讯去

Linux 内存管理 Mmap 内存映射

手写归并排序算法

实力程序员

程序员 C语言 排序算法 实力 编程实战

为什么开发人员都不愿写 API 文档?

狐哥说技术

Postman Apifox 接口文档 接口管理

【堡垒机】堡垒机到底有用不?国内哪家堡垒机好用?

行云管家

云计算 数据安全 堡垒机

大型企业采购云管理平台的诉求分析-行云管家

行云管家

云计算 云安全 云管平台 云资源

光子是深度学习的未来!光子有望替代电子计算机加速神经网络计算

百度开发者中心

深度学习 最佳实践 方法论

Pravega Flink connector 的过去、现在和未来

阿里云大数据AI技术

质量基础建设一站式服务平台搭建

注意:线程的执行顺序与你想象的可能不一样!

冰河

Java 程序员 并发编程 多线程 异步编程

gitlab ee 14.1稳定版安装教程

阿呆

gitlab

《小马哥java项目实战》训练营培训小结

夏日

免费分享Redis从入门到精通的优秀图书

Java入门到架构

Java 书籍

声网Agora 教育 aPaaS 灵动课堂升级:UI与业务逻辑分离,界面、功能自定义更灵活

声网

在线教育 网络

ZooKeeper 分布式锁 Curator 源码 02:可重入锁重复加锁和锁释放

程序员小航

源码 分布式锁 zookeeper分布式锁 curator

什么是共识?(生活篇)

趣链科技

盘点Java线程池配置的常见误区,你中了几个?

北游学Java

Java 多线程

论区块链技术如何赋能社交代币并打造创作者经济新局面

CECBC

优秀!百度技术官甩出SpringBoot全栈小册,GitHub星标92.5k

Java 编程 程序员

作者访谈:Programming for Kids_研发效能_Ben Linders_InfoQ精选文章