我们世界中的计算机——从大师视角诠释计算常识

news2024/9/23 18:47:55

计算机和通信系统,以及由它们所实现的许多事物遍布我们周围。其中一些在日常生活中随处可见,比如笔记本电脑、手机和互联网。今天,在任何公共场所,都会看到许多人在使用手机查询交通路线、购物以及和朋友聊天。与此同时,大部分计算机世界却是隐形的,比如电子设备、汽车、火车、飞机、电力系统和医疗设备中的计算机。这种几乎不可见的基础设施对我们产生了巨大的影响,如果没有这些在后台运行的系统,我们所处的现代社会将会坍塌。大多数情况下,它们确实在正确地执行任务,一切运转正常。但我们会不时得到令人不安的警示,这发生在当这些系统出现问题时,或当我们听到各种系统正在悄悄收集、共享,甚至滥用这些数据时。
在这里插入图片描述

普林斯顿计算机公开课(原书第2版)

[美]布莱恩·W. 柯尼汉(Brian W. Kernighan) 著

从大师视角诠释计算常识做一个穿行于数字世界与现实世界的智者

本书篇幅不大,但对计算机和通信系统如何工作进行了详细和透彻的解释。本书展示了当今的计算和通信世界是如何运作的,从硬件到软件,再到互联网和Web。本书也讨论了新技术带来的社会、政治和法律问题(虽然主要是从美国的角度),由此你可以理解我们所面临的难题,并理解为了解决它们所必须做出的权衡。

本书作者布莱恩·W.柯尼汉(Brian W. Kernighan)教授是计算机领域的著名学者和先驱。关于布莱恩教授,人们耳熟能详的一个传奇是,他与C语言的发明者丹尼斯·里奇(Dennis Ritchie)合著的The C Programming Language一书被奉为C程序设计语言的经典之作。之后,许多编程语言教程中的第一个示例都是打印出一句“Hello,World!”,就像在用编程语言这一计算机语言向世界问好,这个示例就是布莱恩教授首创的。布莱恩教授在大名鼎鼎的贝尔实验室工作了30年左右,见证了UNIX这一伟大的操作系统的诞生,并做出了卓越贡献。他还与人合作完成了著名的图划分问题和旅行商问题的算法,也是AWK和AMLP两门编程语言的设计者之一。其中任何一项成就都足以让人倍感荣耀,但布莱恩教授的成就远不止这些。在这之后他任职于普林斯顿大学计算机科学系,并开设了一门名为“我们世界中的计算机”(Computers in Our World)的课程,介绍计算机、通信、互联网、数据等方面的核心知识和其中的隐私、安全等问题。这本书便是这门课程使用的教学材料。

布莱恩教授作为计算机专业领域和写作方面的世界级大师,其作品自然值得精读。本书一如布莱恩教授的其他著作,行文通俗易懂而又严谨,将构建数字世界的关键技术和思想娓娓道来,并与实际应用以及我们的生活关联起来,尤其关注这些技术带来的伦理问题。全书读起来轻松愉快,令人受益匪浅。

越来越多的人已离不开数字世界这一现实世界的“平行世界”,“人机共生,虚实交融”的数字化生存将不可逆转。互联网、人工智能、虚拟现实、区块链、元宇宙这些数字化技术会把人们的生活塑造成什么样子,以及可能把人类命运带向何方,无人可以准确预测,哪怕是相关领域中的专家也众说纷纭。但我想,数字世界带给我们的思考总是有益的。比如,一个比特可以取值0和1,这些比特之间的简单计算又可以产生新的编码,由此竟然就可以构建出复杂的数字世界。这不由得让我们联想到中国古代哲学提出的“道生一, 一生二, 二生三, 三生万物”,以及达·芬奇所说的“简单是终极的复杂”。联系到实际的计算形态,现在流行的深度学习也是从无数小的简单神经元构建出来的。这是否也会对我们的大脑是如何“涌现”出智能的这一问题给出一些启示?我们从现实世界抽象出数字世界,又从数字世界中得到启发并回过头来指导现实世界。由此我们看到,数字世界有助于“认识你自己”,而随着人工智能等技术的发展,重新思考这一几千年前提出的哲思变得刻不容缓。所以,技术会把人类带向何方,取决于人们从数字世界中获得多少智慧和有益的反思。这本书会带给我们很多这方面的智识。

