描述
开 本: 16开纸 张: 纯质纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302461333
本书深受普利策获奖作品的启发,是一部难得的跨界佳作,娓娓道来的写实风格,可以帮助我们每一个人纵览计算机与软件发展史,横向整合关联行业全景,洞察蕴藏于其中的价值与商机。
本书引人入胜,读起来让人难以释卷,是一本见微知著,令人醍醐灌顶的通史,适合软件工程、信息技术、计算机、大数据等专业人员阅读和参考,是一本可以帮助他们实现科技创新与创业的重要指南。
在软件主宰世界的当下,软件行业发展迅猛,成为*让人关注的领域。从史前的计算需求,从1930年到2019年,作者从大历史观的角度追古鉴今,从大趋势,典型企业,赢家和输家,新技术,生产力/质量问题,方法,工具,语言,风险等角度,勾勒出波澜壮阔的软件工程发展史,检视软件工程发展史上的重要发明,把脉软件行业并指出企业、职业兴衰的底层原因,同时还对一些优秀的软件企业商业模式有所涉猎。
本书引人入胜,读起来让人娓娓难以释卷,是一本见微知著、令人醍醐灌顶的通史,非常适合软件工程和信息技术相关专业的学生、从业人员与有志于科技创新创业的人阅读和参考。
沃克·罗伊斯推荐序
IBM首席软件经济师Walker Royce
在过去的几十年里,软件行业一直在高速发展。很少有人停下脚步去反思软件行业的基石和突破性进展,搞清楚它们是如何使软件成为世界上有统治力的产品的。
现在我们的世界已经离不开软件。软件普遍存在于各种人工制品中,几乎人人都在用软件。软件这种无形的东西,在我们的手机、汽车、小工具、银行、医院中都有应用,一度被看作是不可思议的。现在软件理所当然地被认为是必不可少的服务或特性,成为我们生活的一部分。难道你不诧异这一切是如何发展演变的吗?软件从何而来?为什么要构建软件?如果你很想知道软件这一神奇技术的演变史,完全可以看看这本书提供的权威软件编年史,从中一睹为快。如果你的职业依赖于软件(现在很少有人完全不用软件吧),你会发现这本书无异于一堂有价值、有教育和启发意义的历史课。这本书也包含性能的量化基准,别的文献中可是找不到这些内容的。
当我还是一名年轻的工程师时,我通过卡珀斯·琼斯(Capers Jones)先生的软件度量的书籍和论文认识了他。卡珀斯·琼斯先生是软件经济学领域的思想领袖之一,他大胆公布了软件项目方面的事实和数字,推动了对挑战和机遇进行量化的工作。到现在,他至少出版了12本书。20世纪90年代,当我在写本书时,卡珀斯是审稿的人选之一。那时候,我们在一定程度上是竞争对手,他给我的审稿意见……呃……这么说吧,真的很犀利。然而,他的评审意见却是迄今为止有价值、有见地和建设性的。他就是知道怎么写作。由于他为不同行业软件的质量和效率写过大量的资料和数据,所以他坚定的信念是非常可靠的。他给我上过一堂很重要的课:软件世界充满着不确定性,谁能掌握好的数据,谁就有话语权。他的评论有效地把我引到一个更好的方向,从此,我们一直频繁地交换意见,相互交流,阐述针锋相对的立场,保持着极好的私人关系。
在大多数软件组织中,对进度、质量和商业趋势的度量与预测,更像是政客们剽窃的统计数据,而不是工程师和科学家实事求是的表述。这个说法太苛刻了?才不呢!政客有一个当之无愧的声誉和类似于软件行业的记录,那就是他们永远也无法兑现自己对预测和提高生产力所做出的承诺。软件市场到处都是愤世嫉俗的客户,因为他们在提高软件生产率的过程中,饱受夸张和自我陶醉的困扰,不管是从内部员工,还是从外部供应商,无一例外。软件交付工作有着很高的不确定性和复杂性。
通过更好地测量,可以降低不确定性,以此来增加消费者、供应商和开发商之间的信任。卡珀斯·琼斯几十年的度量工作,为我们今天所信任的软件行业做出了巨大的贡献。他是一个伟大的作者,是软件历史的权威。他是软件起步阶段到发展的亲身参与者。这本书把他的研究、知识和大量深刻的见解综合成一堂历史课,每一个软件工作者都能从中找到有用之处,每一个软件的用户都能从中得到启发。他的文笔流畅明快,引人入胜。让我们一边享受,一边聊一聊软件发展史的那些事儿吧。
托尼·萨尔瓦奇奥推荐序
CAI公司CEO兼董事长Tony
Salvaggio
上个80年代早期,CAI公司创立之初,我们曾宣布公司的使命是努力成为软件工程领域、软件开发生产力领域、应用程序支持生产力领域的思想领袖。我们CAI公司的每个创始人都有一个强大的信念,只要坚持以正确的方式方法重复做事,就能为我们未来的客户释放巨大的商业价值。尽管我们的一些团队对软件工程以及大型项目的设计和开发有着丰富的经验,但我们同时也明白,仅仅拥有这些经验就宣称我们是思想领袖是不够的。
牛顿有一则众所周知的关于科学家如何“站在巨人的肩膀上”的名言。牛顿说他所有的科学发现和科技进步(特别是他个人的历史性突破)都建立在前人的辛勤工作和远见之上。在CAI公司,我们的团队成员和助理都稳稳地站立在卡珀斯·琼斯先生的肩膀上。在CAI公司30年的历史进程中,甚至在计算机的整个历史长河中,卡珀斯都是软件工程界渊博、产的发现者。他至少写过18本书,主题涉及所有信息技术管理范围,每本书都给工程师和管理者揭示了新的见解。我曾经手里挥舞着卡珀斯厚厚的黄皮书原著,发表过无数次产品生产力和过程改进的管理层报告。
毫无疑问,卡珀斯收集了软件工程方方面面的数据,并且完成了科学的数据分析。可以说,他所忘记的东西,比一般的高级软件工作者学到手的都要多得多,甚至这种说法也有些过于轻描淡写。在他的新书里,卡珀斯为我们软件行业,也是为现在每一位同仁和以后的IT专业人士提供了另一项宝贵的服务,那就是次用文字的形式把信息技术这段漫长而精彩的历史记录下来了。
IT行业,在上个世纪60年代和70年代时还鲜为人知,而现在我的人生中已经经历了这么多戏剧性的变化。我看到软件行业引领企业重组的革命,见证了软件如何彻底改变地球上几十亿人的生活。无论我们是否研究,历史都会重演。从这个意义上讲,卡珀斯的新书是每个软件工程学生和IT从业者的书。尽管我们屡屡创新成功,但IT行业却始终没有人曾经勤勉地钻研过以往的教训,这些历史教训的记录率先是在卡珀斯初的黄皮书里出现的。
在过去的30年里,卡珀斯已经成为我有价值的朋友,我的一天通常都是在和他的邮件开始的,在邮件中我们讨论质量管理,删除早期缺陷,避免项目失败。在这30年中,他清晰而富有洞察力的话语一直萦绕在我耳边,指导着我们CAI公司的业务工作。我极力推荐卡珀斯的新书,包括他以前的很多著作,他的这些书有收藏价值。
前 言
我出生于第二次世界大战之前,刚好在计算机纪元的黎明到来之前。从儿时起,我就记得自己读过一些介绍集成电路的书刊,记得晶体管的发明,我还记得电视的诞生以及后来的彩色电视。
我当年进入佛罗里达大学时,学校里还没有电脑,没有计算机科学课程,更不要说软件工程了。事实上,工科生仍然在使用计算尺,当时还有一个激烈的辩论是考试时能否使用新型的电子计算器。
那个时候,没有个人电脑,没有个人音乐播放器,没有社交网络,只有兄弟联谊会或者姐妹联谊会,当然更没有智能手机。没有嵌入式软件应用,也没有人工电子耳蜗这种嵌入式医疗设备,所有这些东西都是后来才出现的。
年纪稍长的读者经历了整个计算史和软件行业的起步阶段。发明创造突飞猛进,相关公司如雨后春笋般先后涌现和合并,我们生活在一个技术进步日新月异的黄金时代。
这是我写的第十五本书。尽管我在上个世纪60年代是一名专业的程序员,但我的前第11本书,包括《编程生产力》《软件风险的评估和控制》《应用软件测量》以及《软件成本估算》,都是关于软件管理这个主题的。我对管理主题的兴趣开始于在IBM工作的时候,那是在1973年,我受命和同事查尔斯·图尔克(Charles Turk)博士一起,着手开发IBM的个软件估算工具。
我在IBM时出版了自己的本书,随后,我到ITT创办自己的软件公司,当ITT出售电子商务业务时,我一般每两年出版一本书。
作为《科学美国人》(Scientific American)杂志的终身读者,我喜欢和科技主题与时俱进。(我出版生涯的一个亮点是在1998年11月在《科学美国人》杂志上发表了一篇关于软件规模度量的文章,文章的特色是功能点度量)
1998年,我卖掉自己的个软件公司,随妻子搬到罗德岛州,我从来没有在这里生活过,但我妻子在这里土生土长,而且当地还有很多亲戚。我们搬到这里之后不久,我就被这个州的历史深深吸引了。
罗德岛州的经济史简直就是美国经济的缩影,开始于轮船制造业和轮船贸易,然后是制造业,再转向以劳动力为成本的服务业。2006年,我出版了《纳拉干塞特湾的历史和未来》(The History and Future of Narragansett Bay),这是我的本非软件相关书籍,也是我的本历史类书籍。
罗德岛州一书中的“未来”这一部分内容,涉及当下正蔚然成风的问题:税收增加;政府养老保险不可持续;海湾和淡水层污染;政治冲突;新型外来疾病如(西尼罗河病毒和莱姆病);医生和牙医等专业技师的数量减少;不断膨胀的官僚主义,他们支持的不是广大人民,而是利益集团。这些不仅是州和地方上的问题,也是民族问题。
不管怎样,通过写罗德岛州的历史对我思考软件工程领域的历史似乎也是有用的,只不过那时我已经在构思其他的书,分别是《软件工程实践》(Software Engineering Best Practices)和《软件质量经济学》(The
Economics of Software Quality)。我还和我的商业合作伙伴特德·马洛尼(Ted Maroney)一起,忙着创办一家新的软件公司Namcook Analytics。
说到直接促成这本书的特殊事件,就是有一次去罗德岛州大学附近一个常去的书店闲逛,我偶然拿起一本书,它有一个有趣的标题,是保罗·斯塔尔(Paul Starr)的《美国医疗的社会转型》(The Social Transformation of American Medicine)。这本书获得了1984年的普利策奖,我要向软件工作者强力推荐。它描述医学从一门个人技艺如何转变为一个受人尊敬的职业、从勉强进行的专业训练到可能拥有任何专业都无法比拟的好培训。
斯塔尔的这本书激发了我写作本书的灵感。软件工程仍然只是一门个人技艺,正在逐渐趋向于成为一种真正的职业。例如,软件许可才刚刚开始;正式专业化和委员会认证仍然有待于将来的实现,不法行为的监控也需要在未来加以完善。斯塔尔的这个书给出了一个清晰的路线图,有待软件工程去完成。
我对医疗主题一直很感兴趣,因为我的份编程工作就是在华盛顿的美国公共卫生服务外科医生办公室进行的。我们致力于为国家卫生研究院开发软件。
事实上,我早期在1994年写的一本书就命名为《软件风险的评估与控制》(Assessment and Control of Software Risks),这本书使用的具体结构和格式来自于《人类传染病控制》(Control of Communicable Diseases in Man)这本医学教科书。医学格式在讨论软件问题时也很适用。
在计算机和软件领域,新发明和公司的涌现犹如雨后春笋,以至于这本新书需要一个更切实可用的结构。我决定以每十年的时间为一章(从1930年开始直到2012年,再到以后),以此来观察软件的创新、发明和公司。社会团体和专业机构,比如电气与电子工程师学会(IEEE),计算机机械协会(ACM),信息管理协会(the Society for Information Management)和人类进步社会治理工程协会(SHARE)等,都会有所涉及。
后一章开始于2010年,直到2019年,包括对潜在未来进展的预测。这来源于罗德岛历史的“未来”篇章的回忆录,也预测了此书完成后的十年。
然而,开始于1930年似乎有点太突然了。因此,我决定增加一个序曲,总结人类从古代走向现代的快速计算的历程。全书一共包括12章。
第1章是计算学从古代到当代的序曲。这一章论述了几个相互关联的主题,包括数学运算的演变,用机械传动装置加快数学计算速度的原因;人类交流数学结论的方法;出于历史目的存储和归档数学结果的方法,包括古代著名的图书馆。
第2章论述20世纪30年代数字计算和软件的基础。介绍了阿兰·图灵(Alan Turing)、克兰德·楚泽(Konrad Zuse)和其他一些先驱者所做的开创性工作。在这个十年中,受经济大萧条的影响,很多公司都倒闭了。IBM公司也差点失败,但是1935年社会保障的来临及时挽救了IBM,并使IBM迎来了连续45年的成长。没有社会保障,IBM公司可能挺不过那十年,那么计算机和软件的历史与今天相比,就将完全不同了。
第3章论述20世纪40年代,介绍了二战和战后交战国中的计算机和软件。讨论了著名的英国布莱奇利公园解码器,德国克兰德·楚泽的电脑。但是在二战期间,模拟计算机才是真正的“老黄牛”,因此这本书也讨论了船载炮控制、鱼雷瞄准计算机、投弹瞄准器和其他模拟计算机装置。本章的末尾涉及早期的电子数字计算机和我们现在熟知的编程的开端。
第4章论述20世纪50年代,这个十年见证了计算机和软件从军事和科研目的转向商业用途的过程。十年中,两项巨大的成就是年代初期建成的半自动地面防空警备系统和年代末期建成的机载轰炸雷达安全设备,它们是当时的两个系统。许多发明由此产生,比如晶体三极管和集成电路。COBOL等高级编程语言开始出现。
第5章论述20世纪60年代。这个十年见证了计算机和软件变成上百个企业的商业工具。随着晶体管和集成电路替换管道和离散布线,计算机的实际尺寸有所减小。这个十年同样见证了IBM的快速成长,这归功于IBM 1401型计算机和之后的System 360型计算机。小型计算机和特殊计算机也出现了。操作系统软件和数据库应用技术软件的扩充也使计算机更便于使用。一些大学开始提供计算机科学和软件工程学位课程。软件职位需求的数量剧增。
第6章论述20世纪70年代。这个十年见证了苹果公司和微软公司的诞生,以及商业软件包的发展趋势。一些公司开始使用软件创造新的业务模型,比如美国西南航空公司和美国联邦快递公司,采用独特的中心辐射式编排来优化物流配送。软件工程成为大学里一门普遍的学科。编程工作快速扩展,随着应用软件越来越大,变得难以管理,用来控制软件混乱状况的结构化开发应运而生。一些公司创立于这个十年,很快成长壮大并创造了超乎想象的财富,成为全球龙头,苹果和微软就是其中的两个。嵌入式医疗装置出现了,比如人工电子耳蜗。
第7章论述20世纪80年代。占据主导地位的显然是IBM的个人电脑和DOS、Windows操作系统的出现。专业的软件公司如雨后春笋般涌现出来。编程的工作职位需求继续快速增长。面向对象的开发和面向对象的语言开始出现。由于编程语言难以理解,其数量从几十个发展到了几百个。个人电脑也开始趋于便携性,但当时个这样的电脑重达25磅。为了协助军事部门使用更好、更可靠的软件,美国成立了软件工程学会(SEI)。
第8章论述20世纪90年代。这个时代的新闻是因特网和万维网的发展和快速膨胀。在这个时代末期,随着许许多多公司设法通过网络出售产品和服务,著名的网络公司泡沫(dot-com bubble,又称“稻糠泡沫”)开始迅速膨胀,并在下个十年的初期破灭。互联网导致远程黑客很容易入侵数据中心,滋生了网络犯罪。软件外包业务特别是国际外包业务迅速发展,因为公司已经意识到自己进行软件编程其实并不划算。
第9章论述21世纪初期,这个十年的开始见证了网络公司泡沫的破碎,然而那些幸存下来的网络公司,比如亚马逊(Amazon),就成长为巨头。社交网络出现了,还有新型搜索引擎和新型的网站浏览器。敏捷开发方法开始流行,其他方法也同样流行,比如团队软件过程(TSP)和Rational统一过程(RUP)。到本年代末,编程语言的数量高达2500种之多,而且还在继续增长,几乎每个月都有新语言产生。所有的这些程序语言和软件老化使得维护费用变得十分昂贵。对遗留软件应用的维护和支持超越了新软件的开发,成为这个时期本行业主要的工作。“专利流氓”这个新的细分行业出现了,专利诉讼在电脑公司、软件公司和电信公司之间形成风气,因为他们都在较劲,想方设法用专利来摧毁竞争者,推动发展。
第10章论述21世纪10年代,这是个推测未来可能发明的时代。云、集群(crowd)、大数据和预测分析技术都是当前的发展趋势。一些将来潜在的发明可能是可穿戴式的计算机、虚拟教育和嵌入式医疗设备的重大进步,速度更快且体积更小的量子计算可能会出现。智能代理(Intelligent agent)用于在多样化的大数据源中提取有用信息,会变得日益强大。网络犯罪自然会有所增加,甚至网络战已经悄然发生。全世界现在已经有正式的网络战组织,他们发起的对工业、财政和军事部门的攻击已经很常见。
第11章论述的主题很难定性为一个特殊的时代。这章再一次讨论一些著名的软件失败案例,发生的经过,如何做可以避免当初的失败。将这些内容放在一起讲述似乎比将它们按照年代来讲述更好。
第12章概述网络犯罪和网络战问题的本质和形式,这些问题正在变得日趋严重和普遍。这里与前一章一样,因为网络攻击形形色色,为了突出它们的量级和严重程度,好将它们放在一起讲。
历史书的作者很享受写作的过程,但我也希望这本书能够让你也喜欢读。很显然,如果试图将年代框架中出现的每个公司的每一项发明娓娓道来,这本书的篇幅会达到1000多页,可能没有出版社想要出版,更没有读者愿意读了。
因此,由于篇幅所限,有相当一部分公司略过未讲。当许多公司拥有相似的利基(niche)时,本书只引用一两个来解释这个利基。举个例子,没有必要一一列出50个数据分析公司、50个电脑游戏公司、25个网络研讨会工具公司或者25个抗病毒软件公司的名字。
说明
软件行业有个有趣的社会属性,就是一旦一个新利基变成热门,就会有大量相似的公司和产品风起云涌。有时,一个新发明想得到风险投资很难,但对同一个领域的下一批公司来说,就容易得多了。
把时间线和日期串起来之后,一些信息源就会前后矛盾,对于同一个公司,一个信息源可能说其创建于1982年,另一个引用的时间却是1983年。我希望这本书在时间线和日期上是大概正确的,但也很容易有一年前后的偏差。
这本书的目的是展示整体的发展历程以及不断涌现的发明创造。软件工程领域已经成为人类历富有创造性和激情的领域之一。我希望年轻的读者有兴趣了解可能在他们出生之前出现的旧发明,希望年长的读者能喜欢阅读这许多新型的发明,比如社交网络和穿戴式计算机(很快会出现①)。
致 谢
像以往一样,我要感谢我的妻子艾琳(Eileen),感谢她在过去30年中对我写作15本书所给予的支持。同样感谢我的合作伙伴,特德·马洛尼(Ted Maroney),感谢他对我的各种专利和发明表示兴趣并提供支持。
感谢本书的策划编辑贝纳德·古德温(Bernard Goodwin)对这本书和我之前一些书的支持。同时还要感谢为编辑和出版此书付出努力的所有工作人员。
非常感谢这本书以及之前我其他书的评审人员,因为他们审过我的很多书。感谢雷克斯·布莱克(Rex Black)、加里·盖克(Gary Gack)、彼得·希尔(Peter Hill)、里昂·卡贝曼(Leom Kappelman)、阿历克斯·佩提特(Alex Pettit)、沃克·罗伊斯(Walker Royce)和乔·司各菲尔德(Joe Schofield。还有一些非正式的评审人员,比如汤姆·德佩特里罗(Tom DePetrillo)、蓬特斯·约翰逊(Pontus Johnson)、托尼·萨尔瓦吉奥(Tony Salvaggio)、保罗·斯特拉斯曼(Paul Strassmann)和杰瑞·温伯格(Jerry Weinberg),同样在此表示感谢。
还要感谢Dr. Dobb’s Journal的编辑安德鲁·宾斯多克(Andrew Binstock),注册企业风险管理学院的格雷格·哈钦斯(Greg Hutchins),InfoQ的本·林达斯(Ben Linders)以及信息技术度量和生产力研究所的迈克尔·米拉蒂斯(Michael Milutis),他们出版了这本书和我之前书的精选特辑。
我们软件领域的所有人都要向这一领域的先驱者和创造者致谢,他们使得这个领域如此有趣,他们是阿尔·阿尔布雷希特(Al Albrecht)、巴里·鲍伊姆(Barry Boehm)、弗雷德·布鲁克斯(Fred Brooks)、沃德·坎宁汉(Ward Cunningham)、艾瑟·戴森(Esther Dyson)、比尔·盖茨(Bill Gates)、格雷丝·霍普(Grace Hopper)、瓦兹·汉弗莱(Watts Humphrey)、斯蒂夫·乔布斯(Steve Jobs)、斯蒂夫·坎(Steve Kan)、米奇·卡珀(Mitch Kapor)、肯·奥尔森(Ken Olson)、阿兰·图灵(Alan Turing)、王安(An Wang)、杰瑞·温伯格(Jerry Weinberg)、斯蒂芬·沃尔夫勒姆(Stephen Wolfram),等等,恕不一一道来。
过去的这些年,我有幸接触到一些高层主管,他们懂得软件对公司及对世界的价值。这些高管为提高软件方法和实践专门投资建立研究中心,而我有幸得以进入其中一些地方工作。
这些企业的高管分别是有IBM早期的托马斯·沃森(Thomas J. Watson),ITT公司的哈罗德·杰宁(Harold Geneen)和兰德·阿拉斯库格(Rand Araskog),Electronic Data Systems公司的莫特·迈尔森(Mort
Myerson)以及构造计划研究所(Kozo Keikaku Engineering)的富野尚志(Hishahi Tomino)博士。富野博士的公司已经将我之前的大多数书翻译成日语,他们的翻译团队做得非常出色。我也希望这本新书也能找到合适的途径,翻译成日语和其他语言。
软件和计算机已经深刻改变了人类的通信方式。今天,许多人拥有的虚拟朋友多于真实朋友。一些年轻人花在发短信和社交网络上的时间多过面对面的交谈。互联网和万维网已经打开巨大的信息量集合,超过世界上所有图书馆的总和。现在,几乎每一个复杂设备都由嵌入式软件来操控,包括汽车、飞行器甚至智能应用设备。计算机和软件已经改变了世界,未来还有更多的改变等待着我们。
①
编注:在2017年5月微软年度开发者大会上,有一个特殊的腕部可穿戴设备叫Emma,可以帮助帕金森患者正常地绘画和书写。
第1章
序曲:从古到今话计算
我们人类对计算的需要,可能起源于逐渐开始积累物质财产这个大的背景。这样的需要很快演变成为我们需要记录家庭或部落所拥有的财产,比如多少头牛和羊,等等。一旦可以做简单的加减法,与之相关的“记录信息的需要”也随之而来,有了记录,信息保存的时间可以更长,而且还可以分享给其他的人。早期用来记录信息的载体是鹅卵石或实物,但发展到后来,人们发现可以用符号来代替。
人类不断进化并开始以部落的方式定居之后,产生了其他的需要,比如需要测量砖瓦的尺寸和标定地界。一旦有空闲时间,我们人类又在好奇心的驱使下想要计算时空的距离和恒星的位置。
很快,与计算有关的活儿被视为是一种繁重而乏味的体力活儿。于是,很快出现了可以帮助提高计算速度的机械装置。算盘是个具有开创性的计算器。
后,不同的决策支持工具先后问世。对快速计算、永久性数据存储和复杂决策的需要是终启发我们人类设计和开发计算机及相关软件的关键因素。
人类对计算的需要
这样一本讲软件工程和计算机发展史的书,不应该开门见山就直接从某个具体的时间(比如1930年)开始。没错,数字计算机和软件设计的确是1930年到1939年之间才首次明确提出来的,但它们的出现实际上离不开历史上几千年以来的许多发明。
古往今来,人类对计算有不同形式和类型的需要。当然,更需要以固定格式来保存计算结果。
还有一种不太容易明确的需要是对不同的选项进行逻辑分析。一个典型的例子是产品的市场化是走平稳的长线还是走快而陡峭的短线。再比如,某块特定的土地适合种植哪一种农作物?
更重要的决策还有某个部落是否应该对另一个部落发动战争。在今天,有些决策关系到健康,甚至生死攸关,比如,对付抗药性肺结核这一类大病,究竟用什么疗法才有效?
再有就是影响到经济发展的决策。一个典型的例子是共和党与民主党。哪些选择对美国经济有利,双方的观点截然不同。
要在不同的对立选项之间做出选择,虽然不可能双方都对,但双方显然都有可能选错。(也可能有其他更好的选择或压根儿就没有什么更好的选择)通过对民主党与共和党的辩论进行分析,我们发现双方貌似都是错的,而且,无论采取哪个党派的执政路线,后都可能不利于美国经济健康发展。
在计算机或软件设计专业人员看来,建一个强大的数学模型来比较提高税收(民主党目标)、减少开支(共和党目标)或兼顾两者所造成的经济影响,应该不是特别困难吧。
然而,民主党与共和党都没有用真实的财政模型来展开理性的辩论,而是停留在巧言辞令的层面,没有任何实质性的信息或论据来支撑自己的论断。共和党与民主党的演讲简直让人大跌眼镜,双方都在极其能事指责对方,但都拿不出什么确凿可信的数据。
这类问题在美国很多州和市也发生过。比如,2012年美国大选前,罗德岛州议会通过一项不明智的决议,每个投票站的选民人数提高一倍,目的是使投票站的数量减半。
这个愚蠢的决定造成一个不可避免的后果,选民必须排成长队,足足等上四个小时才能投票,有些投票站甚至还得开放到深夜。
这个问题并不是特别复杂。每个投票站每小时的人流量在很多年前就是知道的。但罗德岛州议会疏忽了对投票站减半后之于选民等待时间的影响进行充分而必要的计算。
结果,2012年大选中,罗德岛州很多选民等不起四个小时,有的甚至没有投票就直接走人。他们的选举权被这个“脑残”议会所通过的愚蠢决议给剥夺了。议会的这项决议太差劲儿了,在没有对投票站减半对投票时间的影响进行建模之前,不应该予以通过。
今天,政府出台的法律是否明智,颁布的法规有没有经过大脑,其决策影响评估都可以用计算机和软件轻松算出来,甚至还能够从根源上消除可能出台类似愚蠢决议的任何想法。
事实上,古往今来,人类一直都在运用数学知识做出逻辑选择,记录数据和信息,在这样的大背景下演绎出软件和计算机的发展历程。下面几个问题与软件和计算机的发展史紧密相关:
* 我们用的是什么类型的计算?
* 我们需要保存什么类型的信息或数据?
* 对于需要长期保留的信息,哪些存储方法合适?
* 面对复杂的选项或决策,哪些分析方法对我们有帮助?
* 在进行数据与知识的交流时,有哪些方法?
穿越古今,从大历史观的角度来考虑这五个问题,纵览计算机和软件逐步用于解决这些问题的过程,是非常有意思的。
对数字序列的早期认识
说起来,我们人类可能是先学会说话,后来才慢慢开始学会数数的,至少可以数手指头,从1数到10。早在3.5万年以前,尼安徳特人①和克罗马农人②可能就会数数,有考古发现为证:捷克斯洛伐克距今3.3万年的狼骨和非洲距今3.5万年的狒狒骨,上面都有并排的划痕。
这些划痕记录的是过去了多少天,还是多少件物品,或只是单纯记录过去了多少时间,我们对此不得而知。狼骨有意思,因为上面的55个划痕被分成5组,很有可能是用来记录物品或时间的。
考古还发现,距今5万年的乳齿象象牙上有16个孔,这些孔的用途也是个未解之谜。尼安德特人和克罗马农人在公元前4.3万年~公元前3万年之间融合,所以这些饰品可能来自其中任何一方,也可能来自同时代但现在已经灭绝的其他部落。
有趣的是,虽然现代人额前叶更宽、更高,但尼安德特人和克罗马农人的头颅和脑容量都略大于现代人。虽然脑容量与智力水平并不直接相关,但确实可以表明很早以前就存在某种形式的抽象和推理。岩洞壁画的历史可以追溯到4万年以前,这说明人类在当时至少已具备某种形式的抽象能力。
除了计算物品和财产,对时间流逝保留类似的跟踪记录也十分重要。对于年,人类有主观的了解可能是距今1万年前的事。随着1万年前农业时代的到来,了解特定农作物的种植时间和收割时间对粮食生产有很大的帮助。
目前已知的批人类定居点是公元前7000年土耳其的加泰土丘。这个泥砖构造的小镇大概有几百个居民。考古人员在此发现了农业时代的小麦、大麦和豌豆。肉类食品来自牛和其他野生动物。
箭头、锤头、陶器、铜和铅等考古发现表明这里发生过某些形式的交易。如果没有物品记录方法,交易是很难实现的。此外还有许多壁画,或许可以说明人们对艺术有兴趣。
早期人类对数学的认知可能来源于几个关键问题。
* 史前的数字和数学知识
通过计算物品来记录主权(所有权)
理解加法和减法两种基本运算
测量角度,比如东向或西向,以免迷路
计算时节,用来辅助农业生产
计算日常时间,用来协调集体活动
* 早期文明后出现的数学和数学知识
为建筑用途而计算实际的长宽高
为交换物品而计算重量和体积
计算长途距离,比如两个城市之间
计算山体的高度以及太阳高出地平线的位置
理解乘除法数学运算
* 牧师或巫师传授的数字或数学知识
计算天文时间,比如日食,比如恒星的运行位置
测量运动物体的速度
测量曲线、圆和不规则的多边形
测量加速度等变化率
测量音速和光速等不可见的物理现象
* 数学家提出并发展起来的数字和数学知识
对博弈和赌博中的概率进行分析
理解抽象概念,比如0和负数
理解复利等复杂问题
理解非常复杂的问题,比如无限性和不确定性
理解抽象概念,比如无理数及量子的不确定性原理
经过仔细观察,借助于石头或划痕以及用来测量长度的木棒,史前的数字和数学知识很容易理解和掌握。加减法的演示也很容易,从一堆石头中简单增减石头即可。
早期文明中,为了了解数字和数学知识,需要物理设备与抽象推理相结合。显然,有些刻度尺用来称重,有些角度计算器用来测量山体高度。有些记录方法用来跟踪系列事件,例如长时间观测和记录恒星在空中的位移。
来自祭司或巫师的数字和数学知识,结合了抽象推理、精准计时、精准实测,让人清楚认识到数学所代表的东西是看不见、摸不到或不能直接测量的。这就要求有人花时间做智力研究,不再像以前那样继续从事农耕或狩猎。
数学家提出并发展起来的数字和数学知识,可能是促成计算设备以及计算机和软件终问世的主要原因。要求对以前的事物有系统化的认知,同时还要结合精准的测量以及对数学推导有强烈的求知欲。这些知识可能起源于数学素养良好并可以在新的方向以创造性思维扩展早期数学概念的人。
考古发现,古城摩亨朱-达罗③曾经有过复杂的数学运用。事实上,天平秤和称重计就是在这里发现的。
古城摩亨朱-达罗在时期可能有3.5万居民。它的街道布局为紧凑的网格状,砖和建筑物都有标准的尺寸,显示出重复使用的迹象。显然,这些都是需要精确测量的。
摩亨朱-达罗和印度北部城市哈拉帕在建筑风格上很相似,表明古印度曾经有过中央机关。两个古城都发现过一大批描有动物图像和符号的石版,只不过其含义目前还无法破译。有些石版的封泥时期甚至可以追溯到公元前3300年。
其他古代文明也发展了计数、算术以及长度、重量和尺度单位。埃及和巴比伦在公元前2000年就有算术。
随着城市成为定居点并逐渐扩大,人们的闲暇时间也增多,出现了非体力劳动和狩猎的职业。这些职业不依赖于体力,毫无疑问,牧师和巫师就属于这一类。他们的时间从生存和觅食中脱离出来之后,开始进一步理解以更多形式出现的数学知识。
长期跟踪恒星的运行轨迹,测量更远的距离,如不同村庄的产权边界和距离,测量船只的航行轨迹和位移,这些都需要更复杂的数学计算,需要精确测量角度和时间段的变化。造船业的到来,还需要更高深的数学知识,因为船体必须要能弯曲,单是直线测量还不够。
在河里或海边荡舟或划船,不需要太多或根本不需要用到任何数学知识。但是,一旦驶入大海开始远航,就必须认识星座,以免迷失方向。
由于大陆漂移的原因,澳大利亚远离其他所有大陆,没有陆桥在任何位置与它连接。然而,大约距今4万年前,就有人类在此定居,显然是通过长途远洋航行过去的。波利尼西亚群岛和复活节岛也远离所有大陆,但几千年前也有人类定居,这说明人们对星座有早期认识,也用到过某些数学知识。
埃及、美索不达米亚、中国、印度和南美等很多古文明很快就积累了相当复杂的数学知识。这些数学知识往往都与基本功扎实的专业人员有关。
大家都知道,许多古文明,如中国、苏美尔人、巴比伦人、埃及人、希腊人,都在儿童教育上投入了大量时间和精力。但很多人不知道,印度、中美洲和南美洲其实也曾经大力提供类似的训练,比如奥尔梅克人、玛雅人、印加人以及后来的阿兹特克人。
日本也有正规的培养体系。针对上层阶级,日本的培养体系既包括兵器的运用,也包括智力教育,比如阅读、写作和数学。所有这些古文明都建立了正规的儿童培养体系和信息记录方法。
印度北部那兰陀大学④大约建立于公元前472年,后来一直持续到大约12世纪。公元500年左右,这所大学的招生规模达到。这是古代人员规模的大学之一,有1万多名来自亚洲及世界各地的学生,教职人员2000多名。它是世界上批开展数学、物理、医学、天文和外语教育的大学。
那兰陀大学曾经有一个活跃的翻译团队,他们把梵语和印度语的文献翻译成了多种其他语言。事实上,那兰陀大学图书馆在12世纪穆斯林入侵印度时被毁于一旦,关于那兰陀大学的许多信息都来自中国保存下来的中文翻译文献。据说图书馆规模很大,大火一直持续了六个星期。
即使与希腊和罗马相比,印度的学者也很先进。零的概念和对星座的认识都早于欧洲(美洲中部奥尔梅克人对零的了解和运用也早于希腊人)。
在古代,每1000个人中超过950人是文盲或只会简单的计数和简单的测量。然而,有极少数人有能力学会更复杂的计算,天文、建房搭桥、导航和造船等行业的发展需要用到这些数学知识。
那些为数学发展提供原动力的发明
自从开始知道计数和数字概念,使用数字化信息的人就饱受困扰,因为总是需要运算速度更快、结果更可靠(相较于不借助于任何设备的人脑)。为了理解计算机和软件的重要性,我们有必要先了解早期人类为提高计算性能而做出的许多尝试。
同时,更有必要思考计算机和软件的真实作用及价值。各种计算装置为人类思维能力提供的服务包括但不限于:
* 加减乘除基本运算
* 科学数学,包括功率、正弦和余弦等
* 金融数学,包括单利、复利和利率等投资回报率
* 逻辑计算,比如不同替代方案的路径和选择
* 时间、距离、高度和速度的计算
* 从大量分散信息的集合中推导收敛,得出有用的归纳和总结
* 演绎逻辑,从规律中得出结论
在为写本章内容而展开调研时,我从网上搜到大量有趣、有用的资源。比如,IBM制作了一个图解数学史,甚至还可以下载到iPad上看。⑤维基百科和其他网站资源也有数十个计算机硬件史以及多个软件发展史。现在全球各地已经有十多个计算机博物馆,比如英国的伦敦科学博物馆,就陈列了一个还可以正常使用的巴贝奇分析机。
本书将综合介绍六大发明,它们彼此促进,后相互关联并促成了现代软件的诞生。
在这六大发明中,排在位的是数学。计算设备、计算机和软件的初衷都是为了加快数值计算。数学运算大概是从加减运算开始,而后才引入乘除运算。再之后,出现其他更多更抽象的运算形式,比如几何、三角、代数和微积分等。
第二种形式的发明是记下想法和信息,以便于分享、传播和长期保管。这类发明包括写入系统和物理存储设备。针对写下的数据,存储方式包括石板、泥版、纸莎草、动物皮、纸以及后出现的磁存储和光存储。存储位置包括手稿、书籍、图书馆以及后出现的数据库和云存储。
第三种形式的发明是物理计算设备,用于协助人类学者进行(比单凭人的脑力和体力)更快、更准确的计算。常用数值表是个用来加快计算速度的方法。物理设备包括算盘、量角器、星盘、测量设备、机械计算器、计算尺、模拟计算机和后出现的电子数字计算机。
第四种形式的发明是信息发行渠道。毫无疑问,种渠道是口头传播,让学生或学徒记下来。但不久之后,出现了信息的传递,包括石头和骨头上的划痕,泥版上留下的记号,后出现的象形文字、表意文字(比如汉字这样的方块字)和后的字母表。
第五种形式的发明是软件。这是近出现的,2013年所用的所有软件使用年限都不到50年,50%以上的软件使用年限可能还不到20年。
第六种形式的发明是间接发明。这些催生发明的发明虽然与计算机或软件不直接相关,但有助于促成发明本身的问世。这些激发新发明的发明中,一个是专利系统,另一个不容忽视的是塑料。
评论
还没有评论。