1700435467
1700435468
[4] Dick(迪克)是Richard(理查德)的昵称。类似的名字/昵称在后文还有出现,如Bob是Robert的昵称,Bill是William的昵称,Mike是Michael的昵称,等等。 ——译者注
1700435469
1700435470
[5] 这本书有多个版本,对应中译本也有多个版本,中文书名也不尽相同,有《风格的要素》《英语写作手册:风格的要素》等。——译者注
1700435471
1700435472
[6] 对应原文为“The purpose of computing is insight, not numbers.”。——译者注
1700435473
1700435474
[7] 1984年,美国司法部依据《反托拉斯法》,将AT&T分拆为专营长途电话的新AT&T,以及7个本地电话公司。贝尔通信研究院(Bell Communications Research)是独立研究机构,为这些公司提供创新研发服务。——译者注
1700435475
1700435476
[8] 比尔·贝克1979年转任贝尔实验室董事会主席,这里可能是作者记忆有误。——译者注
1700435477
1700435478
1700435479
1700435480
1700435481
1700435482
1700435484
UNIX传奇:历史与回忆 第2章 Unix雏形(1969)
1700435485
1700435486
“在某一时刻,我发现离实现一个操作系统仅有3周之遥了。”
1700435487
1700435488
——肯·汤普森,美国东部复古电脑节,2019年5月4日
1700435489
1700435490
Unix操作系统诞生于1969年,但它不是从石头缝里蹦出来的。几位贝尔实验室员工在其他操作系统和语言上积累了多年经验,这才有了Unix。本章将讲述这个故事。
1700435491
1700435492
1700435493
1700435494
1700435496
UNIX传奇:历史与回忆 2.1 一点点技术背景知识
1700435497
1700435498
本节将简要普及计算机、硬件、软件、操作系统、编程和编程语言等构成本书主题的基础技术知识。如果你对这些概念已经很熟悉,跳过即可;如果不熟悉,希望这些内容能让你跟得上后文的推进节奏。如果你想进一步了解面向非技术背景读者的细节阐释,请参阅我的《普林斯顿计算机公开课》(Understanding the Digital World),当我是自卖自夸好了。
1700435499
1700435500
计算器曾经是真实器物,后来成了手机应用。与之相比,计算机本质上没有特别多不同之处。计算机如今能以高达每秒十亿次的极快速度做算术[1],但在20世纪70年代,运算速度远远低于每秒百万次。
1700435501
1700435502
20世纪60年代和20世纪70年代典型的计算机有一个由数十种指令组成的指令集,它可以执行:算术(加、减、乘、除),从主存储器中读出信息,将信息保存到主存储器,以及与磁盘或其他连接设备通信。另外还有一件至关重要的事:其中有一些指令负责依据之前的计算结果,即已做完的事,决定后续执行什么指令——这决定了计算机下一步做什么。这样一来,计算机就掌控了自己的命运。
1700435503
1700435504
指令和数据存放在同一个主存储器中,这个主存储器通常被叫作RAM,也就是“随机存储器”(random access memory)。将一系列指令装载到RAM,计算机就会根据指令内容执行不同任务。这就是你点击Word或Chrome浏览器图标时发生的事——操作系统将那个程序的指令装入内存,开始运行。
1700435505
1700435506
使用某种编程语言,为执行某项要完成的任务创建操作序列,这就是所谓的编程。直接创建所需指令是有可能的,但这项工作实在繁难,哪怕是写很小的程序也是如此,所以编程领域的大部分进步都与创造接近人类表达计算方式的编程语言有关。称为编译器的程序(当然得先把它写出来)将高级语言(接近人类语言)翻译为针对特定类型计算机的指令序列。
1700435507
1700435508
归根结底,如同Word或浏览器等普通程序一样,操作系统也是由那些指令构建而成的,只是它更为庞大和复杂。操作系统的任务是控制所有其他要运行的程序,并管理它们与计算机其他部分的交互。
1700435509
1700435510
这样讲太抽象了,用一个具体的小例子来说明什么是编程吧。假设我们想根据矩形的长和宽计算其面积。用人类语言可以这样说:“面积是长和宽的乘积。”学校教师会在黑板上写出面积计算的公式:
1700435511
1700435512
面积 = 长×宽
1700435513
1700435514
使用较高级别的编程语言时,我们会这样写:
1700435515
1700435516
area = length * width
[
上一页 ]
[ :1.700435467e+09 ]
[
下一页 ]