内容简介

从1999年开始,每年秋天,普林斯顿大学都有一门大受欢迎的计算机课程。Kernighan教授正是这门课程的主讲,他从科学家视角诠释的计算常识,使来自各个专业的学生都深深受益。

基于课程讲义,Kernighan教授撰写了D is for Digital(2011)和本书第1版(2017),而今,这本书再度全面升级。书中沿用简洁易懂的风格来讲解硬件、软件、通信和数据知识,并更新了大量时事案例来讨论随着疫情的变化和在线工作的增加而带来的隐私和安全问题。这使得本书不仅成为每个人畅游数字世界的科普指南,更折射出作者的人文关怀和思想锋芒。

作者简介

布莱恩·W. 柯尼汉(Brian W. Kernighan)
计算机科学家,普林斯顿大学教授,曾任职于贝尔实验室计算机科学研究中心(1969~2000)。他与C语言之父Dennis Ritchie共同撰写的《C程序设计语言》是编程语言书籍中的典范,对世界各地的程序员产生了深远的影响。他还是AWK语言和AMPL语言的发明人,并参与了UNIX等众多系统的开发。
译者简介

戴开宇 复旦大学计算机科学技术学院教师、硕士生导师,复旦大学教师教学发展中心特邀研究员。博士毕业于上海交通大学计算机应用专业。主要研究方向为现代教育信息科学与技术、Web技术、网络虚拟环境、智能技术等。入选全国首届“高校计算机专业优秀教师奖励计划”。长期讲授“程序设计”等课程,坚持通专结合的教学理念,多门课程被认定为上海市一流本科课程、上海市本科重点课程。曾获复旦大学校级教学成果奖一等奖,上海市教学成果奖二等奖。

专家推荐

世界顶尖的作者,简洁明了的内容,邀你共同探索数字世界的奥妙,值得人手一本!——Eric Schmidt Google公司前CEO、Alphabet公司前执行董事长

关于技术所扮演的角色,书中的讨论尽显人文关怀,不愧为大家之作。无论是计算常识,还是技术与生活的关系,这些都将在很长一段时间内相互作用并影响我们的世界。
——Steve Mansfield-Devine,Network Security期刊

在作者笔下,计算机和因特网变得不再神秘,机器里的复杂芯片、新闻中的热点事件、全球化的技术创新,这些统统融为一体,每个读者都将受益匪浅。
——Harry Lewis,Blown to Bits的作者

每天都在和电脑打交道的我们,到底需要懂多少电脑知识?读这本书就够了!它不仅能帮我们轻松了解硬件、编程、算法和网络知识,还讨论了与每个人切身相关的隐私、监管和安全问题,有趣又有用。
——John MacCormick,狄金森学院

这是所有人都能看懂的计算机和电子通信常识,涵盖的主题非常丰富,读起来更是自然流畅。不论你是外行还是专家,都强烈推荐!
——Bryan Respass,博根郡高中

目录


中文版序

译者序

前言

引言 …… 1

第一部分 硬件

第1章 什么是计算机 …… 16

1.1 逻辑结构 …… 20

1.1.1 处理器 …… 21

1.1.2 主存储器 …… 22

1.1.3 二级存储器 …… 24

1.1.4 其他 …… 27

1.2 物理结构 …… 28

1.3 摩尔定律 …… 33

1.4 小结 …… 352章 比特、字节和信息的表示 …… 38

2.1 模拟和数字 …… 39

2.2 模数转换 …… 41

2.2.1 图像的数字化 …… 41

2.2.2 声音的数字化 …… 43

2.2.3 电影的数字化 …… 47

2.2.4 文本的数字化 …… 48

2.3 比特、字节和二进制 …… 49

2.3.1 比特 …… 50

