序 一

序  一

在cn.bing.com中输入“和孩子一起玩”,提示搜索次数最多的是游戏,其次是艺术、烹饪和玩具,9条结果之后仍然看不到编程,这似乎说明在今天,和孩子一起玩编程还是一个相对小众的事情。如果说外语是通向世界的桥梁,那么学习编程语言就为孩子打开了另一扇通向人机交互的大门。掌握外语,能够让语言不通的人毫无障碍地交流思想,能够让孩子通过对比和思考,了解不同的文化传统和社会运作机理。掌握编程,能够让人理解各种智能设备的运作原理,这些设备已经渗透到我们生活的方方面面。对这些一生下来就全面接触各种智能设备的孩子,掌握编程能够让他们更从容地理解数字时代的文化,而不是像他们的父辈一样焦虑,能够让他们在信息化、智能化的大趋势中不被抛在浪潮之后。

在身边的商场里,各种英语培训班如雨后春笋般冒出来,这说明孩子上英语培训班的比例逐步增高。大城市里孩子们的英语水平跟20年前相比,也确实不可同日而语。但我估计,国际化和全球化固然是大趋势,20年后的工作和生活中,需要和外国友人频繁互动的人数应该会远远小于需要和智能设备频繁互动的人数。因此,让孩子们学编程确有需要。

孩子如何学编程,其实也有讲究。可以从Scratch入门,它是一种可视化的编程语言,直观易懂,其中包含了各种程序的基本结构,又可以做出非常漂亮的图形,有助于孩子对编程形成初始的兴趣。在此之后,接触一门真正的实际编程语言也很有必要。Python语言的编程语法接近自然语言,具备丰富的库支持,写脚本简洁、明快,容易理解和上手,同时又是真正的工业级语言,具备相当的灵活性和跨平台一致性,作为快速开发的语言在谷歌等大公司也得到官方支持。我相信胡宏彪老师选择这门语言也是经过慎重考虑的。通过接触这样的实际编程语言,孩子更容易树立起对自己计算机编程能力的信心。

在孩子的教育中,父母的言传身教是不可或缺的重要环节。按照潜心研究人才成长规律多年的Benjamin S. Bloom教授的总结,在各种专业领域的学习中,都存在以下三个阶段:通过引导让孩子产生兴趣;不断练习建立信心;视孩子的技能发展阶段引入专业的教练,通过反馈和刻意练习持续提高水平。在兴趣—信心—专业指导这三阶段的发展过程中,父母对孩子的持续稳定的兴趣引导非常重要。因此,和孩子一起玩编程,共同探讨编程世界的奥秘,既有助于掌握孩子的兴趣变化和波动,适时引导鼓励,也有助于给孩子留下美好的回忆。对我自己而言,小时候由于父亲工作忙,很少有时间能够陪伴我,我就特别珍视父亲和我一起下象棋的美好瞬间。当然,父母如果之前不了解编程,从此书开始,也是一个很好的学习契机。

再多说一点编程和人工智能(Artificial Intelligence)的关系。经历20年的沉寂,最近几年人工智能领域也成为了社会关注的热点方向。无论是阿尔法狗打败世界第一高手,独孤求败,之后它又摒弃人类下棋经验,通过左右手互弈就远远超越了人的水准,还是无人车不断刷新无故障行驶的连续历程,再或是各种对话型的助理能和人聊得越来越长,无一不引起大众的广泛关注。

作为人工智能行业的从业者,个人认为目前距离实现强人工智能、人工智能替代人还需要很久,但是靠人与智能设备的互动来增强人的信息感知、处理和决策能力,即所谓增强智能(Intelligence Augmentation),已经触手可及。说到智能,无论是就人还是其他动物而言,智能的一个核心功能在于能够考虑场景和环境,在大脑中进行模拟推演。正是这种低成本的推演能力,能够在行动之前排除可能导致灾难性后果的行动选项,增强个体和群体对环境的适应能力。妄加揣测,这也可能就是智能不断演化的动力来源。

人要和智能设备进行高效互动,则要求人具备一定的计算思维(Computational Thinking),能够把自己当作一台设备,站在设备的角度去进行思考和逻辑推演。更具体地说,借助这个领域专家周以真教授的定义:“计算思维涉及运用计算机科学的基础概念去求解问题、设计系统和理解人类的行为。”更直观地说,计算思维能够通过归约、转化、仿真等方法,把看起来困难的问题转化为我们能够解决的问题的组合,通过抽象和分解,使复杂的任务和系统得以完成。千里之行,始于足下,计算思维的培养,也离不开对编程语言最基本的掌握。

希望此书的出版,能够帮助有缘的父母和孩子一起玩编程,在玩中学习,能够辅助培养孩子对深入理解计算机/智能设备的兴趣,为理解人工智能和增强智能打下基础。是为序。

王栋博士,美团点评高级技术总监

目录

  • 序 一
  • 序 二
  • 写给家长的话
  • 写给孩子的话
  • 1 先来三道小测试
  • 2 打倒一号纸老虎
  • 3 从手指到计算机
  • 4 来给数字起名字
  • 5 培养优秀服务员
  • 6 奥运宝宝算年龄
  • 7 发现循环的秘密
  • 8 敢和高斯比赛吗
  • 9 与循环讲条件
  • 10 程序里面走迷宫
  • 11 程序里面找套娃
  • 12 书山有路勤为径
  • 13 做道难题试一试
  • 14 自己也能设密码
  • 15 做到利人又利己
  • 16 程序里面设暗号
  • 17 使用函数做计算
  • 18 自己做一个模块
  • 19 模块拿来就能用
  • 20 程序里面摸大象
  • 21 打倒二号纸老虎
  • 22 让计算机画个圆
  • 23 轻轻吹气圆会动
  • 24 方块不动圆才动
  • 25 自己也能做动画
  • 26 听我指挥的动画
  • 27 用鼠标控制的动画
  • 28 有模有样的动画
  • 29 自己做个小游戏
  • 30 打倒三号纸老虎
  • 31 考试分数出来了
  • 32 修改考试分数表
  • 33 此处无表胜有表
  • 34 数据仓库小管家
  • 35 列表还有两兄弟
  • 36 了解函数的执行
  • 37 函数也能做参数
  • 38 银行账户要转账
  • 39 计算机的小魔法
  • 40 显示格式有讲究
  • 41 文件写入与读取
  • 42 了解变量作用域
  • 附录A 进制与编码
  • 附录B 变量
  • 附录C 变量的数据类型
  • 附录D 运算符
  • 附录E math模块
  • 附录F 文件相关概念
  • 附录G 英文速查表
  • 亲子游戏学编程(卡片)