HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

作者访谈: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:412422

评论

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

基于Amazon ECS Fargate构建Apache Superset

亚马逊云科技 (Amazon Web Services)

存储

Go编译原理系列5(抽象语法树构建)

书旅

Go 后端 编译原理 编译语言

低代码实现探索(十九)低代码的意义

零道云-混合式低代码平台

大画 Spark :: 网络(2)-下篇-通过网络收取消息的过程

dclar

大数据 spark 源代码 Spark 源码

低代码实现探索(十八)流程中参数的初始化设计

零道云-混合式低代码平台

面向未来,我们来聊一聊什么是现代化数据架构

亚马逊云科技 (Amazon Web Services)

存储

Web3.0时代的保险业,真的可以实现去中心化吗?

CECBC

简讯:明道云近期荣获的三项荣誉

明道云

ReactNative进阶(十七):RefreshControl 组件实现刷新效果

No Silver Bullet

1月月更 ReactNative RefreshControl

Salesforce架构师的10大原则

俞凡

架构 大厂实践 Salesforce

LabVIEW OCR 实现车牌识别(实战篇—3)

不脱发的程序猿

OCR 机器视觉 图像处理 LabVIEW 车牌识别

如何保证消息消费时的幂等性?

JavaEdge

1月月更

小白都能吃透 Java IOl 流,最骚最全笔记,没有之一!2️⃣

XiaoLin_Java

【SpringCloud技术专题】「Gateway网关系列」微服务网关服务的Gateway全流程开发实践指南(2.2.X)

洛神灬殇

SpringCloud SpringCloud Gateway API Gateway 1月月更

王者荣耀商城异地多活架构设计

ren

模块九作业:设计电商秒杀系统

危险游戏

架构实战营

虚拟数字人发展提速 多家银行宣布“造人”

CECBC

记一次安全漏洞分析

网络安全学海

黑客 网络安全 信息安全 渗透测试 安全漏洞

2021年行摄回忆录

穿过生命散发芬芳

盘点2021 1月月更

偷偷看了同事的代码找到了优雅代码的秘密

慕枫技术笔记

后端 1月月更

区块链技术支撑元宇宙经济系统的有序运转

CECBC

没有区块链,就没有元宇宙

CECBC

火狐浏览器一败涂地?

Jackpop

LabVIEW色彩定位实现药品包装质量检测(实战篇—4)

不脱发的程序猿

机器视觉 图像处理 LabVIEW 色彩定位 药品包装质量检测

云原生训练营毕业总结

9527

三行代码下载抖音视频

你?

加速数字经济发展,2022更需要云上创新的稳定器与推动力

脑极体

Go 语言快速入门指南:Go 转 JSON

宇宙之一粟

Go JSON序列化 1月月更

Apache Atlas 数据血缘

亚马逊云科技 (Amazon Web Services)

存储

架构实战营 - 毕业设计

随风King

「架构实战营」

Weblogic-SSRF漏洞复现

喀拉峻

网络安全 安全 信息安全

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