1.1.2 计算机与互联网
人工与机械计算
古人最早使用手指进行计算,但计算的结果不易存储。《周易·系辞》中记载了“上古结绳而治”,在《左传》中,人们用绳子打结的大小和数量来记录各种结果。
战国时期,筹棍逐渐成为计数工具,筹算成了主要的计算方法。“运筹帷幄”中的筹,便是算筹。秦始皇、张良都使用过算筹。而祖冲之用算筹算出了π的7位小数的近似值。
到元代中叶后,珠算逐渐取代了筹算。然而,这样的计算终归需要手工进行。
作为纺织的重要工具,中国的提花机在六七世纪通过“丝绸之路”传到了西方。虽然主要用于纺织,但也可以看作一种自动编排和自动运行的机器。
1642年,19岁的帕斯卡(Blaise Pascal,法国,1623—1662)为了帮助父亲减轻繁重的计算工作,设计了一台能够进行加减法的计算器。
1673年,莱布尼茨(G.W.Leibniz,德国,1646—1716)发明了一台可以直接进行机械乘法的计算器,其中使用了“莱布尼茨轮”,这个原理直到20世纪仍在广泛使用。
1804年,雅卡尔(Joseph Marie Jacquard,法国,1752—1834)发明了雅卡尔提花机,速度比手工快25倍。
1836年,著名的数学家查尔斯·巴比奇(Charles Babbage,英国,1791—1871)制造了一台木齿铁轮计算机,并利用雅卡尔打孔卡片的原理为这台计算机编程。
1843年,英国诗人拜伦的女儿阿达·洛芙莱斯(Ada Lovelace,英国,1788—1824)设计了用上述机器计算伯努利数的运算方式。她被认为是世界上第一个程序员。
如今,我们也许会发现,所谓计算机只是一台高级的织布机,计算的本质是机械运动。
计算的理论基础
为了将自动计算变为实际可行的技术,需要建立一套完备的理论体系。
莱布尼茨在1672—1676年研究了二进制算术,他受《易经》中八卦图的启发,于1679年写了题为De I'arthmetique binaire(《二进制算术》)的论文。
莱布尼茨一直希望发明一种普适的人工数学语言和演算规则,能够对人类各行各业的问题进行百科全书式的解法编纂,从而帮助人类减轻精神负担。以下是他关于通用计算的描述。
具有善良意志的人们围坐在桌子旁,来解决某个棘手的问题,他们用“通用语言”写下这个问题,然后说:“让我们算一下!”于是人们拿出笔来找到一个答案,其对错必然可以被所有人接受。
17世纪,笛卡儿(René Descartes,法国,1596—1650)和费马(Pierre de Fermat,法国,1601—1665)分别建立了几何图形坐标化的计算理论——解析几何。
1847年,布尔(George Boole,英国,1815—1864)出版了The Mathematical Analysis of Logic,建立了逻辑学的计算理论——数理逻辑。
1879年,弗雷格(Frege,德国,1848—1925)设计了形式语言与概念文字,为所有数学概念找到了纯逻辑术语。
19世纪末,康托尔(Cantor,德国,1845—1918)建立了集合的一般计算理论——集合论,并将无限纳入了形式系统中。关于数学无穷的革命,几乎是由他一个人独立完成的。
1899年,希尔伯特(David Hilbert,德国,1862—1943)出版了《几何基础》,成为近代公理化方法的代表作。他发表的23个数学问题,成为那个时代一面鲜明的旗帜。
1931年,哥德尔(Kurt Gödel,美籍奥地利,1906—1978)证明了哥德尔不完全性定理,即在任何一个形式逻辑系统中,总是存在某种命题,你无法证明其真,也无法证明其假。若要证明这类命题,需要引入更高阶的符号系统来描述。这就像海森堡测不准原理之于物理一样,为数学打下了基础。
1936年5月,图灵(Alan M.Turing,英国,1912—1954)在On Computable Numbers,with an Application to the Entscheidungsproblem中描述了“图灵机”。从此,数学符号与实体世界第一次建立了联系。
1948年10月,香农(Claude E.Shannon,美国,1916—2001)于《贝尔系统技术学报》上发表了论文A Mathematical Theory of Communication,标志着现代信息论研究的开端。
同年,诺伯特·维纳(Norbert Wiener,美国,1894—1964)的《控制论》出版。
以上事件,为电子计算机的诞生做好了理论铺垫。
IBM和Intel
二战后期,出于军事目的,人们开始尝试电子计算机的研发。
1945年底,第一台通用电子计算机——ENIAC(Electronic Numerical Integrator and Computer)正式诞生。它最初用于弹道计算,后经改造,能够进行各种科学计算。
1951年10月,冯·诺依曼(John von Neumann,美国,1903—1957)担任IBM公司的顾问。1952年新上任的总经理小沃森,通过敏锐的观察力,决定进入电子计算机领域。
1952年底,IBM 701正式完成,被用于商业计算领域。
此后近20年,各种大型计算机陆续被研制出来。到20世纪50年代末,IBM公司已经能年产上千台。
20世纪60年代,IBM 1401面世,使用了晶体管线路,并配有汇编和COBOL语言。
这期间,IBM 360的创始人布鲁克斯(Frederick P.Brooks,美国,1931—2022)撰写了著名的《人月神话》。
1969年,Intel的年轻工程师霍夫(Marcian Hoff,美国,1937—)受日本公司委托设计一款台式计算机。他大胆地采用了可编程通用计算机的思想,将电路精简为CPU、RAM、ROM、寄存器(Register)电路片这4个部件。另一位工程师费金(Federico Fagin,意大利,1941—)对这一电路进行了设计,在4.2mm×3.2mm的硅片上集成了2250个晶体管,用单个芯片实现了中央处理器的功能,这就是4位微处理器——Intel 4004。
1972年,8位处理器——Intel 8008诞生,在13.8 mm的芯片上可以执行45种指令。
此后近30年,芯片集成电路的发展遵循着著名的摩尔定律,即处理器的性能大约每两年翻一倍,同时价格下降为之前的一半。
如今,微型计算机已经普及到千家万户。
互联网的诞生
当人们有了各自的微型计算机后,自然希望能将彼此连通起来,进行更高效的通信与协作。
这些任务被交给了受美国ARPA[5]资助的各单位的研究生,这就是最早的互联网的雏形——ARPANET。
1969年4月7日深夜,美国加州大学的斯蒂芬·克罗克(Steve Crocker,美国,1944—)为了不打扰其他室友睡觉,在厕所里写下了第一份RFC(Request for Comments),这是用来制定互联网协议的一种方式:发布者提出协议请求,请大家评论并给予建议。这样一种谦卑的协议制定方式,为后续互联网的平等发展,奠定了环境上的开放式基调。
之后,大量的网络与协议在不断创新中诞生,各种骨干网络通过网络协议彼此连接。最终TCP/IP成为互联网中使用最广泛的传输协议。其之上的各种应用层协议(如SSH、HTTP、FTP、SMTP等)也逐渐成为标配。
为了使计算机与工具更加易用,人们在硬件之上搭载了一个最基本的软件——操作系统,将在下一节进行介绍。