《伟大的计算原理》一导读-阿里云开发者社区

开发者社区> 华章出版社> 正文

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

简介:

9bc2455500ad9b71d8cef678665a39f4ea92cd38


前 言

Great Principles of Computing

就在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类原理框架并不是重新定义计算的核心知识,但它确实提供了一种看待该领域并降低其表面复杂性的新方式。

起源和目标

我们经常被问及6类原理的起源。20世纪90年代,本书作者之一Peter J. Denning在乔治梅森大学(George Mason University)开始这个项目。他从众多的同事那里收集了一个可能的原理陈述的列表。他发现了7个自然的群集,并将它们称为通信、计算、记忆(存储)、协作、评估、设计和自动化9。当组织本书的时候,我们意识到自动化并不是一个操纵物质和能量的类别,而是人工智能计算领域的重点。在本书中,我们从类别集合中删除了自动化,并将其包含在计算领域中。

这6个类别并不是把计算的知识空间划分成分离的片段。它们就像六角亭的窗户,每一扇窗户都以独特的方式呈现出内部空间,但同一件事物可以从多个窗户看到。例如,互联网有时以数据通信的方式、有时以协作的方式、有时以记忆(存储)的方式被看到。

这组类别有一个类别数目可控的框架,从而满足了我们的目标。虽然计算技术的列表还将继续增长,计算领域的集合也会扩大,但是类别的数目在较长时间内应该会保持稳定。

这本书是关于计算机科学的一个整体视角,注重最深入、最广泛的原理,即“宇宙普适的”原理(cosmic principle)10。本书将计算视作一种深层次的科学领域,其原理将影响包括商业和工业在内的其他每一个领域。

这本书是为所有想利用计算科学来达到其目标的人而设计的。受过科学教育的读者可以学到从算法到系统横跨整个领域的计算原理。而计算领域内的人,例如一个想要学习并行计算的程序员,可以找到这个巨大领域内不太熟悉的部分的概述。对于大学里学习诸如“计算机科学基础”课程的学生,本书可以帮助他们理解计算技术是如何影响他们的,例如网络和互联网如何使社交网络成为可能。初出茅庐的科学家、工程师和企业家可能在本书中找到一个面向整个计算机科学的科普型方法。


目 录

Great Principles of Computing

出版者的话

译者序

前言

第1章 作为科学的计算  

计算的范型  

计算的重要原理  

计算在科学中的位置  

本书的关注点  

总结  

致谢  

第2章 计算领域  

领域和基本原理  

信息安全  

人工智能  

云计算  

大数据  

总结  

第3章 信息  

信息的表示  

通信系统  

信息的测量  

信息的转换  

交互系统  

解决悖论  

信息和发现  

总结  

致谢  

第4章 机器  

机器  

可以计算的机器  

程序及其表示  

栈式计算机:计算机系统的一种简单模型  

过程与异常  

选择的不确定性  

结论  

第5章 程序设计  

程序、程序员和程序设计语言  

程序设计实践  

程序中的错误  

自动翻译  

总结  

第6章 计算  

简单问题  

实例1 简单的线性搜索  

实例2 二分搜索  

实例3 排序  

实例4 矩阵乘法  

指数级困难问题  

实例5 所有的十位数  

实例6 背包问题  

实例7 参观所有城市  

实例8 合数分解  

计算困难但容易验证的问题  

NP完全  

不可计算问题  

总结  

第7章 存储  

存储系统  

存储器的基本使用模型  

命名  

映射  

虚拟存储  

共享  

能力  

认证  

层级结构中的定位  

为什么局部性是基础  

结论  

第8章 并行  

并行计算的早期方向  

并行系统的模型  

协作的顺序进程  

功能系统  

事件驱动的系统  

MapReduce系统  

协作的顺序进程  

功能系统  

结论  

第9章 排队  

排队论遇上计算机科学  

用模型计算和预测  

服务器、作业、网络和规则  

瓶颈  

平衡方程  

ATM  

电话交换机  

分时系统  

用模型来计算  

结论  

第10章 设计  

什么是设计  

软件系统的准则  

需求  

正确性  

容错性  

时效性  

适用性  

设计原理、模式和示意  

原理  

模式 

示意 

软件系统的设计原理  

层级式聚合  

封装  

级别  

虚拟机  

对象  

客户端与服务器  

总结  

第11章 网络  

弹性网络  

数据包交换  

互联网络协议 

传输控制协议  

客户端与服务器  

域名系统  

网络软件的组织结构  

万维网  

网络科学  

致谢  

第12章 后记  

没有意识的机器  

智能机器  

架构和算法  

经验思维  

一个崭新的机器时代来临  

我们的思维方式正在转变  

设计的核心性  

各章概要  

注释  

参考文献  

索引  

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

分享:

华章出版社

官方博客
官网链接