《伟大的计算原理》一导读

简介: 就在70年前,除了少数专家之外,没有人听说过计算机。现在,计算机、软件和网络无处不在。在地球上的任何地方,它们都以更快的发展速度给我们的生活带来了各种各样的好处。


image

前 言

就在70年前,除了少数专家之外,没有人听说过计算机。现在,计算机、软件和网络无处不在。在地球上的任何地方,它们都以更快的发展速度给我们的生活带来了各种各样的好处。
在这么短的几十年中,我们学会了设计和建造如此规模的系统,这真是一件令人吃惊的事。如今,通过支持大规模合作,计算技术使得知识工作能够自动化,同时也在不断扩大生产力。第二次机器革命正扑面而来1。这是如何实现的?是什么样的伟大思想使这一切成为可能?
计算机给我们带来好处的同时也带来忧虑。计算机带来的自动化是否会使很多工人失业?计算机是否会成为终极监督工具而使我们失去隐私?计算机是否会发展出超越人类的智能?计算机能做的事情会有限制吗?
我们相信,理解计算的原理和法则可以帮助人们理解计算是如何完成如此之多的工作的,并消除他们的忧虑。为此我们写了这本书,书中介绍了关于计算的一些最重要的原理,并以任何对计算有一定了解的人都能理解的方式呈现。
计算机科学(computer science)不只是设计计算设备的工程领域,它是一门关于信息处理的科学。计算受科学原理和法则支配,这些原理和法则告诉我们计算机能做什么、不能做什么。信息的法则揭示了根据物理法则无法直接得出的新的可能性和限制。专家们赋予计算机许多计算科学(computing science)告诉我们不可能拥有的能力,同时,这些专家又低估了计算机真正的能力。
计算机科学与很多其他领域相互交叉。许多科学与工程领域都有计算(computational)分支,如计算物理、计算化学、生物信息学、数字化产品设计与制造、计算社交网络、计算心脏病学等2。各层次的教育者正努力在他们拥挤的课程表中加入计算相关的课程,以保证课程体系的先进性。但仍有很多中学由于缺少计算机科学方面的教师而不能开设计算机课程。在商业领域,诸如“大数据”“云计算”“网络安全”等热门词汇也散发出共同的信号,期望“计算原理”在数据管理、分布式计算、信息保护中发挥作用。
一直以来,人们把计算看作一个按照摩尔定律高速发展的技术领域3。而我们的观点有所不同,我们相信计算更应该被描述为一个科学领域,具有跨越所有计算技术以及人工或自然的信息处理的基本原理。我们需要一种新的方法来刻画计算。就像望远镜之于天文学、显微镜之于生物学,计算机是计算的工具,而非计算的研究对象。
本书的重要原理框架(great principles framework)就是这样一种新的方法。它将计算原理分为6个类别:通信、计算、协作、记忆(存储)、评估和设计。计算原理是指用来指导或约束我们如何操纵物质和能量来进行计算的声明。计算原理可以是:(1)重现,包括描述可重复的因果关系的定律、过程及方法;(2)行为准则。局部性原理(locality principle)就是重现的一个例子:每一个计算在一定的时间间隔内,其对数据的访问都聚集在一个小的子集里。行为准则的一个例子就是网络程序员将协议软件划分为多个层次。所有这些原理的目的,都是希望通过增进理解和降低复杂性从而得到良好的设计。
每种计算技术都利用了这些类别的原理。这个框架是广泛和全面的,覆盖了计算的每个部分,包括算法、系统和设计。
从事计算工作的人员形成了许多计算领域(computing domain)——实践社区,如人工智能、网络安全、云计算、大数据、图形学以及科学计算(computational science)等。这些领域都专注于推进领域向前发展并与其他社区互动,它们既从计算原理中获益,又受其约束。没有这些计算领域的原理框架是不完整的。
由于这6个类别过于庞大,我们决定将其所覆盖的范围分成11个更容易管理的模块,就像你在目录中看到的那样。关于这一点,我们将在第1章中详细说明。
从机器到通用的数字化
计算的机器是早期计算领域的关注中心(从20世纪40年代到20世纪60年代)。计算被看作机器执行复杂演算、解方程、破译密码、分析数据及管理业务流程的行为。那时的先驱们将计算机科学定义为研究以计算机为中心的各种现象。
然而,这些年来,这一定义变得越来越没有意义。20世纪80年代的科学计算运动认为,计算是除了传统的理论和实验之外的一种新的做科学研究的方法。他们使用“计算思维”(computational thinking)这个术语作为研究和问题求解的思维训练,而不是作为建造计算机的方法。十年之后,一些领域的科学家开始发现各自领域内的自然信息处理,其中包括生物学(DNA翻译)、物理学(量子信息4)、认知科学(脑力过程)、视觉(图像识别)和经济学(信息流)。计算的重点从机器转变到信息处理,包括人工信息和自然信息。
现在,随着几乎所有事物的数字化,计算进入了人们的日常生活,包括求解问题的新方法,艺术、音乐、电影的新形式,社交网络,云计算,电子商务,以及新的学习方法等。用计算作比喻成为日常语言中的必要组成部分,比如“我的软件有反应了”或“我的大脑崩溃了需要重启”这样的表达方式。
为了应对这些变化,各大学一直都在设计新的基于原理的方法来开展关于“计算”的教学。华盛顿大学是这方面的先驱之一,它开发了关于熟练掌握信息技术的一门课程和教材,目前已经在高中和大学中广泛使用,以帮助学生学习并应用基本计算原理5。教育考试基金会(Educational Testing Foundation)与美国国家自然科学基金会(National Science Foundation)合作,开发了一门新的基于计算原理的先修课程6。现在很多人使用“计算思维”这个词,指的是在很多领域和日常生活中使用计算原理,而不仅局限于科学计算7。
随着计算领域的日趋成熟,它吸引了其他领域的众多追随者。我们知道有16本书是为感兴趣的非专业人员来解释计算的各个方面8。大部分书关注的只是单个部分的内容,如信息、编程、算法、自动化、隐私以及互联网原理等。本书则将这个领域作为一个整体来看待,给出所有各部分如何组合在一起的系统叙述。读者会发现在所有这些部分的背后是一套连贯的原理。
根据教授从其他专业转到计算机科学的研究生的经验,我们发现对于初学者来说,原理框架比技术框架更容易理解。当早期核心技术很少的时候,用技术思想的观点来描述该领域是一种好方法。1989年,美国计算机协会(Association for Computing Machinery,ACM)列出了9大核心技术。而在2005年,ACM列出了大约14种,到了2013年,则有约18种。本书的6类原理框架并不是重新定义计算的核心知识,但它确实提供了一种看待该领域并降低其表面复杂性的新方式。

