开发者社区> 华章计算机> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

简介: 就在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章 后记
没有意识的机器
智能机器
架构和算法
经验思维
一个崭新的机器时代来临
我们的思维方式正在转变
设计的核心性
各章概要
注释
参考文献
索引

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
10057
文章
0
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载