免费下载案例集|20+数字化领先企业人才培养实践经验 了解详情
写点什么

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

评论

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

Unleashing Next-Gen Connectivity: Introducing Wallys WiFi 7 Router Boards DR9574 and DR5332

wallyslilly

ipq9574 IPQ5332

观测云对接 Fluentd 采集业务日志最佳实践

观测云

Fluentd

阿里巴巴中国站1688商品详情API返回值分析:商品数据驱动的竞争对手分析

技术冰糖葫芦

API 安全 API 文档 API 开发 API 协议

前端开发-- Webpack 代码分割和懒加载技术

不在线第一只蜗牛

前端 Web webpack

卷不动了!去香港工作可以重启人生吗?

王中阳Go

Go 面试题

在 Go 中如何使用 go:embed 指令嵌入静态文件

江湖十年

Go golang 后端 golang 面试

利用财务团队的转型来推动企业业务成功

智达方通

企业管理 全面预算管理 财务管理

在线PDF转PPT软件!这2款AI工具值得推荐!

彭宏豪95

职场 PPT 办公软件 效率软件 AI生成PPT

蓝易云 - PHP用CURL发送Content-type为application/json的POST请求方法

百度搜索:蓝易云

php 云计算 运维 post

基于低代码思想的可视化开发平台:引领未来软件开发的新趋势

不在线第一只蜗牛

软件开发 低代码 可视化

一文读懂有关 LISTA、bitget 钱包的所有信息

股市老人

构筑自主可控大数据“底座”,赋能数字经济发展

EquatorCoco

大数据 信息技术

蓝易云 - 互联网发展跨境电商企业建站云服务器应用优势

百度搜索:蓝易云

云计算 运维 服务器 云服务器 高防服务器

解读MySQL 8.0数据字典缓存管理机制

华为云开发者联盟

MySQL 数据库 华为云 华为云开发者联盟 企业号2024年7月PK榜

企业数字化转型成刚需 协同管理行业步入黄金发展期

快乐非自愿限量之名

数字化 数字经济 企业转型 协同办公

田间地头“有智慧”,华为云助力盈禾嘉田打造病虫害防治新模式

华为云开发者联盟

人工智能 机器学习 华为云 华为云开发者联盟 企业号2024年7月PK榜

大模型落地,「city不city」?

白洞计划

AI

蓝易云 - ELK安装、部署、调试zookeeper安装,配置

百度搜索:蓝易云

Apache zookeeper Linux 运维 ELK

蓝易云 - ubuntu镜像更新时出现E: Problem executing scripts APT::Update::Post-Invoke错误

百度搜索:蓝易云

Linux ubuntu 运维 报错 云服务器

玩转生成式 AI ,抓住时代机遇

科技热闻

技术干货|数据科学助力制造业智能化变革

Altair RapidMiner

人工智能 机器学习 算法 数据分析 altair

企业全历史行为数据 让你对竞争对手的一切清清楚楚

客户在哪儿AI

ToB营销 ToB获客 ToB增长 大客户营销

一群追星星的人,对AI的盼与怕

脑极体

AI

TON钱包选择全面资产保护教程,bitget钱包

BlockChain先知

蓝易云 - Linux系统:CentOS 7 CA证书服务器部署

百度搜索:蓝易云

云计算 centos 运维 云服务器 CA

Spring MVC 中视图的实现原理,在Spring MVC 中实现重定向和转发,以及访问静态资源

EquatorCoco

Java mvc spring

如何实现一个分布式锁

不在线第一只蜗牛

分布式 WPF

如何基于 Elasticsearch 实现排序沉底或前置

字节跳动云原生计算

elasticsearch ES

谷歌DeepMind被曝抄袭开源成果,论文还中了顶流会议

Openlab_cosmoplat

人工智能 开源 ChatGPT

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