2.3.2 2的幂和10的幂 …… 52

2.3.3 二进制数值 …… 52

2.3.4 字节 …… 55

2.4 小结 …… 583章 深入了解处理器 …… 60

3.1 玩具计算机 …… 61

3.1.1 第一个玩具程序 …… 62

3.1.2 第二个玩具程序 …… 64

3.1.3 分支指令 …… 66

3.1.4 内存中的表示 …… 70

3.2 真实的处理器 …… 71

3.3 缓存 …… 75

3.4 其他类型的计算机 …… 77

3.5 小结 …… 80

硬件部分小结

第二部分 软件

第4章 算法 …… 89

4.1 线性算法 …… 91

4.2 二分查找 …… 94

4.3 排序 …… 96

4.4 难题和复杂性 …… 102

4.5 小结 …… 1075章 编程与编程语言 …… 109

5.1 汇编语言 …… 110

5.2 高级语言 …… 112

5.3 软件开发 …… 123

5.3.1 库、接口和开发工具包 …… 124

5.3.2 bug …… 126

5.4 知识产权 …… 130

5.4.1 商业秘密 …… 131

5.4.2 商标 …… 131

5.4.3 版权 …… 131

5.4.4 专利 …… 133

5.4.5 许可 …… 135

5.5 标准 …… 138

5.6 开源软件 …… 140

5.7 小结 …… 1436章 软件系统 …… 144

6.1 操作系统 …… 145

6.2 操作系统是如何工作的 …… 154

6.2.1 系统调用 …… 155

6.2.2 设备驱动程序 …… 156

6.3 其他操作系统 …… 158

6.4 文件系统 …… 159

6.4.1 二级存储文件系统 …… 161

6.4.2 删除文件 …… 165

6.4.3 其他文件系统 …… 167

6.5 应用程序 …… 170

6.6 软件层次 …… 173

6.7 小结 …… 1767章 学习编程 …… 178

7.1 编程语言的基本概念 …… 180

7.2 第一个JavaScript程序 …… 182

7.3 第二个JavaScript程序 …… 184

7.4 循环和条件 …… 186

7.5 JavaScript库和接口 …… 190

7.6 JavaScript是如何工作的 …… 192

7.7 第一个Python程序 …… 193

7.8 第二个Python程序 …… 195

7.9 Python库和接口 …… 197

7.10 Python是如何工作的 …… 201

7.11 小结 …… 202

软件部分小结

第三部分 通信

第8章 网络 …… 215

8.1 电话与调制解调器 …… 216

8.2 有线电视和DSL …… 217

8.3 局域网和以太网 …… 220

8.4 无线网络 …… 224

8.5 手机 …… 227

8.6 带宽 …… 232

8.7 压缩 …… 233

8.8 错误检测与纠正 …… 237

8.9 小结 …… 2399章 互联网 …… 241

9.1 互联网概述 …… 243

9.2 域名和地址 …… 247

9.2.1 域名系统 …… 249

9.2.2 IP地址 …… 250

9.2.3 根服务器 …… 252

9.2.4 注册你自己的域名 …… 253

9.3 路由 …… 254

9.4 TCP/IP …… 257

9.4.1 互联网协议 …… 259

9.4.2 传输控制协议 …… 260

9.5 高层协议 …… 263

9.5.1 Telnet和SSH协议:远程登录 …… 264

9.5.2 SMTP:简单邮件传输协议 …… 265

9.5.3 文件共享和点对点协议 …… 268

9.6 互联网上的版权问题 …… 270

9.7 物联网 …… 273

9.8 小结 …… 27510章 万维网 …… 279

10.1 万维网是如何工作的 …… 281

10.2 HTML …… 283

10.3 cookie …… 287

10.4 动态网页 …… 289

10.5 网页之外的动态内容 …… 292

10.6 病毒、蠕虫和木马 …… 293

10.7 Web安全 …… 297

10.7.1 对客户端的攻击 …… 297

10.7.2 对服务器的攻击 …… 305

10.7.3 对传输中信息的攻击 …… 308

10.8 自我防御 …… 309

