《观止》

下载本书

添加书签

观止- 第3部分


按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!

第1章 代码勇士(3)
他不想搭上软件的边,直接拒绝了通用汽车公司。相反他进了杜邦公司。他很快就适应了这个稳健繁荣的化学巨人。他留着短发和军人那样的胡须。他第一个想到的就是要挣钱;他和一个在大学里认识的女人结了婚,而且已经是一个孩子的父亲了。
  杜邦公司把卡特勒安排到一个帮客户寻找材料用途的部门工作。他接手的第一个工作是为一种新的方法建模,斯科特纸业(Scott Paper)打算用这种方法来制作泡沫保温棉,用在夹克衫和其他外套上。这个模型非常复杂,需要使用电脑来创建。于是卡特勒只好放下了所有的事情去了一所由IBM开办的学校,在那里他可以学到怎样给IBM电脑编程序。
  卡特勒在学校里呆了一周。他感觉到自己的锐气第一次受挫了。编程“是最奇怪的事情,因为你过去习惯了做一些事情,而且你觉得你做的是对的”,后来他说:“但实际上错了。你只是没有注意到它是不对的。电脑对差不多正确是没有一点宽慰和原谅的。差不多就意味着你还是错的。”
  即使对于很有经验的程序员来说,他们也会发现他们的工作是非常枯燥无趣的。当然,在那时,还没有人自己拥有电脑。通常是十几个程序员共同分享一台大型计算机。这种大型计算机的大小足以把整个房间塞满,它能够成批地把很多工作一下子处理完。在批处理任务中,程序员把指令打到穿孔卡片上,向队列中增加一个栈,然后等待结果。因为这种大型计算机很贵,所以批处理任务的日程安排是非常严格的。很多时候,要花好几个小时甚至更长的时间才知道一个程序的命运。如果失败了,单单去纠正穿孔错误就可能要花上程序员一整天的时间。
  卡特勒回到了杜邦公司决定在程序上有所成就。这个工作激起了他的兴趣,因为在程序世界里,他是那个环境的控制者。他还发现他有一种神奇的能力,可以一下子把七零八落的不同程序片段都记在脑子里。他开始渴望编程。他没有耐性排队等待杜邦公司的电脑设备,所以他在半夜工作,那时用计算机很便宜而且他能够不慌不忙地汇编和修正他的卡片。“几乎没有任何人在那儿,”他回忆说,“出错误的时候我可以再试一次,在我想用的时候就用,不想用的时候就不用。”
  相对于整夜编程来说,做泡沫保温棉并没有让卡特勒晚上睡不着。不到一年的时间,他已经被电脑的魅力深深地吸引了。在电脑上找到解决问题的最佳方法之后,他很快就对问题失去了兴趣,而疯狂地爱上了电脑。事实上,卡特勒找到了人生目标。“我真正想要的是在电脑上工作,而不是用它们来解决问题。”
  于是,卡特勒开始寻找一个需要编程的新工作,他找到了杜邦公司的另一个部门,这个部门需要有人来帮助维护Univac制造的中央电脑。20世纪50年代时,Univac生产的电脑在处理数据方面是最好的,但是到了20世纪60年代后期,这个公司开始走下坡路了。杜邦公司叫卡特勒提高那些使用多年了的Univac电脑的可靠性,这意味着要调整机器的操作系统。在那之前,卡特勒甚至从来没有考虑过操作系统。不过,公司的电脑专家看起来知道的也不是很多,于是他全身心地投入研究。
  可以把计算机程序大致分为两类。应用程序,简称为“应用”(apps),是软件世界中看得到的一部分。它一类包括被普通用户使用的程序。举例来说,应用软件可以跟踪定单或者存货,检索名字和电话号码,准备要打印的文档或者控制时事通讯的设计。书 包 网 txt小说上传分享

