从《计算机系统概论》谈一谈对计算机的认识(一)
【前言】
1.写这篇文章有一点小小的私心。现在的人大多已经掌握用计算机的方法,对其中的原理却一知半解。本文文字尽量浅显易懂,为想要了解计算机的读者们奉献基本的计算机知识体系。
2.本文的参考书是朱明放、盛小春、薛小锋编辑的书籍《计算机系统概论》,但是我将尽量追从书中文字而脱离书中文字。也就是说,内容会跟着这本教材的步伐走,却不会有太多语言上的重复。可仍然避免不了有一些专业的诠释我无法掌握,会拼凑一些引用和百科术语。
3.本文是科普!是读书简要!不要怀着一颗围观学术文章的心态看待。
4.文章写的杂。(一)出来了,以后还有二三四五六,真心伤不起。
【第一章-概述】
20世纪发明,21世纪成为千门万户的常用工具,计算机已经与我们的生活不可分离。计算机系统看似复杂而繁乱,却实则是一个包含很多小部件的一个大的整体。若要让计算机运行功能,则就要呼叫这些小的部件组织在一起,尽它们各自的微薄之力而营造更加壮大的力量。举一个简单的例子吧:我们就拿人体来说,其中包含了许多如神经系统、呼吸系统、循环系统等的基本系统,每一个系统本身没有很大的支撑我们生活的功能,但是组合在一起便形成了大自然最美妙的杰作。计算机系统也是如此,各个零碎的部分让它的整体功能堪称具有“完美性“。
计算机还有一个不为人知的秘密名字:便是它的全称 ———— 通用电子数字计算机。其中,每一个词都被创造者赋予了各自独特的意义,给这个机器添上了不同的色彩。