10.9 小结 …… 314

第四部分 数据

第11章 数据和信息 …… 319

11.1 搜索 …… 321

11.2 跟踪 …… 327

11.3 社交网络 …… 338

11.4 数据挖掘和聚合 …… 343

11.5 云计算 …… 347

11.6 小结 …… 35412章 人工智能和机器学习 …… 356

12.1 历史背景 …… 358

12.2 经典机器学习 …… 360

12.3 神经网络和深度学习 …… 364

12.4 自然语言处理 …… 368

12.5 小结 …… 37213章 隐私和安全 …… 376

13.1 密码学 …… 378

13.1.1 密钥加密 …… 381

13.1.2 公钥加密 …… 383

13.2 匿名 …… 390

13.2.1 Tor以及Tor浏览器 …… 391

13.2.2 比特币 …… 395

13.3 小结 …… 39814章 接下来会发生什么 …… 402

注解 …… 410

术语表 …… 430

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/658681.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【大数据】大数据相关概念

文章目录 大数据:一种规模大到在获取、存储、管理、分析方面大大超出了传统数据库软件工具能力范围的数据集合,具有海量的数据规模、快速的数据流转、多样的数据类型以及价值密度四大特征。Hadoop:是一个能够对大量数据进行分布式处理的软件框…

15-3.自定义组件的生命周期函数

目录 1 组件自身的生命周期函数 1.1 使用lifetimes声明生命周期函数 1.2 不使用lifetimes声明生命周期函数 2 组件所在页面的生命周期函数 1 组件自身的生命周期函数 created 组件实例刚刚被创建后执行,可以理解为 html模板刚刚搞好attached 组件被放入节…

万物的算法日记|第六天

笔者自述: 一直有一个声音也一直能听到身边的大佬经常说,要把算法学习搞好,一定要重视平时的算法学习,虽然每天也在学算法,但是感觉自己一直在假装努力表面功夫骗了自己,没有规划好自己的算法学习和总结&am…

DJ4-2 数据报网络和虚电路网络

目录 一、连接和无连接服务 二、数据报网络 1、数据报网络的转发表 2、数据报网络的特点 三、虚电路网络 (Virtual Circuits)* 1、虚电路网络的工作方式 2、虚电路网络的特点 一、连接和无连接服务 任何网络中的网络层只会提供两种服务之一,不会同时提供 数…

Mysql数据库之事务(山高水远,他日江湖再见)

文章目录 一、事务的概念二、事务的ACID特点1.原子性(Atomicity)2.一致性(Consistency)3.隔离性(lsolation)4.持久性(Durability) 三、并发访问表的一致性问题和事务的隔离级别1.并发访问表的一…

融合模型stacking14条经验总结和5个成功案例(互联网最全,硬核收藏)_机器学习_人工智能_模型竞赛_论文参考

我看了很多关于融合模型stacking文章,很多作者倾向于赞美融合模型stacking,对其缺点轻描淡写,这容易误导初学者。一叶障目就是这意思。 我的很多学员喜欢用融合模型作为论文或专利创新点,这是一个热门技术。 最近有个同学在论文…

设计模式之单例模式笔记