第1章 代码勇士(4)
另一方面,操作系统也是软件世界中看不到的一部分。它们是计算机的心脏,在背后跳动。表面看起来似乎所有的事情都是应用软件做的,但是事实上很多任务都是操作系统做的,比如打开文件、关闭文件、为要储存的信息建立目录、指挥计算机的输入、输出、存储和网络设备。
  在数字计算机逐步成形的年代里,也就是在第二次世界大战之后,在设计者们眼里,无论是操作系统还是应用软件都是以后再考虑的事情。和由程序组成的“软件”不同,由电子电路组成的“硬件”太难了,以至于工程师们不敢想像何时能完成它。硬件中,最重要的一类是真正将执行送给计算机的指令的电路系统,也就是处理器。第二类设备用于数据输入输出的。第三类设备用来储存信息。第四类设备允许把信息通过专门的电缆或者电话线发给另一台计算机。
  通常,只有在硬件到位后才考虑软件问题。因此,设计计算机时并不知道以后运行什么软件,程序员只能做电脑硬件允许做的事情。艾兹格?迪科斯彻(E。 W。 Dijkstra)是计算机编程方面的著名理论家,他曾经概括了在计算机形成时期人们对编写代码的普遍态度。他这样说:可怜的程序员是什么处境呢?说句实话,他们很难被注意到。首先,起初的计算机太大了,你根本就不能移动它们,除此之外,它们需要太*护工作,以至于很自然地,机器是在哪里开发的,人们在哪里使用它。其次,程序员做的是(某种程度上来说)根本看不见的工作,没有什么魅力。你可以把机器展示给参观者们,那比几页代码的吸引力要大几个数量级。但最重要的是,程序员自己对所做工作的看法也很平常:他工作的意义来源于计算机这种超棒的机器的存在。因为这种机器是独一无二的,所以他知道他的编程只在本地有意义。因为机器只会使用不长一段时间,所以他知道他的编码的延续价值很少或者没有。编程工作表面上看起来很简单。只是写个请求给电脑。这种请求应该是以电脑能够明白的方式表达的。而且,这种方式只有特定的电脑能够明白。同样的请求,完全以同样的方式编写,送给有着不同设计和电路的计算机,就会变得莫名其妙。
  除了成为特定计算机的奴隶外,最早的计算机程序是很简陋的。在第二次世界大战之前,当时的计算机主要是机械的,很多时候,程序的价值和人工反转开关、重新安排线路或切换齿轮的价值差不多。在20世纪30年代,要让那个时代最强大的机械电脑——微分分析仪(Differential Analyzer)——去解决一个新的问题,准备工作就要花很多天。十年之后,要让早期的数字计算机去解决一个比较难的问题,仍然要花几天时间做设置工作。
  更灵活一些的机器从打孔卡片或者纸带上面读取用户的请求,不过卡片或者纸带还是手工反馈给机器的。这种初级的编程方式迫切需要改进。
  在1944年发生了突破,约翰?冯?诺依曼(John von Neumann)是出生在匈牙利的数学家,居住在美国,他提出了存储程序的概念。这个概念与这个领域中的其他人的想法很相似,但是冯?诺依曼最清楚地看到了它的意义。使用存储程序,送给计算机执行的指令可以保存在机器自己的内存中,像对待数据一样。这将大大提高启动一个程序的速度,而且可以很容易地修改程序,或者从一个程序切换到另一个程序。

第1章 代码勇士(5)
随着存储程序的概念在初生的计算机文化中的广泛传播,编程变得越来越引人注目,很快吸引了一些拥护者。不过这是很艰难的一件事。数字计算机有两种状态,开或者关,所以它只能对只包含1(开)和0(关)的二进制的消息做出响应。程序中的所有元素最终必须使用这两个数字表示出来,这样使得即使普通的数*算也很容易变得很复杂,令人眼花缭乱。正如一个观察家所说的,在20世纪40年代后期,为计算机编程是“令人发疯一般地困难”。
  不久以后,程序员们找到了更简单的方法来产生二进制串。他们首先设计了特殊的打字机,可以自动输出二进制代码。后来,他们转移到更友好的“汇编”语言,用字符和符号来代表1和0。使用汇编写程序是一大进步,但是还需要严格遵循晦涩的计算机指令集。程序员必须深刻理解指令集才能写出高效的汇编代码。而且,不同型号的计算机使用的指令集是不同的,取决于它们的微处理器是如何设计的。这意味着一旦某种计算机废弃不用了,那么程序员费尽力气学会的这种汇编语言知识就会变得一钱不值了。
  到20世纪50年代,严重依赖计算机的各种机构开始意识到了软件是令人头痛的事,而且是代价很高的,其中最主要的机构就是美国军方的三大分支。站在计算机领域前沿的程序员们开始寻找方法,以便可以更简单地编写出高效的程序。在1951年,格蕾丝?莫里?赫伯(Grace Murray Hopper),美国海军军械储备局的一名数学家,构思出了一种名为编译器的程序,它可以把程序员的指令翻译成二进制串,也就是最终控制计算机的机器语言。从理论上来说,编译器正是可以把程序员从硬件的限制和使大脑麻木的二进制代码中解放出来的东西。
  赫伯的成果催生了无数人的努力,来降低编写代码的难度。或许,最主要的当属IBM开发的称为公式翻译器(Formula Translation)的编译器,也就是Fortran。它包含了三十二条指令,诸如PUNCH(打孔)、READ DRUM(读取磁鼓)和IF DIVIDE CHECK(除法检查),它们来源于计算机硬件需要的二进制术语。截止到20世纪50年代后期,Fortran产生了巨大的影响。“现在,任何人只要具有好的逻辑思维和愿望就可以学习计算机编程”。一个计算机历史学家曾经这样写道:“你不再必须是熟悉计算机内部原理和汇编语言的专家。使用Fortran的简单命令,你可以让计算机听从你的吩咐,而且编译器会自动地把你的指令翻译为高效的机器代码。”
  尽管Fortran让程序员使用同一套指令来为任意数量的计算机编程,但是要在不同的机器上运行Fortran程序,经常还需要修改。而且,Fortran是针对科学计算和工程问题的。于是针对其他目标的其他语言出现了,比如面向商业的通用语言(mon BusinessOriented Language; Cobol)。没过多久,便有很多种语言可供程序员选择了。而且,很多时候他们的职业路线就是由他们所选择和学习的最好的编程语言所决定的。
  赫伯深信克服因为计算机语言激增而导致的困难将成为未来最大的技术挑战之一。“对我来说,编程不仅是一种重要的实践技术,”她在1961发表的一次讲演中说,“它还需要在基础知识方面做巨大的投入。”有些出乎意料的是,她担心最大的前进障碍会来自程序员自己。就像转变到一种新的宗教信仰一样,他们经常表现出思想保守,掩盖了他们的狂热。“程序员是非常古怪的一个群体,”她观察发现。