在《计算机系统概论》的第一章中,作者着重介绍了计算机的发展史,我觉得在一本学科性质的书中描述这一点是具有重大意义的。这令我想到了清代思想家和诗人龚自珍的一句话:“出乎史,入乎道,欲知大道,必先为史。”这句话的本意其实是:若想修得高明的治国安邦之法,就要借鉴学习历史。我在这里引用它,并不是为了指出治国的“大道”和计算机系统理论的相似之处,而是展望古今感叹人类对未知应该怀有态度的殊途同归。我们需借鉴古人的思想精粹,才能触碰到如今世界的边缘,这在人性事故中也同样适用。值得一提的是,计算机的历史看起来貌似短小而精悍,它的前身手动计算工具、机械式计算工具以及机电式计算工具却都有很早且延绵久远的历史。总体而言,按照百科上的诠释,计算工具的演化经历就如同地球上的生物一般,是“由简单到复杂、由低等到高等”的。接下来,我们将逐一介绍计算机发展的每一步。
追溯回原始社会,工具十分缺稀。在这种情况中,人类只好用手指来计数,正常人普遍有十根手指,这也是十进制计数法的由来。后来,在人类脑力的发展过程飞速前进的时候一些人意识到了用手指计算数字的局限性,于是便搜集出来许多更加方便、简单易着手的工具。最有名的莫过于绳子和石块,因为它们曾帮助人类解决了当时比较大的数字运算。但是真正意义上最原始的人造计算工具是中国古人创造的算筹。而第一次计算工具意义上的重大改革是算盘,与算筹一样也最先为我们的先人所使用。算盘就是在今天也受到中国政府的重视,一些学校甚至强制规定学生重新学习算盘的用法,拾起我们曾遗弃的先辈智慧。具体用法我就先不在这里介绍了。与此同时,在西方世界经过文艺复兴工业革命后,17世纪时逐渐推出了很多手动计算工具,比如英国数学家约翰·纳皮尔(John Napier)于1617年研制出的Napier除法器,以及英国数学家威廉·奥特雷德(William Oughtred)于1621年发明的圆形计算尺(它的另外一个名字叫做对数计算尺)。此后的一个世纪中这些手写工具得到了后人不断的完善和修改,直到最后甚至实现了加减乘除所有的基本运算和一些三角函数、指数函数、对数函数等的计算,将手动计算工具的发展推向历史的高峰。可这也意味着更新换代的时机将会到来,果然,“忽如一夜春风来”一般,机械式计算工具取代了这些需要人工操作的手动工具,迎来了新时代的曙光。
第一台登入人类历史舞台的机械式计算工具实际上是法国数学家帕斯卡在齿轮技术的基础上于1642年研制发明的,取名为帕斯卡加法器。说到帕斯卡,我想补充一些话题外的资料。大家应该都是从物理课本中认识到这位科学家的,想必对他的事迹都不陌生。坚信托里拆利“水银气压计“(目的是为了证明大气压的存在)的实验理论,帕斯卡在巴黎定居的时候曾反复不厌劳烦地为众人反复演示这个实验,让学术界完全信服了托里拆利实验所得结论的真实性和准确性。如果说托里拆利是思想的启发者,那么不尽人意的是他没有证明自己实验没有瑕疵,实在无法让所有人相信“大气压存在”这个结论。可是帕斯卡的确做了一位很好的思想传播者,将真相公布于民间并证明了这种思想确实无误,给后来的科学家指明了未照亮的路。从某些意义上来讲,这也许比托里拆利的所作所为更值得称赞。也正因为如此,压强单位帕(全称帕斯卡,符号Pa)是根据帕斯卡的名字来命名的。很遗憾的是,这位数学家和物理学家年仅39岁便英年早逝。1673年,德国数学家莱布尼兹(G.W Leibniz),那个曾经跟牛顿竞争微积分的创作智力成果权的人以帕斯卡加法器为基础发明研制了莱布尼兹四则运算器。这种运算器可以进行四则运算,而且在乘法的计算过程中运用到了一个为现在二进制结构铺垫的移位-加(shift-add)方法。跨越了将近两个世纪,1882年的时候英国数学家查尔斯·巴贝奇(Charles Babbage)发明出了一款差分机。这种差分机也是最早采用寄存器来储存数据的计算工具。然而,巴贝奇最惹人瞩目的成果却实他未曾制成的设计 —— 分析机,可以编入程序,是当时世界的一大突破,其间蕴含的思想有“划时代”意义。其中这个设计图稿上的机器元件由齿轮组成,动力由蒸汽提供。此后没有多少年的时间计算工具就又被推向了一个新的时代,有了最接近现代计算机的形态,也就是机电式计算工具。这种机电式计算工具采用机电技术取代纯机械装置。(所谓的机电技术,实际上就是说机械技术和电子技术的互相融合,取了这两种技术名称的首字合成了一个新的技术名称。)
到此为止,计算机前身的发展史就基本结束了。现在,我们将进入最重要的一段历史资料:电子计算工具(也就是计算机)的简史,并且会将它作为我们的一项重要内容来呈现。世界上第一台计算机叫做ENIAC。想必一开始读到这个名称一些人会觉得非常好奇,因为这是缩写单词不少的一个长传专业术语的简称。那么,它背后的完整意思到底是什么?经过一些研究后我发现ENIAC是Electronic Numberical Intergrator and Computer的首字母缩写,也就是说,是我们之前介绍过的计算机的专业名称——通用电子数字计算机去掉“通用”两字!ENIAC的发明者是美国普林斯顿大学的一些研究人员。时隔四年,有“计算机之父”之称的普林斯顿大学教授冯·诺依曼首次提出了EDVAC (Electronic Discrete Variable Computer)方案,其中有两个思想是以前的计算机从未有过的:便是(一)采用二进制和(二)储存程序这两个现在计算机有的基本结构和功能。这两种计算机一起并称为第一代计算机。可以说,冯·诺依曼为计算机设计的方式沿用至今,生生不息,造就了精华也打实了基础。
所以,人们普遍认为冯·诺依曼是计算机的创始人。
现在,考虑到大家还没有系统专业地学计算机,来简单科普一下计算机硬件和软件所经历的几代变更。





