《计算之魂》读书笔记 01

《计算之魂》阅读笔记 01



第1章 - 前言

  • 计算机贡献者:
    • 艾伦·图灵】提出计算机数学模型
    • 冯·诺依曼】确定计算机通用系统结构
    • 高德纳】奠定计算机 算法基础(计算之魂)

1.1 算法的规范化和量化度量

  • 早期计算机功能的 开关控制程序控制 的边界不明显

    • 如:ENIAC,由莫奇利和埃克特研制的 人类第一台电子计算机,专用于解决研制长程火炮过程中的计算问题,但如果用于其他计算问题就要大费周折地改造一番

  • 后来冯·诺依曼和莫奇利、埃克特又创造了 EDVAC,这才是 世界上第一台程序控制的通用电子计算机(冯·诺依曼体系结构)

    • 具有通用的计算机体系结构:
      顶层设计
    • 告诉后人计算机需要顶层设计
      • 顶层设计】从全局的角度,对某项任务或者某个项目的各方面、各层次、各要素统筹规划,以集中有效资源,高效快捷地实现目标。

  • 冯·诺依曼将计算机分为软硬件两部分,但早期计算机软件算法简单,没有人重视其质量,直到计算机在商业上开始普及,而高德纳正是此时弥补计算机算法理论的灵魂人物。

  • 高德纳是一个集优秀计算机科学家和软件工程师特质于一体的人,他的一生,以五件事闻名于世:

    1. 提出了评估计算机算法的标准
    2. 编写了计算机科学领域的“圣经” ——《计算机程序设计艺术》
    3. 是迄今为止最年轻的图灵奖获得者 —— 36岁
    4. 发明了被称为全世界bug最少的软件 —— TeX
    5. 是硅谷众多图灵奖获得者中名气最大、最会编程的人

【思考题 1.1】

【问】世界上还有什么产品类似于计算机,是软硬件分离的?

【答】主要是使用嵌入式技术的设备,比如:智能汽车、智能冰箱、智能洗衣机、智能音箱、空调、热水器、微波炉、扫地机器人、门禁系统、红绿灯、电梯、遥控汽车、雷达、液晶显示器、挖掘机等,这些设备在执行硬件功能的同时,也会受到内部软件的算法控制。



1.2 大数和数量级的概念

  • 人和人水平的差别常常呈数量级,但不同计算机算法最终造成的差异却远大于此

  • 电脑” 名字来源:曾有位元帅因对计算机高速度的认知有限,以至于在看到ENIAC解决问题时,发出 “真快啊,简直是电的脑” 的感慨。

  • 【问题1】什么是好的算法?

    • 速度快
    • 占用内存空间小

  • 用不同数量的数据测试:

    • 场景1:使用1万个数据进行测试,算法A运行1毫秒,算法B则需要运行10毫秒(算法A好)
    • 场景2:使用100万个数据进行测试,算法A运行10000毫秒,算法B运行6000毫秒(算法B更优)

  • 【问题2】怎样制定衡量标准?
    • 尤里斯·哈特马尼斯和理查德·斯特恩斯:提出 算法复杂度 的概念
    • 高德纳:将算法复杂度严格量化衡量

  • 【高德纳】的三点想法

    1. 在比较算法的快慢时,只需考虑数据量特别大时的情况
    2. 决定算法快慢的因素可以被分为两类:
      • 不随数据量变化的因素
      • 随数据量变化的因素
    3. 两种算法在复杂度上相差哪怕只有一点点,N 很大之后,效率可能就差出万亿倍了

  • 应用举例

    • 围棋的复杂程度、英语语句的组合种类
    • 如果两个函数 f ( N ) f(N) f(N) g ( N ) g(N) g(N),在 N 趋近于无穷大时比值只差一个常数,那么它们就被看成同一个数量级的函数(具有相同复杂度

【思考题 1.2】

【问】如果一个程序只运行一次,在编写它的时候,你是采用最直观但是效率较低的算法,还是依然寻找复杂度最优的算法?

【答】无论程序运多少次,寻找复杂度最优的算法,都是每个程序员的职责,在有能力和时间的情况下,我会不断去寻找复杂度最优的算法。



参考资料

  • 《计算之魂》第一章
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值