世界是数字的
出版信息
[美] Brian W. Kernighan / 李松峰、徐建刚 / 人民邮电出版社 / 2013-6 / 49.00
内容简介
家用电器、汽车、飞机、相机、手机、GPS 导航仪,还有游戏机,虽然你看不见,但这些设备都有计算能力。手机通信网络、有线电视网络、空中交通管制系统、电力系统、银行和金融服务系统等基础设施背后无一不是计算机在支撑。如今的世界是数字的,而计算机和计算无处不在。这本书就是要告诉大家数字世界有关计算机的一切。本书没有高深莫测的专业术语,但它全面解释了当今计算和通信领域的工作方式,包括硬件、软件、互联网、通信和数据安全,并且讨论了新技术带来的社会、政治和法律问题。
无论你有没有计算机背景,无论你从事什么职业,只要你认同自己生活在数字时代,这本书就是必读的!
作者简介
Brian W. Kernighan
世界顶尖计算机科学家,曾为贝尔实验室计算科学研究中心高级研究人员,现为普林斯顿大学教授。他是AWK语言和AMPL语言的发明人,还参与过UNIX和许多其他系统的开发,同时出版了The C Programming Language、The Practice of Programming、The Elements of Programming Style等在计算机领域影响深远的著作。
Kernighan主张所有人都应该了解计算机,在他心目中,此书相当于“写给未来总统的计算机读物”,是新一代公民必读之作。本书中讲解的内容甚至会影响我们在微博和社区上的活动,以及使用智能手机的方式。
目录
目 录
开篇语 1
任何足够先进的技术都与魔术无异。
——阿瑟?C.克拉克,“技术及未来前景”,
《三号行星的报告》,1972年
第一部分 硬件
计算设备的历史悠久,不过早期的计算设备大多数是专用的,通常用于预测天文事件及其发生方位。例如,关于巨石阵,一个尚未证实的推测就认为它是一座天文观测站。公元前100年制造的安提基瑟拉机器就是一台天文计算机,其机械结构之精妙令人叹为观止。
第1章 计算机里有什么 11
PC这个名字是个人计算机(Personal Computer)的缩写,或者说源自于1981年IBM开始卖的那种PC。还有些人可能有苹果Mac机,上面运行某个版本的Mac OS X操作系统。更专用的设备,比如手机和平板电脑,也是强大的计算机。这些计算机看起来很不一样,用起来也感觉不一样,但这仅仅是表象,其实根本没区别。
1.1 逻辑构造 13
1.2 物理构造 18
1.3 摩尔定律 21
第2章 比特、字节与信息表示 23
温度计的红色液体(通常是染色酒精)或水银柱是模拟的:液体会随着温度变化按比例膨胀或收缩,因此温度产生较小的变化,液体柱高度也会相应产生较小变化。但大楼外面显示温度的广告牌则是数字的:显示屏显示的是数值,温度介于36.5和37.4之间时,它都显示为37。
2.1 模拟与数字 23
2.2 模数转换 25
2.3 比特、字节与二进制 30
2.4 小结 37
第3章 深入了解CPU 39
今天的笔记本电脑,甚至连手机都已经有多个CPU了。英特尔酷睿双核处理器在一块集成电路芯片上集成了两个CPU(“核心”)。在一块芯片上集成越来越多的处理器已经成为明显的趋势。
3.1 玩具计算机 40
3.2 真正的CPU 45
3.3 缓存 47
3.4 其他计算机 49
硬件部分小结 51
第二部分 软件
2010年4月的美国《消费者报告》(Consumer Reports)称丰田雷克萨斯GX460车型“不能买:存在安全隐患”,因为其电子稳定控制系统会导致这款SUV在急速转弯时车尾过分向外甩,从而可能导致翻车事故。一个月之内,丰田公司就升级软件,修复了这个问题。根本就没有任何机械问题,仅仅是软件最初有些问题。
第4章 算法 57
假设我们想找出谁是房间里个子最高的人。我们可以四下里看看,然后猜一猜会是谁。然而,算法则必须精确地列出每一个步骤,从而让不会说话的计算机都能遵照执行。最基本的做法就是依次询问每个人的身高,并记住到目前为止谁最高。于是,我们可能会问“约翰,你多高?玛丽,你呢?”
4.1 线性算法 58
4.2 二分搜索 60
4.3 排序 62
4.4 难题与复杂性 66
4.5 小结 68
第5章 编程与编程语言 71
程序必须考虑实际的问题,比如内存不足、处理器速度不快、无效或恶意的输入、网络连接中断,以及(看不见摸不着,但却经常会导致其他问题恶化的)人性弱点。因此,如果说算法是理想化的菜谱,那程序就是让烹饪机器人冒着敌人的炮火为军队准备一个月的给养所需的操作说明书。
5.1 汇编语言 72
5.2 高级语言 73
5.3 软件开发 79
5.4 软件资产 84
第6章 软件系统 93
你使用的电脑中会装有各种各样的程序,比如浏览器、文字处理器、音乐播放器……这些程序有一个专业的叫法,即应用程序(application)。典出何处?或许出自“这个程序是计算机在完成某个任务方面的应用”吧。
6.1 操作系统 94
6.2 操作系统怎么工作 98
6.3 其他操作系统 101
6.4 文件系统 102
6.5 应用程序 108
6.6 软件分层 111
第7章 学习编程 115
如果你自己折腾一天连10行代码都调试不好,那别人要是说能按时交付百万行级的程序,而且没有任何bug,你相信吗?换个角度说,有点编程常识也能让人明白,其实也不是写什么程序都那么难,大不了请人帮你写呗。
7.1 编程语言的基本概念 116
7.2 第一个JavaScript程序 117
7.3 第二个JavaScript程序 119
7.4 循环 121
7.5 条件 122
7.6 库和接口 124
7.7 JavaScript怎么工作 125
软件部分小结 127
第三部分 通信
几千年前,人们就曾通过善于长跑的人传递消息。公元前490年,费迪皮迪兹从马拉松战场奔跑了42公里到达雅典,把打败波斯人的胜利消息传递给了雅典人。不幸的是,跑到雅典之后,他上气不接下气地说完“庆祝吧,我们胜利了”之后就死了(至少传说里是这么讲的)。
第8章 网络 135
电话网作为一个覆盖全球的大型网络,从一开始只传送语音,到后来同时传输语音和可观的数据,为人类做出了贡献。大约有近20年的时间,人们都是通过电话网把家用计算机接入互联网的。
8.1 电话与调制解调器 136
8.2 有线和DSL 136
8.3 局域网和以太网 138
8.4 无线网络 141
8.5 手机 144
8.6 小结 147
第9章 互联网 149
简单算一下就会发现,IPv4地址只有大约43亿个,甚至还不够地球上每人分一个。因此,按照人类使用的通信服务数量的增长势头,这些IPv4地址迟早会被耗光。实际情况比这种“危言耸听”更糟糕,因为IP地址是按块划分的,这样用起来就没有理论上那么有效率。
9.1 互联网概述 150
9.2 域名和地址 153
9.3 路由 157
9.4 协议 159
9.5 高层协议 162
9.6 带宽 172
9.7 压缩 173
9.8 错误检测和校正 176
9.9 小结 177
第10章 万维网 179
万维网的诞生可以追溯到1989年。当时,在日内瓦附近的欧洲核子研究中心工作的英国物理学家蒂姆?伯纳斯?李,为便于通过互联网共享科学文献和研究结果而设计了一套系统,以及一个只能用文本模式查看可用资源的客户端。这套系统在1990年投入使用。说来惭愧,我1992年10月还亲眼见过有人使用它,可当时并没觉得它有那么好,也根本没想到6个月后诞生的第一个图形界面浏览器会改变世界。瞧我这眼光!
10.1 万维网如何工作 180
10.2 HTML 182
10.3 表单 183
10.4 cookie 184
10.5 动态网页 186
10.6 网页之外的动态内容 189
10.7 病毒和蠕虫 190
10.8 万维网安全 192
10.9 密码术 201
10.10 小结 208
第11章 数据、信息和隐私 211
隐私常常就是安全的同义词。至少对每个个体而言,如果自己的生活信息被传播得随处可见,那怎么会让人感觉安全无忧呢?特别是互联网,它对个人安全已经产生了重大影响。这种影响更多体现在财务风险而非人身安全方面。因为互联网让人们从各种来源收集和整理信息变得异常容易,从而为电子入侵大开方便之门。
11.1 搜索 212
11.2 跟踪 216
11.3 数据库、信息与聚合 221
11.4 隐私失控 224
11.5 云计算 225
11.6 小结 230
第12章 结束语 231
最后,读者诸君务必牢记一点,无论今天的技术多么千变万化,人是不变的。无论从哪方面来看,现代的人类与几千年前的人类并没有太大区别。
注解 236
词汇表 242
索引 253
版权声明 256