目 录

第1章  作为科学的计算

[计算的范型](https://yq.aliyun.com/articles/110407)
[计算的重要原理](https://yq.aliyun.com/articles/110421)
[计算在科学中的位置](https://yq.aliyun.com/articles/110423)
[本书的关注点](https://yq.aliyun.com/articles/110426)
[总结](https://yq.aliyun.com/articles/110429)
[致谢](https://yq.aliyun.com/articles/110434)

第2章  计算领域

[领域和基本原理](https://yq.aliyun.com/articles/110451)
[信息安全](https://yq.aliyun.com/articles/110457)
[人工智能](https://yq.aliyun.com/articles/110467)
[云计算](https://yq.aliyun.com/articles/110473)
[大数据](https://yq.aliyun.com/articles/110478)
[总结](https://yq.aliyun.com/articles/110480)

第3章  信息

[信息的表示](https://yq.aliyun.com/articles/110489)
[通信系统](https://yq.aliyun.com/articles/110495)
[信息的测量](https://yq.aliyun.com/articles/110506)
[信息的转换](https://yq.aliyun.com/articles/110510)
[交互系统](https://yq.aliyun.com/articles/110516)
[解决悖论](https://yq.aliyun.com/articles/110518)
[信息和发现](https://yq.aliyun.com/articles/110519)
[总结](https://yq.aliyun.com/articles/110521)
[致谢](https://yq.aliyun.com/articles/110523)

第4章 机器
机器
可以计算的机器
程序及其表示
栈式计算机:计算机系统的一种简单模型
过程与异常
选择的不确定性
结论
第5章 程序设计
程序、程序员和程序设计语言
程序设计实践
程序中的错误
自动翻译
总结
第6章 计算
简单问题
实例1 简单的线性搜索
实例2 二分搜索
实例3 排序
实例4 矩阵乘法
指数级困难问题
实例5 所有的十位数
实例6 背包问题
实例7 参观所有城市
实例8 合数分解
计算困难但容易验证的问题
NP完全
不可计算问题
总结
第7章 存储
存储系统
存储器的基本使用模型
命名
映射
虚拟存储
共享
能力
认证
层级结构中的定位
为什么局部性是基础
结论
第8章 并行
并行计算的早期方向
并行系统的模型
协作的顺序进程
功能系统
事件驱动的系统
MapReduce系统
协作的顺序进程
功能系统
结论
第9章 排队
排队论遇上计算机科学
用模型计算和预测
服务器、作业、网络和规则
瓶颈
平衡方程
ATM
电话交换机
分时系统
用模型来计算
结论
第10章 设计
什么是设计
软件系统的准则
需求
正确性
容错性
时效性
适用性
设计原理、模式和示意
原理
模式
示意
软件系统的设计原理
层级式聚合
封装
级别
虚拟机
对象
客户端与服务器
总结
第11章 网络
弹性网络
数据包交换
互联网络协议
传输控制协议
客户端与服务器
域名系统
网络软件的组织结构
万维网
网络科学
致谢
第12章 后记
没有意识的机器
智能机器
架构和算法
经验思维
一个崭新的机器时代来临
我们的思维方式正在转变
设计的核心性
各章概要
注释
参考文献
索引

相关文章
|
6月前
|
监控 Java Serverless
函数计算的基本概念
函数计算的基本概念
47 0
|
2月前
|
弹性计算 人工智能 Serverless
函数计算基本概念
函数计算基本概念
30 8
|
3月前
|
算法 搜索推荐 Java
图计算中的PageRank算法是什么?请解释其作用和计算原理。
图计算中的PageRank算法是什么?请解释其作用和计算原理。
21 0
|
3月前
|
分布式计算 并行计算 算法
图计算中的性能优化有哪些方法?请举例说明。
图计算中的性能优化有哪些方法?请举例说明。
18 0
|
8月前
|
存储 SQL 分布式计算
分布式图计算如何实现?带你一窥图计算执行计划
分布式图计算如何实现?带你一窥图计算执行计划
分布式图计算如何实现?带你一窥图计算执行计划
|
人工智能 运维 架构师
如何用 7 分钟玩转函数计算?
如何用 7 分钟玩转函数计算?
如何用 7 分钟玩转函数计算?
|
人工智能 运维 架构师
如何用 7 分钟玩转函数计算?
阿里云是国内最早提供 Serverless 计算服务的云厂商。2017 年推出的函数计算 FC 是一款 FaaS 产品,这是一种以事件驱动为核心的全托管计算服务,用户只需编写代码并上传,函数计算就会自动准备好计算资源,以弹性、可靠的方式运行代码,并提供完整的可观测能力,大幅简化开发运维过程。
如何用 7 分钟玩转函数计算?
|
存储 人工智能 监控
“晕乎乎的概念”:阿里云函数计算的“应用”又是个啥
为什么阿里云函数计算发布了这么多功能,只有少数的功能会伴随着体验活动一起来做运营?那么这个“应用”到底是何方神圣?他和现在“服务”,“函数”有啥关系?
“晕乎乎的概念”:阿里云函数计算的“应用”又是个啥
|
C# 存储
c#位运算基本概念与计算过程
c#位运算基本概念与计算过程前言一些非常基础的东西,在实际工作中没有用到、很少用到。一旦遇到,又不知所云。最近遇到一个问题,把一个int16(short) 、两个bool变量整合成一个int32(int),当听到这个要求时,我第一反应是不是需求弄错了,后来才发现是自己才疏学浅,这里就需要位运算相关的概念。
1447 0
|
算法 程序员
软件优化的原理与实践系列之一向量化计算
向量化计算 软件优化的原理与实践系列之一 前言 用过MATLAB仿真语言的同学,都有这样的经验。要尽量多用向量化运算,而不要自己手写循环语句,否则代码的执行效率会相当低下。如果你熟悉python,涉及到数值计算的时候,也要尽量的调用成熟的数值计算的库,比如numpy,而不是自己用循环去实现。一个众所周知的理由是,别人成熟的库已经经过了高度的优化,我们没有必要重复造轮子。 事实上,还有另外一
1358 0

热门文章

最新文章