《观止》

下载本书

添加书签

观止- 第4部分


按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
蚨恿兄性黾右桓稣唬缓蟮却峁R蛭庵执笮图扑慊芄螅耘砣挝竦娜粘贪才攀欠浅Q细竦摹:芏嗍焙颍ê眉父鲂∈鄙踔粮さ氖奔洳胖酪桓龀绦虻拿恕H绻О芰耍サトゾ勒┛状砦缶涂赡芤ㄉ铣绦蛟币徽斓氖奔洹�
  卡特勒回到了杜邦公司决定在程序上有所成就。这个工作激起了他的兴趣,因为在程序世界里,他是那个环境的控制者。他还发现他有一种神奇的能力,可以一下子把七零八落的不同程序片段都记在脑子里。他开始渴望编程。他没有耐性排队等待杜邦公司的电脑设备,所以他在半夜工作,那时用计算机很便宜而且他能够不慌不忙地汇编和修正他的卡片。“几乎没有任何人在那儿,”他回忆说,“出错误的时候我可以再试一次,在我想用的时候就用,不想用的时候就不用。”
  相对于整夜编程来说,做泡沫保温棉并没有让卡特勒晚上睡不着。不到一年的时间,他已经被电脑的魅力深深地吸引了。在电脑上找到解决问题的最佳方法之后,他很快就对问题失去了兴趣,而疯狂地爱上了电脑。事实上,卡特勒找到了人生目标。“我真正想要的是在电脑上工作,而不是用它们来解决问题。”
  于是,卡特勒开始寻找一个需要编程的新工作,他找到了杜邦公司的另一个部门,这个部门需要有人来帮助维护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尝试在软件领域掀起一场革命,能让同一个程序在任意数量的计算机上运行。IB

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