打字猴:1.70043551e+09
1700435510 这样讲太抽象了,用一个具体的小例子来说明什么是编程吧。假设我们想根据矩形的长和宽计算其面积。用人类语言可以这样说:“面积是长和宽的乘积。”学校教师会在黑板上写出面积计算的公式:
1700435511
1700435512 面积 = 长×宽
1700435513
1700435514 使用较高级别的编程语言时,我们会这样写:
1700435515
1700435516 area = length * width
1700435517
1700435518 这就是今天大部分主流编程语言中的确切形式。编译器将其翻译为人类仍然可读但主要面向计算机的机器指令序列。在一台虚构的简单计算机上,该序列大概像下面这样:
1700435519
1700435520     load      length    multiply  width    store     area
1700435521
1700435522
1700435523
1700435524
1700435525
1700435526 最终,称为汇编器(assembler)的程序把该序列转换为人类不易读懂的指令。这些指令能够被载入计算机的主存储器。执行时,它们根据长和宽算出面积。当然这里没谈及很多细节(如何指定编译和加载,如何让长和宽的数值进入计算机,如何输出面积数值,等等),但本质大抵如此。
1700435527
1700435528 如果你想看看可工作的示例,以下这段完整的C语言程序输入长和宽,输出面积:
1700435529
1700435530 void main() {     float length, width, area;     scanf(“%f %f”, &length, &width);     area = length * width;     printf(“area = %f\n”, area); }
1700435531
1700435532
1700435533
1700435534
1700435535
1700435536 这段程序能在任意一台计算机上编译和执行。
1700435537
1700435538 每个人都至少知道Windows或macOS这些现代操作系统的名字,手机上运行的是Android和iOS等操作系统。
1700435539
1700435540 操作系统是控制计算机的程序,它给正在运行的程序分配资源。它管理主存储器,当运行中的程序有需要时,将主存分配给它们。在台式计算机或笔记本式计算机上,操作系统让你能够同时运行浏览器、文字处理器、音乐播放器,或许还有我们的面积计算小程序,并且按需任意切换到其中之一。
1700435541
1700435542 操作系统也控制显示,在收到程序请求时,使其在屏幕上可见。它还管理磁盘之类存储设备,当你保存Word文档时,文档就会被存下来,以备之后恢复并继续工作。
1700435543
1700435544 操作系统还负责协调与互联网之类的网络进行通信,这样你就能用浏览器搜索、与朋友联络、购物、分享宠物猫视频,一切齐头并进。
1700435545
1700435546 在程序发生错误时,操作系统保护其他程序不受影响,还要防止有害程序或用户误操作对系统自身造成的危害。
1700435547
1700435548 手机上的操作系统也是如此工作的。在底层,需要做许多动作来维持经由移动网络或无线网络的通信。虽然细节常有不同,但手机应用与Word这样的程序在概念上完全一样,并且用同样的编程语言编写。
1700435549
1700435550 现今的操作系统程序体量庞大,纷繁复杂。在20世纪60年代,它简单得多,但相对于同时代的其他程序,它还是既庞大又复杂。一般而言,IBM或DEC(Digital Equipment Corporation,美国数字设备公司)等计算机制造商为各种不同硬件提供操作系统。每个制造商生产的硬件全无共通之处,有时甚至来自同一厂商的硬件都会有很大不同,所以操作系统也各自不同。
1700435551
1700435552 更加麻烦的是,操作系统用汇编语言写成。汇编语言是人能读懂的机器指令,与特定类型硬件的指令集紧密相关。每种计算机都有自己的汇编语言,所以操作系统是庞大且复杂的汇编语言程序,每个操作系统都针对特定硬件、使用特定语言编写。
1700435553
1700435554 系统之间缺乏共通性,使用相互不兼容的低级语言,导致同时需要多个版本的程序:为某一操作系统编写的程序,在移植到其他操作系统或硬件架构上时,必须完全重写。这种状况阻碍了进步。如后文所述,Unix操作系统在所有类型的硬件上都保持一致,而且用较高级的语言写成,只需付出相对较少的成本,即可从一种计算机移植到另一种计算机。
1700435555
1700435556
1700435557
1700435558
1700435559 UNIX传奇:历史与回忆 [:1700434678]
[ 上一页 ]  [ :1.70043551e+09 ]  [ 下一页 ]