到今天为止,计算机系统结构设计仍然没有突破冯·诺依曼的体系,所以在专业人士都在期待未来的计算机新纪元出现。可以看到我的更代介绍图中有硬件和软件这两个不同方面的发展。目前,软件已经经过了五代的更新,计算机(也就是硬件)却还停留在第四代上,一次改革必将爆发。目前,许多新型计算机如生物计算机和量子计算机正在慢慢崛起,也许在不久的将来就能看到第五代计算机所带来的全新数据时代。
《计算机系统概论》这本书给出了几种计算机未来的发展趋势,以供我们在这里研究。我将简单挑选了一些例子出来把它们列在下方并补充适当介绍。
1.超级计算机。这种计算机专门被各个国家用作于计算量巨大的专业性学术研究,它的超大容量和惊人功能使它可以计算许多复杂而庞大的问题,比如航天工程、石油勘探开发等方面的大量数字算法。可以说,一个国家的国力体现在研制超级计算机的技术水平上。
2.微型计算机。这种计算机是继第四代大规模和超大规模集成电路计算机后的一大迅速发展的机型。就如同微型计算机的名字,体积小和性价比高等是它最大的优势,成为了现在人们常用的电子产品和办公用品。
3.智能计算机。这种智能计算机就是人类为了打破计算机“死板思维”的模型而研制成的,用来模拟人类大脑从而具有人类的情感和智力。简单来说,就是推动计算机在人工智能方面的进展。
4.新型计算机。一些例子有先前谈到过的生物计算机、光计算机、量子计算机等。
我们再来谈一谈计算机的各种应用领域。如果想将计算机运用于科学计算,大多数学者都会选择类似于MATLAB和R语言工具,从而取得大量数据中的准确结果。而计算机的另一个被人类常用的领域是数据处理,可以对数据实施整理加工统计等重要功能,从而利用这些数据中为自己创造需要的资源。比如管理信息系统(MIS)、制造资源规划软件(MRP)、电子信息交换系统(EDI)等都是数据处理中需要触及的板块。除此之外,计算机辅助工程和辅助教育等更是学习计算机的学生们所异常熟悉的。计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机集成制造系统(CIMS)、计算机辅助测试(CAT),计算机辅助教学(CAI)等是其中的关键内容。
最后,本章介绍了计算机系统的大概含义和组成。我在平日的生活中接触了很多不同的计算机系统,著名点的有Windows、Linux、Macintosh等,其中每一个都有各自独立的使用感觉和体验,但是归根结底每一种计算机系统的外部内部设计特点都无明显不同。

