计算机思维

计算机思维

我们要理解计算机是怎么回事儿,计算机能帮我们干什么,以及怎样把计算机思维用于其他领域。

算法

算法:标准化和流程化的解决一个问题

计算机思维

这恰恰就是计算机思维的第一原则:把人的情感和主观判断排除在计算过程之外。 计算机不能解决所有问题 图灵停机问题 哥德尔不完备性定理

产品很容易过时,思想很难过时,数学永不过时

对“自动的追求”

“土耳其行棋傀儡 ( Mechanical Turk)”。它在1770年出现在欧洲,能跟 人类棋手对弈,而且水平相当高。它击败过拿破仑 • 波拿巴和本杰明 • 富兰克林这样的名人。很多人怀疑棋盘下面那个柜子里可能藏了一个人,可是打开柜子只能看到一堆齿轮。这个下棋机器人在欧美纵横征战了数十年。 事实是真的藏了一个人。

蒸汽朋克

目前的计算机都是冯•诺依曼架构 ENIAC 冯•诺依曼架构 cpu 内存

新的架构 量子计算机 神经网络计算机

而在所有学科之中,自然科学能给人提供最大的荣誉感—— 理解自然现象,是最纯粹科研趣味。 自然的 高于 人为的

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

汇编 高级语言 操作系统 计算机网络 编程思想(面向对象) 计算理论 优化算法 计算,是在传统的理论和实验这两条路之外,第三条科研道路。

软件工程

第一,科学家是寻找事物的规律,而工程师是去设计一个东西。 第二是对知识的态度。科学家面对知识,是把自己当成一个没有利益收关的旁观者,感觉看懂了、能总结出规律就行。而工程师,则是参与者。他不能仅仅“懂” 这个知识,他是要拿来用的。 第三是对模型的使用。科学家喜欢简化的模型,能抓住实质就行- 爱因斯坦有句名言说“什么东西都要越简单越好,要简单到不能再简单为止〞。而工程师必须考虑所有的细节,“魔鬼在细节中”

封装 递归

小软件和大软件的根本区别在于尺度。 《人月神话》 软件工程不但要管项目,还要管人。

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

1987 年的时候,布鲁克斯写了一篇文章叫《没有银弹》(silver bullet),又提出一个洞见:软件工程的根本问题,是人的问题。主导软件开发的这个人,必须得能够理解高度复杂的东西才行。

软件设计

只会演“对” 的人,关注的仅仅是他要发布的这个东西本身;而能演“好”的人,会有意识地跟观众和环境配合。

这就引出了软件设计的思想。软件开发是实现功能和需求,软件设计则要考虑用户想要什么。

软件设计不是找几个训练有素程序员来个996的事儿。软件设计是技术、数学、艺术、文化和哲学的融合创造。软件设计里面有 “ 道” 。(太对了)

计算模拟

简单地说,实验费钱,理论费脑,而计算.…最多也就费点电。更重要的是计算能让我们达到那些实验无法测量和理论无法求解的地方。计算绝不仅仅是让研究加速,而是把以前的不可能变成可能。

最简单的计算数值计算的那点东西

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