《计算机思维》2019.4

from 得到 万维钢精英日课3


本书的问题:

计算机是怎么回事?计算机能帮我们做什么?怎样把计算机应用到其他领域?


computer的起源:

计算师:专门做计算的人。


如何让计算师计算?

计算步骤流程化,标准化

  • 分拆步骤
  • 结果汇总
  • 纠错机制

也叫“算法”


“算法”的优势:机械化操作。

“人”的劣势:主观,情绪化。


计算机思维的第一原则:把人的情感和主观判断排除在计算过程之外。(冷酷无情的计算)


自动化:操作步骤固定

“作家机械人偶(The Writer)”,由瑞士钟表师皮埃尔·雅克·德罗在1768 年设计制造


自动化改进:输入可配置

1804年,法国人发明的一种提花织机


第一台真正意义的计算机(机械)

1820年,英国人查尔斯·巴贝奇差分机。十年只完成了七分之一。


可编程的通用计算机构想

1830年,巴贝奇,分析机

领先时代太久,不可能实现


1945年,电子真空管计算机,ENIAC

冯诺依曼,第一次使用“内存”的概念。先一次性地把打孔卡的程序信息读进来,存到内存里,然后在计算过程中让CPU直接和内存交换信息,这就能大大加快计算速度。


进一步演化:

  • 使用二进制
  • 逻辑,组合数学
  • 时钟同步
  • 自动纠错

从技术到科学

  • 初级,是怎么更好地实现自动化,主要解决应用问题;
  • 中级,是研究“计算”这件事儿本身,上升到了类似于自然科学的层面;
  • 高级,则是把计算思维用到其他科学领域中去,是带给人认知的升级。

初级:更好的应用

  • 编程语言的发明(过程思维,对象思维)
  • 操作系统的发明(工程思维)
  • 互联网的发明(网络思维,安全思维)

中级:计算本身

  • 计算理论的发展
  • 与数学的结合

高级:万事皆计算

  • 其他科学借力“计算”
  • “宇宙就是一台计算机”,新的观察世界的眼光

工程化思维

  • 设计一个东西。成本,可行性,安全性。
  • 注重知识的应用
  • 注重细节,关注实现的复杂性。

软件设计原则:DRUSS

  • Dependable,可信赖,让顾客真能指望上你这个软件;
  • Reliable,得可靠,不能总出毛病;
  • Usable,软件是给人用的,得让人能够上手;
  • Safe,用的时候不能出安全事故;
  • Secure,它得不容易被黑客攻击才行。

如何做软件?

  • 模块化,封装 ———— 降低出错概率,提高编程效率

如何应对复杂性?

  • 系统的复杂性,人的复杂性。需要帅才理解系统的复杂性。

软件工程的根本问题,是人的问题。主导软件开发的这个人,必须得能够理解高度复杂的东西才行。你得能驾驭复杂。


“好的判断来自经验,而经验来自坏的判断。”

软件每天都在更新,但软件工程的背后,是一棵经年累月长出来的大树。


软件设计:

软件开发是实现功能和需求,软件设计则要考虑用户想要什么,考虑到用户和产品应用的环境。

软件设计的目标,是创造一个虚拟世界。


软件分级

  • -1级。流氓软件
  • 0级。轻蔑的满意。基本上可以用。
  • 1级。满足基本的需求,比较可靠。
  • 2级。跟环境和用户使用习惯达到完美配合。
  • 3级。在2级基础上,能主动规避负面的结果。
  • 4级。在3级基础上,超出了用户的预期。(Linux 操作系统,苹果的系统、微软的办公系列、地图导航、Kindle阅读器)

软件设计是技术、数学、艺术、文化和哲学的融合创造。软件设计里面有“道”。


传统的因果、理论、学说,无法描述真正复杂的现象。计算不能让你得到什么一句话解释,但是计算能让你更接近真实情况。


思考

  • 分解,规范,模块,工程,迭代
打赏
  • 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!

请我喝杯咖啡吧~

支付宝
微信