第1章 代码勇士(5)

2025-03-31 02:09:49

随着存储程序的概念在初生的计算机文化中的广泛传播,编程变得越来越引人注目,很快吸引了一些拥护者。

不过这是很艰难的一件事。

数字计算机有两种状态,开或者关,所以它只能对只包含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是针对科学计算和工程问题的。

于是针对其他目标的其他语言出现了,比如面向商业的通用语言(Common BusinessOriented Language, Cobol)。

没过多久,便有很多种语言可供程序员选择了。

而且,很多时候他们的职业路线就是由他们所选择和学习的最好的编程语言所决定的。

赫伯深信克服因为计算机语言激增而导致的困难将成为未来最大的技术挑战之一。

对我来说,编程不仅是一种重要的实践技术,她在1961发表的一次讲演中说,它还需要在基础知识方面做巨大的投入。

有些出乎意料的是,她担心最大的前进障碍会来自程序员自己。

就像转变到一种新的宗教信仰一样,他们经常表现出思想保守,掩盖了他们的狂热。

程序员是非常古怪的一个群体,她观察发现。