计算之魂-第一章(上)

计算机贡献最大的三个人:图灵和冯·诺依曼,之后是高德纳

图灵:提出了计算机的数学模型

冯·诺依曼:确定了计算机通用的系统结构

高德纳:奠定了计算机算法的基础。

没有控制程序,只有计算和存储部分的硬件算不上计算机,因此程序对计算机来讲是必不可少的,而程序的灵魂在于算法。

算法的规范化和量化度量

世界上第一台电子计算机:20世纪40年代。ENIAC (约翰·莫奇利,约翰·埃克特)最大问题:哪些控制功能要通过开关电路做成硬件(当时没有硬件的提法)、哪些由程序控制,这个边界不清晰。造成只能计算特定问题,如果要计算不同问题则需要修改线路,极其麻烦。

世界上第二台电子计算机:1944年由冯·诺依曼和莫利奇、埃克特三人一起提出全新的设计方案:EDVAC。这才是世界上第一台程序控制的通用电子计算机。计算机鼻祖。

EDVAC 的问世,意义在于:在计算机科学中,更多时候需要顶层设计。而不是从经验出发贵归纳总结。

冯·诺依曼在客观上,将计算机分为了软硬件两部分。

一开始并不重视软件,因为大多数计算机早期都是用于进行科学计算,而非商业。很多程序用不了几次,因此没人重视他们的质量。到20世纪60年代,计算机在商业上开始普及,一个商业程序需要提供给很多用户反复使用。程序设计是否合理、效率的高低、占用资源多少,就需要认真考虑了。这时在计算机算法理论方面的缺失,就需要有人来弥补了。而奠定计算机算法基础的人正是我们这一节的主角——高德纳

高德纳闻名于世的五件事:

  1. 他是计算机算法分析的鼻祖,提出了评估计算机算法的标准。
  2. 他编写了计算机科学领域的“圣经”——《计算机程序设计艺术》一书。他本人说:如果连第一卷都看不懂,就别当程序员了。
  3. 他是迄今为止最年轻的图灵奖获得者。
  4. 他写了革命性的编辑排版软件Tex。并使用2.56美元指数级递增的酬劳计算方式来悬赏Bug。
  5. 高德纳是硅谷地区众多图灵奖获得者中名气最大、最会编程的人。他曾用一台最慢的计算机获得了编程比赛第一名。

冯·诺依曼与高德纳给人的启示:前者本不想造计算机,后者也不想发明TeX,为什么这些大师们偶然为之的工作比二流人才有时还有影响力呢?除了能力差异,他们还有着遇到问题解决问题的积极态度。

大数和数量级的概念

苏联著名物理学家、诺贝尔奖获得者列夫·达维多维奇·朗道把物理学家分成了5级。一级能力是二级的10倍,二级又是三级的10倍,就这样,每一级之间差一个数量级。

人和人水平的差别、东西和东西的差别,常常是呈数量级的

而计算机算法的优劣相差一点,最后计算机运行的时间就很容易差出千万倍。

人们对计算机的高速度是无感的。第一代电子计算机每秒钟 5000次计算。阿波罗登月计算机主控速度快了几千倍。1毫秒与1微秒的差异,对人来说二者都足够快,但是两者却相差快了1000倍。

衡量算法的好坏,速度快、内存空间小,这两个方向没错,关键在于用多少数据来测试算法速度和空间。不同数据量两种算法的相对表现可能会完全不一样。

1965年尤里斯·哈特马尼斯和理查德·斯特恩斯提出了算法复杂度的概念(二人后来因此获得了图灵奖)计算机科学家才开始考虑用一种公平、一致的评判方法来对比不同算法的性能。

最早将算法严格量化衡量的是高德纳,他也因此被誉为“算法分析之父”。今天,全世界的计算机领域都以高德纳的思想为准。

高德纳的思想主要包括以下三部分:

  1. 在比较算法时,只需要考虑数据量特别大,大到近乎无穷大时的情况。
  2. 决定算法快慢的因素虽然可能有很多,但是所有的因素都可以被分为两类:第一类是不随数据量变化的因素,第二类是随数据量变化的因素。
  3. 两种算法在复杂度上相差哪怕只有一点点,N很大之后,效率可能就差出万亿倍了。比如用选择排序或者插入排序和专业人士常用的快速排序对10多忆个QQ号排一次序,计算量分别是大约100亿亿次和30亿次。

算法复杂度函数中差出个不受N影响的常数,哪怕是千百倍,也没有什么了不得。就好比1粒芝麻和10粒芝麻都是芝麻数量级的东西,在西瓜面前大家就不要比了。

O( f(n) + g(n) ) = O( f(n) )

这在数学上显然不成立,但是在计算机算法上是被认可的。这等于说一个西瓜加上两粒芝麻还等于原来的西瓜,其目的是让计算机科学家们能够把注意力放在数量级的差异上。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值