硬件系统和软件系统共同组成计算机系统。而硬件系统与软件系统之间的大概关系是:人(用户)与硬件系统之间的接口界面是软件系统。
那么,硬件系统具体而言到底是什么?它又由什么部件组成?在百科上的一次查阅告诉了我,“硬件系统是借助电、磁、光、机械等原理构成的各种物理部件的有机组合,是系统赖以工作的实体。”组成的设备主要是中央处理器(对信息进行高速运算处理的主要部件)、储存器(用于储存程序、数据和文件,常用快速的主存储器和慢速海量辅助储存器组成)、输入/输出控制系统和各种外部设备(人机间的信息转换器,由输入/输出控制系统管理外部设备与中央处理器之间的信息交换)。由此来推论,软件系统就是“各种程序(软件)和文件,用于指挥全系统按指定的要求进行工作”。软件系统的最内层是系统软件,它由操作系统(实施对各种软件硬件资源的管理控制)、实用程序(为方便用户而设,如文本编辑等)、编译程序(功能是把用户用汇编语言或某种高级语言所编写的程序翻译成机器可执行的机器语言程序))等组成。支援软件有接口软件、工具软件、环境数据库等,它能支持用机的环境,提供软件研制工具,支援软件也可认为是系统软件的一部分。应用软件是用户按其需要自行编写的专用程序,它借助系统软件和支援软件来运行,是软件系统的最外层。(此段大部分文字摘于《计算机系统概论》。)
【第二章-计算机学科形态及其局限】
计算机学科,笼统一些的讲也可以称之为计算学科,因为计算机是我们所谓的“计算活动”运行的场所。
谈及计算机学科,我不得不补充一位在这个领域里面贡献巨大的人 —— 英国数学家、逻辑学家艾伦·麦席森·图灵(Alan Mathison Turing)。图灵有两个尊称,其中一个是“计算机科学之父”,而另一个则是“人工智能之父”。《科学美国人》对图灵的一生曾有一段准确的描述:“个人生活隐秘又喜欢大众读物和公共广播,自信满怀又异常谦卑。一个核心的悖论是,他认为电脑能够跟人脑并驾齐驱,但是他本人的个性却是率性而为、我行我素、无法预见,一点也不像机器输出来的东西。”不仅如此,图灵在科学界中是一位知名度很高的同性恋。他十五岁的时候和中学里一位梦想是剑桥大学的学长一见钟情并且励志也要考到剑桥去,而且他的这个梦想实现了。在中学时段,图灵就显示出超出常人对自然科学的极高理解力,在十五岁的时候为了让自己的母亲理解爱因斯坦的相对论他专门写出一篇论文,震惊了当时英国科学界许多学者。中学在读时期,图灵曾屡次因为自己灵活的头脑和对科学的不断探索及热情拿到多个数学和科学金奖。可惜,在图灵39岁的时候,也就是1952年,他被迫害指控为同性恋,到了法庭以后他不肯给自己申辩于是受到了刑事惩罚。图灵接受了荷尔蒙注射,治疗所带的一种副作用是使他乳房不断发育膨胀。最终,两年以后图灵忍受不这种屈辱和折磨抱怨自杀身亡,年仅41岁。图灵选择自杀的方式是咬了一口含有剧毒化学物质氰化物的苹果。值得提及的是,图灵的自杀故事正是现在的科技公司巨头苹果图标的灵感由来。那个诱惑了无数现代人士波动着银光的标志,就是当年图灵咬下一口的毒苹果啊。
闲话少说,我们先来了解一下计算机学科的历史。
在人类长达几千年的发展和进化史中,数学从很早的时候就作为一种基本学科出现。现在的历史学家大多认为数学符号和基础运算最先出现在古巴比伦(也就是两河流域的美索不达米亚平原)。数学的时间和渊源都很悠久,而且为人们所津津乐道,有大量数学家研究的的数学算法和计算都被保留下来。但是,直到20世纪30年代时,图灵和波斯特彼此独立地提出理想计算机的概念以后,以计算或算法本身的性质为研究对象的数学理论才建立起来。理想计算机的概念简洁地概括,就是:问题的算法可解性刻画为在具有严格定义的理想计算机上的可解性。
图灵提出来的这种算法理论对后来出现的第一代计算机有很大影响,因为它引入了“储存程序型计算机”的概念,计算科学的理论基础早在计算机的实际发展前就已经完善。图灵机(也就是图灵提出来的理想计算机理论模型)第一次显示出了计算机能行性的本质,引出了可计算性的概念。“可计算性”的意思大概就是,在当今世道中,只有图灵可以计算的具有可行性;反而言之,图灵不能计算的问题就无可行性。图灵对图灵机的发明也正好说明科学革命是走在技术革命前的,换一种用辞,也就是说科学理论会指引时代产品的前进并为这些工具提供理论性支持。技术革命又是工业革命的推进力,因为有了产品才能得到销量和实际应用,推动企业甚至国家工业的前进。总体来说,科学革命在技术革命之前,技术革命在工业革命之前,一环扣一环,如此模型用在计算机发展史上依然应景。
最早开始这种计算机科学学位课程的是美国的普渡大学,而第二个设置课程的则是斯坦福大学。但是在当时二十世纪六十年代的阶段计算机科学还没有被完全认证为一门正式的学科,很多人认为计算机从本质来讲是职业而非学科,所以这个话题引起了许多激烈的争论。直到1985年的时候IEEE/ACM为了证明“计算作为一门学科”这一话题展开辩论,历经四年以后终于给出了《计算作为一门学科》的报告。据《计算机系统概论》书中的阐述,该报告对“计算学科”的定义为:计算学科主要在系统地研究信息描述和变换的算法过程,包括它们的理论、分析、设计、效率、实现和应用,指出计算的基本问题是“什么能被(有效地)自动化。”或者更坦率地讲,计算机学科的所有分支领域的根本任务就是进行计算,其实质就是字符串的变换。
还有一个一直争论不休的问题,也就是计算学科到底是理科还是工科。从数学模型的纯理论角度来看,计算学科属于理科;但是在设计和构建越来越大的计算系统时,采用的是工程方法,所以会说是属于工科。从现在的角度去看,计算学科既不属于理科也不属于工科。长期争论所得的后果其实并没往任何一边的方向靠拢。有些时候一些争议看似毫无意义,甚至结果即使没有激烈地中途辩论也会一如既往般一样。但是往往最好的解决方法都是经过磨练而出的,就像人在短暂的一生中会大量“放空”和消磨掉的时间用来感悟经历一样,过程是徒劳无功,结果却尽如人意。
那么,既然已经了解了计算机学科崎岖的发展史,计算机本质及学科定义会是怎样呢?按照书上的话来说,计算原本属于数学的概念已经泛化到人类的整个知识领域,并上升为普适的科学概念和哲学概念。抽象地说,计算就是将一个符号串变换成另一个符号串。说起计算机的本质,计算的概念首当其冲。如果通过查阅字典,我们会发现“计算”字面上的意思是利用计算工具进行计数,并且记忆结果。如果加进去一些比较高级的运算,那么计算的字面含义就成为将一个符号串f变换成另一个符号串g。但是,若是“计算”上升到计算机的层面,那这个解释本质的问题就要复杂的多。这里,考虑到计算机层面公认的“计算的本质”是图灵最先提出来的,我们这里引用一段他的原话:“所谓计算就是计算者(人或机器)对一条无限长的工作带上的符号串执行指令,一步一步地改变工作带上的符号串,经过有限步骤,最后得到一个满足的预先规定的符号串的变换过程。由于任何数值和非数值(字母或符号等)对象都可以编码成字符串,它们既可以被解释成数据,又可以被解释成指令,因此,任何计算的过程本身也都可以被编码,并存放在存储器中。”在《计算作为一门学科》中也含有计算机学科的定义:“计算机学科是对描述和变换信息的算法过程,包括对它们的理论、分析、设计、效率、实现和应用等进行系统研究。它起源于对算法理论、数理逻辑、计算模型、自动计算机器的研究。”
以上的叙述都有一些繁复难懂,通俗来说,因为计算机的主要功能是研究信息处理(更简单的说法是:计算机是能够进行计算的机器),计算机学科就可以被归纳为研究计算机上信息的学科。然后在返回去问一问自己,到底什么是“信息处理”,“处理”二字该作何解释?也许这个时候你会发现,“信息处理“其实就是前面所讲到的“描述和变换信息的算法过程”,一切在眼前就变得清晰明了了。到此为止,你估计已经明白了“计算机学科”的本质。所以,在遇到计算机学术概念上面难以理解的地方,切记要把知识点分解为一些小碎片进行消化,最后再整合这些零碎的知识片段进行阶段学习。以同样的方法用于之前“计算”的解释,可以知道“计算”的实质就是“字符串的变换”。这样的例子还有很多,学习到的东西大多为先哲的智慧,但是个人方法却总是独立的,要有自己固定的思维模式用来分解这些到手的知识。记得拉姆曾经说过一句话:“你可以从别人那里得来思想,你的思想方法,即熔铸思想的模子却必须是你自己的。”如今用来,真是再准确不过了。
书中还提到了一个有趣的区分“科学”、“工程”以及“技术”三个词汇的特征。“科学”这个词一般都用在形容自然、社会和思维发展三个方面的研究规律的知识体系上,科学家们在世界与生俱来的规则和变换的现状中艰难地探寻一些适用结论,我们将科学这种内在的核心精神成为“发现”。“工程”却是围绕建造这个中心运转的,意思就是把科学中的所探所得具体地运用到生产实践中去,给实际的工作提供一些必要的理论支持。那么,技术可以说从科学原理和生产实践中简练出来的方法技能以一个不同的方式结合——创造出新的物件的,其核心是发明。当然,引进这三个词的意义是想确定“计算机学科”的范围领域,可是在仔细考察之下“计算机科学”在这几个大分支中间的界限十分模糊,基本没有什么可以独树一帜的特点。由此可以发现,计算机学科不能归为上述的任何一类,是一门相对独立的学科。
【后记】
这就是没有时间的悲哀。一寸光阴一寸金。
本文章收录了《计算机系统概论》两个章节。
未完待续。