【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

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

评论

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

KusionStack 开源|Kusion 模型库和工具链的探索实践

SOFAStack

编程语言 开源项目 运维技术 自主研发 项目共建

后深度学习时代,推荐系统向何处去?

博文视点Broadview

【LeetCode】数位和相等数对的最大和Java题解

Albert

LeetCode 7月月更

解密方舟的高性能内存回收技术——HPP GC

HarmonyOS开发者

HarmonyOS

数仓之数据质量建设

五分钟学大数据

数据仓库 数据治理 数据质量 7月月更

图的基本定义和相关概念(一)

乔乔

7月月更

Web3 基础设施 NFTScan 浏览器对区块链行业的价值与意义

NFT Research

区块链 Web3.0

Spring系列一:Spring基础篇

叶秋学长

java零基础入门-java8新特性(下篇)

喵手

Java 7月月更

让你事半功倍的JS utils工具函数

南城FE

JavaScript 前端 工具库 7月月更

C++课程设计:图书管理系统【附源码】

攻城狮杰森

c++ 7月月更 课程设计 图书管理系统

RKE vs. RKE2:对比两种 Kubernetes 发行版

Rancher

Kubernetes k8s rancher

C# DataGridView数据导出Excel文件

IC00

C# 7月月更

小心!正则 test() 匹配的一个“坑”

掘金安东尼

正则 7月月更

亮点抢先看!2022 开放原子全球开源峰会定于 7 月 25-29 日在北京举办

kk-OSC

开源 开发原子全球开源峰会

Wallys/3×3/2×2 MIMO/ 802.11ac/ Mini PCIe /2,4GHz / 5GHz QCA 9880

wallys-wifi6

什么?多商户系统不适配 APP?这不就来了么!

CRMEB

LeetCode-100. 相同的树(java)

bug菌

Leet Code 7月月更

出自阿里P8的Java面试神册,涵盖30个技术栈扛住面试官的狂轰乱炸

程序知音

Java 面试 程序员面试 后端技术 Java八股文

视频分析StreamEye Studio

贾献华

7月月更

云原生(八) | Devops篇之深入Devops

Lansonli

云原生 7月月更

在 Excel 内使用 ODBC 消费 SAP ABAP CDS view

Jerry Wang

JDBC SAP abap ODBC 7月月更

用 emoji 学安全上网小常识?看 Google 新玩法

Geek_2d6073

短视频直播系统源码

开源直播系统源码

短视频源码 直播系统源码 开源源码

Unity3D和Android交互

沃德

程序员 Unity 7月月更

mysql进阶(十三)命令行导出导入数据库

No Silver Bullet

MySQL 数据库 数据导入 数据导出 7月月更

算力网络,AI先行,昇腾AI助力运营商数字化转型 ——携手聚力,共赢算力时代

科技热闻

在 Business Application Studio 里使用 SAP UI5 应用消费 OData 的 Create 和 Delete 操作

Jerry Wang

Cloud SAP Fiori SAP UI5 7月月更

Android 功能开发笔记

沃德

android 程序员 7月月更

被大厂强制毕业,两个月空窗期死背八股文,幸好上岸,不然房贷都还不上了

程序知音

Java 程序员 java面试 后端技术 八股文

Wallys/DR882/QCA9882/ AC/AN MiniPCIE/2×2.4GHz 2x5GHz MT7915 MT7975

wallys-wifi6

QCA9880 QCA9882 MT7915 MT7975 /

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