引言:软件和编程艺术的兴起(4)
作为一个专业,编程是艺术、科学和工程的奇妙结合。软件开发仍然是一项异常艰苦、循序渐进的工作,它更像是手工艺,而不是机器魔法,它是一种以软件为中介的创造形式。正如厨师烹饪食物,画家创作油画一样,程序员编写代码。不过编程仍是一种实践性很强的艺术形式,热爱它的人们都会为程序有效运行的魅力以及创造事物的渴望所深深吸引。
还是个孩子的时候,葛丽丝·霍普就会拆装闹钟;Unix操作系统的创始人肯·汤普森,在后院制作了火箭;电子表格软件的合作开发者丹·布里克林,用希斯套件(Heathkit)组装了家用电视机;Java编程语言的发明者詹姆斯·高斯林,在他祖父位于加拿大卡尔加里市的院子里,改装了旧农机。对那些天生迷恋编程的人来说,创造事物似乎能带来真正的快感,软件尤其能带给他们这种体验,因为它是没有实体约束的中间体。程序员不用钢筋、玻璃和混凝土,就能够建造模拟的城市;不用铝、喷气发动机和轮胎,就能够制造模拟的飞机;不用光、热和水,就能够模拟天气。程序员可以用计算机把想法变成现实,至少是视觉上的真实感,并在自己创造的虚拟世界中对其进行测试。
计算机编程的大部分历史可看成是努力扩大其使用范围的过程,即让更多的人能够更容易地编程。FORTRAN是第一个真正意义上的编程语言,旨在使科研人员和工程技术人员轻松自如地编程。COBOL则是为了让商务人士能随心所欲地进行编程。经过多年的发展,编程已经不像原来那么繁重困难了。不过,理想的情况是让每个人都能编程。早在20世纪60年代,就有人提出这种愿景,但至今仍未实现,虽然编程已取得了长足的进步。现在,几乎每个人都会使用计算机,数万甚至数百万人都能够完成诸如制作网页或者在电子表格中创建财务模型所需要的基本编程。
然而,更重要也更值得一提的是,迄今为止,大部分编程仍然局限于精英阶层。目前,人们已针对熟练的程序员开展了研究。研究表明,他们在智力上的确具备某种特质。他们属于那种对工作之外的事情同样怀有浓厚兴趣的人。例如,对科幻小说感兴趣的程序员会特别关注一两个作者,对音乐、休闲活动或者其他方面感兴趣的程序员也是如此。这种较高的智商和高度的专注正是编程所需要的。心理学领域的研究人员在研究心流时曾观察过软件程序员。“心流”状态指的是,注意力高度集中,全身心投入,心智水平达到最高。这种身心合一的境界就如同运动员进入“状态”。
不过,这类研究只能表明如何才能成为天才程序员以及哪些人具备这样的潜质。“某些人确实非常适合做程序员,他们比其他具有同等教育水平和同等智商的人在这一方面好很多倍,”莱斯大学的计算机科学教授肯·肯尼迪这样说道,“现在我们还不能真正理解这种现象。”[16]这进一步表明,编程不仅是一门科学,还是一门艺术。
斯坦福大学的荣誉教授高德纳终生都在教授学生掌握这项技能。计算机科学能够成为一门学科,高德纳功不可没。他以编写软件方面的权威著作《计算机程序设计艺术》而闻名于世。他从1962年开始动笔撰写,目前已出版了三卷。他的家在斯坦福大学后面的山丘上,二楼的书房里摆着一排排的书。高德纳在书房里说道:“确实有少部分大学生——大概2%左右——具备异于常人的心智,擅长计算机编程。他们精于此道,智慧如同泉涌……只有这些人才能让计算机做到令人惊叹的事情。我希望这不是真的,但是事实就是如此。”
本书讲述的就是这些具有特殊心智的极少数人的故事,他们能够利用代码创造出神奇的世界。本书只是代表性地——绝非结论性地——对计算机编程历史进行回顾,主要讲述那些著名人物的生平事迹以及他们开发的软件。