译者序
编写计算机程序是未来最重要的生存技能。
计算机软件在我们的生活中扮演的角色越来越重要,然而编写程序的技术却越来越难以掌握了。大胆地假想一下:在未来,社会的阶层划分也许不再是分为权贵与平民、富人与穷人、无产阶级与资产阶级,而是分为懂技术的人和不懂技术的人。
现代人的生活越来越离不开网络、手机,还有无处不在各式各样的智能设备,就连很多简单的电灯里都有一个小小的电脑芯片。赋予这些计算机硬件以生命的就是人们设计的软件。软件让火星上的漫游机器人自主地去探索,软件让朋友们在社区网络上分享快乐,那些让你欲罢不能的电脑游戏也是软件。
软件在半个多世纪的时间里,在人类的各种活动中所占的比例越来越高。新兴的人类活动,如电脑游戏、社区网络等自然不用说。电话在刚刚发明时当中本没有任何的软件,而现在从你的手机到电信的网络,全部都是以软件为主体构成的。就算是在传统行业中软件的比重也越来越高了,不妨看看你周围的银行、快递、商场、书店等这些年来的变化就知道了。
然而使用软件呢?
同意现在的软件产品变得越来越容易使用的请举手!
我相信真的会举手的大多是孩子们。因为孩子们从来都喜欢新事物。绝大多数成年人都不会觉得作为电话来讲智能手机比从前容易用了。
那么制作软件呢?
我是在20世纪80年代,还在上小学的时候开始学习计算机编程的。那时的苹果电脑开机直接进入BASIC语言界面。那时的编程语言就是做事情的流水账,虽然连26个英文字母都认不准,可也能很快学会做好多事情,甚至没过多久就写出了自己的第一个电脑游戏。
而在翻译这本书的过程中我发现,现在的孩子要学习计算机编程要复杂得多。你起码要先从Windows,苹果OS X或者Linux(Ubuntu)中选择一个操作系统,学习如何使用它。然后,如果你要使用Python语言的话一般还要先下载和安装。这是因为Windows中默认没有安装Python,而苹果电脑和Linux上虽然有却不是最新版本。在每种操系统上安装的方式都不一样。装好了之后你还要知道如何打开、运行,然后还得选择一种编辑代码的工具。你在代码里创建了一个新的绘图窗口然后运行……“它在哪儿呢?”原来运行窗口藏在后面呢,你得用鼠标点它一下才能和它交互。“天啊!你不说我怎么知道!”代码也不再像是流水账那么简单了,模块、类、对象,还好原作者放过了异常处理和生成器。
现在你知道学习软件开发有多难了吧。然而你看到的只是冰山的一角,它只会变得越来越有挑战。这也是为什么学会写程序将会是一个很大的生存优势。
可是为什么在软件使得人们越来越强大,能做很多从前不能做的事情的同时,制作软件却变得越来越难了呢?
半个多世纪以来,人们不断地发明着新的工具和方法把设计计算机软件变得更方便,能力更强大。与此同时,这些便利与强大的副产品是总有一些细节被有意无意地暴露在外面。这样的细节越来越多,学习的成本就越来越高。这种情况很像现在人人都需要有个懂电脑的朋友。总有些技术细节无法避免,并且它们的作用会越来越大,那么掌握它们就是未来最重要的生存技能。
那么为什么要从Python学起呢?
Python的基础部分很简单,代码组织也很直观,是初学编程的好选择。另外它也是一门很流行并且很有前途的语言。不要小看它,Python并不是专门的教学语言,它非常地强大。
有的朋友可能要问:“都什么年代了,编写程序还要写文本,就不能用鼠标画一画点一点把程序生成出来么?”
编写程序在过去很多年一直是采用写程序文本的形式(很早以前是在纸带上打孔),恐怕将来很多年也将还是像Python这样写程序文本,似乎这是目前唯一一种能让程序员自由灵活地表达意图的方式。很多人尝试过很多其他方式。比方说画出概念图来让计算机自己生成程序,这些尝试都不太成功。还有一些“可视化编程”工具和语言,比方说有一种教小孩子编程的Scratch语言。可这些语言能做的事情都很有限。
可能你在想:未来计算机越来越智能,还需要人来写程序么?
计算机是人的工具,只有人才知道他自己想让计算机做什么。就算是未来计算机强大到可以有自己的意志,那么人类掌握软件能力以防被计算机统治不是更重要么?
我从上小学的时候开始在长春市少年宫学习计算机,二十多年过去了,做个程序员的理想没有再变过。为此我要感谢当年话剧团的韩老师,是她把我带入了少年宫(我刚去少年宫时是搞文艺的),也要感谢长春市少年宫给我童年(直到初二)带来的永生难忘的快乐和知识。作为一个来自普通家庭的孩子,我不知道有多幸运。前不久听说少年宫当年教孩子计算机的一位邱老师刚刚过逝。这虽然不是我自己写的书,但我希望把这本译作献给那些在20世纪80年代万物复苏时教给我们这些“70后”孩子课堂以外知识的教育工作者们。让我们把薪火传递下去。
尹哲