设计模式之单例模式笔记 说明Singleton(单例)目录单例模式之饿汉式-静态成员变量写法测试类 单例模式之饿汉式-静态代码块写法测试类 单例模式之懒汉式-线程不安全写法和线程安全写法测试类 单例模式之懒汉式-双重检查锁方式(推荐使用的方式)单例模式之懒汉式-静态内部类方式(推…

Mysql数据库之存储引擎(羡慕她人,不如提升自己)

一、存储引擎概念 MySQL中的数据用各种不同的技术存储在文件中,每一种技术都使用不同的存储机制、索引技巧、锁定水平并最终提供不同的功能和能力,这些不同的技术以及配套的功能在MySQL中称为存储引擎。 存储引擎是MySQL将数据存储在文件系统中的存储方…

ELK日志收集系统简述

一、概述 (一)ELK由三个组件构成 ELK是三个开源软件的缩写,分别是Elasticsearch、Logstash、Kibana ELK 架构基本组成 (二)作用 1、日志收集 2、日志分析 3、日志可视化 (三)为什么使用EL…

计网之应用层

因特网协议概述 常用协议应用层HTTP(超文本传输协议)、FTP(文件传输协议)、SMTP(简单邮件传输协议)、DNS(域名系统)、DHCP(动态主机配置协议)、SNMP&#xff…

15-6.自定义组件的代码共享

在微信小程序中使用 behaviors 进行代码共享,功能类似于vue的mixins 每个behavior可以包含一组属性、数据、生命周期函数和方法 每个组件可以引用多个behavior,behavior也可以引用其他的behavior 目录 1 创建behavior 2 使用behavior 3 behavio…

机器学习融合模型stacking14条经验总结和5个成功案例(互联网最全,硬核收藏)

我看了很多关于融合模型stacking文章,很多作者倾向于赞美融合模型stacking,对其缺点轻描淡写,这容易误导初学者。一叶障目就是这意思。 我的很多学员喜欢用融合模型作为论文或专利创新点,这是一个热门技术。 最近有个同学在论文…

MySQL:七种 SQL JOINS 的实现(图文详解)

MySQL:7种SQL JOINS的实现 前言一、图示表示二、代码举例1、INNER JOIN(内连接)2、LEFT JOIN(左连接)3、RIGHT JOIN(右连接)4、OUTER JOIN(全连接)5、LEFT EXCLUDING JOI…

微信小程序入门学习02-TDesign中的自定义组件

目录 1 显示文本2 自定义组件3 变量定义4 值绑定总结 我们上一篇讲解了TDesign模板的基本用法,如何开始阅读模板。本篇我们讲解一下自定义组件的用法。 1 显示文本 官方模板在顶部除了显示图片外,还显示了一段文字介绍。文字是嵌套在容器组件里&#xf…

数据库的操作

前言 在之前的文章中,我们已经了解了什么是数据库,以及为什么有数据库,和数据库有什么作用,有了这些宏观概念之后,本章为大家进一步详细介绍对于数据库在Linux上如何具体操作。 1.创建数据库 1.1创建数据库语法 语法…

读书:《敏捷软件开发工具----精益开发方法》

《敏捷软件开发工具----精益开发方法》(Lean Software Development: An Agile Toolkit)由Mary Poppendieck和Tom Poppendieck合著,2003年出版,尽管已经有20个年头了,但书中的理念和方法仍然具有很高的实践价值&#xf…

SpringBoot2概览-运维实用篇

知识点 使用SpringBoot提供的maven插件可以将工程打包成可执行jar包然后执行&#xff0c;即java –jar xxx.jar&#xff0c;下面的图是MANIFEST.MF文件的内容&#xff1a; <build><plugins><plugin><groupId>org.springframework.boot</groupId>…

【MySQL】如何速通MySQL(3)

&#x1f4cc;前言&#xff1a;本篇博客介绍如何速通MySQL的第二篇&#xff0c;主要介绍Mysql中主要的基础的入门&#xff0c;学习MySQL之前要先安装好MySQL&#xff0c;如果还没有安装的小伙伴可以看看博主前面的博客&#xff0c;里面有详细的安装教程。或者看一下下面这个链接…

136-nago

PEID查看你程序有没有壳&#xff0c;发现是汇编语言程序 打开程序&#xff0c;我们发现程序是由Nag提示窗口的。 我们先进行去Nag提示。 进入回调函数&#xff0c;进行分析 保存修改到文件。 重新打开文件&#xff0c;我们发现没有Nag窗口。 再次使用OD进行附加进行分析。…

项目中遇到的问题总结(四)

GateWay和Nginx的相同点和不同点在哪里&#xff1f; Gateway 和 Nginx 都是常见的反向代理服务器&#xff0c;它们的相同点和不同点如下&#xff1a; 相同点&#xff1a; 都可以作为反向代理服务器&#xff0c;接收来自客户端的请求并转发到后端服务器进行处理。 都支持负载均…