第1章 代码勇士(6)
他们成长得非常迅速,在很短时间内就变得很专业,而且很快就感染上了一定程度的抵制改变的毛病。有一个程序员,我听说他差点和客户吵起来,因为他不想修改他的系统,他几次走进我的办公室说:“我们一直是使用这种方法来做事的。”正是因为这个原因,现在我在我的办公室里挂了一个逆时针方向走动的钟。
  在20世纪60年代初期,IBM尝试在软件领域掀起一场革命,能让同一个程序在任意数量的计算机上运行。IBM计划开发一系列机器,这些机器覆盖了大多数市场,它们是由一个操作系统控制的。这个耗资五亿美元开发的System/360产品线取得了巨大的成功。但是它的产生过程是很痛苦的,主要是因为创建软件的难度和成本被大大低估了。第一台360硬件是在1964年问世的,直到五年后它的所有软件才能够很好地运行。到那时,IBM在编写软件方面所花的钱已经差不多与设计硬件一样多。这使IBM公司的经理们非常吃惊,也非常生动地显示出了“影响计算机科技进步的最大障碍”和管理大型软件项目的问题。
  在杜邦公司,戴夫?卡特勒发现自己陷入了驯化计算机这项重大任务的第一线。操作系统的不断标准化大大提高了计算机的实用性。但是编写应用软件的主要压力还是落在了计算机购买者自己的身上。这产生了一种没有想到的效应,那就是使很多大公司成为孕育程序员的基地。杜邦让卡特勒创建一个程序来分析实验室里的实验数据。这个工作很需要技巧,因为需要两台计算机一前一后一起工作。一台接收数据,将数据放入到一个文件然后发送到第二台机器,第二台机器分析数据并把结果发送给研究人员。
  人们希望这个程序是所谓的“实时”系统,它能使计算机接收到信息后立即做出回应,而不是几个小时或者几天后才给出结果。第一个实时系统是在风轮计算机上创建出来的,供空军和海军跟踪敌人的飞行器,并指导美国的攻击机命中目标。
  实时程序是非常有价值的一种创新。对于像杜邦这样努力寻找新材料及其用途的公司来说,快速响应的帮助比延迟响应要大很多很多。杜邦想让卡特勒的程序运行在从数字设备公司(DEC)购买的小型计算机上。DEC是十年前由风轮计算机的一个工程师创立的,DEC是小型计算机领域升起的一颗新星,它大胆打破传统。在过去,计算机设计者们提倡可以让许多工作共享运算能力的大型主机。小型计算机的价格经常低于十万美元,这第一次让人们可能分配一台计算机专门做单一的工作,比如跟踪零件的轨迹,实验数据或者机器工具的操作。
  尽管有用,但是像DEC的PDP这样的小型机通常只配备很少的软件。购买者不得不自己设计他们需要的软件。在接下来的几年中,卡特勒编写出了实时程序和其他一些PDP软件,成为一位为DEC计算机设计代码的专家。
  但是,卡特勒开始厌倦杜邦了。他想要到一家计算机公司工作,于是他选择了DEC。因为钻了IBM产品线的一个空子,DEC不仅成长得非常迅速,而且摒弃了传统的商业模式。它没有征购土地建设办公场地,而是把波斯

小提示:按 回车 [Enter] 键 返回书目,按 ← 键 返回上一页, 按 → 键 进入下一页。 赞一下 添加书签加入书架