像机器一样思考读书笔记

2017-08-13  本文已影响0人  robtomb_

像机器一样思考
(突然有点感触,怎么学一门语言?要先学好英语啊!略心塞)

(一)宏观基础

刚看到这篇的时候,我也思考了一下「 什么样的人适合作程序员 」,私以为有强迫症的人会是一个优秀的程序员。这篇文章上说:像机器一样思考的人。

那么问题来了。机器是什么?谁定义了机器的思考?
我们所有的计算机,都是「 冯诺依曼体系 」。
就是下面这张图(截张图来用)


说话的方式简单一点就是

你可以看到,我们好像只需要考虑三分地方输入 处理 输出,归结起来就两种数据 | 数据结构 指令 | 处理过程
(再插一句话,由于最近在看《算法导论》,想起我刚刚学过的《数据结构》,数据结构果然只是数据结构,算法却不只算法)

这篇文章中举了一个例子,来说明这种模型是如何使用。在这,借张图来用。


讲真,这样的思考方式真是简单粗暴又有效,体会过后,它带给我如下感受:

其实,我受益最深的是,明确输入类型。最起码,在我以前的编程过程中一直这样不明不白的过来着 :(

那为什么我们在思考的时候却不会这样的明确,至少我在编程的时候是不会这样的?
maybe,有以下一点原因:

编程其实是最简单的事,而其中流程是最重要的,我们往往认为编程好难啊!这种做法就好像分离了语言和流程,我们可以用任何语言来实现,但是流程是不会变的。

在「 题外话-2 」中,它提到了当数据复杂到一定程度时,数据和过程的界限会模糊,这就是函数式编程。看来要好好了解函数式编程了🙂

(二)数据的细节

看完这章,我觉得果然是我们创造了计算机,人类世界的抽象 -> 对于物体的表达

对于数据结构的设计,总感觉要尽量对应现实世界和简单化。

还有一句话,在题外话1里:「 在表现层你最后使用的数据的结构,尽量跟你的表现层的结构一致,这样出bug的几率最低 」,想想以前编程,太多BUG出现在这个环节,百分百出BUG啊,真是心塞。

总之,(一)是个模型,(二)就是针对数据的细节,讲真数据结构的设计确实很重要,而且决定流程的简单化。

(三)穷尽就是力量

「 穷尽 」你知道这个单词的意思么?我还真去百度了hhhh
《穷尽》是一个汉语词汇,基本意思是竭尽,极尽;终止,止境。(想不明白,为什么要带书名号)

看完这章,我就笑了,被以前的自己蠢哭了。

以前的姿势是这样的:
正在写一个函数,发现少了个参数,赶紧在函数头添加,而且有时候,发现添加了好多参数,并且不知道有的参数从哪里出来。。。

看完这章后,正确姿势应该是这样:?
先分析问题,心中大致分作几个步骤 → 列出输入输出 → 在反思一下修改 → 写下一个函数直到写完之后

这篇中主要介绍了「 穷尽 」,就是在列出输入 | 输出时要「 穷尽 」,把所有用到的数据,都要写出来,并且要明确来源和输出要明确目的。

感想:

(四)一图抵千言

「 一图抵千言 」就是把上面的思维模式以图的方式呈现了,最大的好处感觉是:易于交流,方便你我。它很清晰的呈现了我们要写多少个函数,最主要的是函数与函数之间的关系,比如输入和接收
注意几点内容:

其他

思维方式的转换,按照测试的角度切分task(其实,我是这样理解的:从结果的角度)→
从一个函数实现的视角转为一个函数调用的视角。
可能我对TDD用法不深刻,体会不到这句话

 跳出盒子外来看盒子的视角。我们在画前面的图的时候,实际上是在我们要实现的这个程序内在看,完全没有使用者的视角,也就是所谓的在盒子内,。当我们站在测试的视角看的时候,我们就跳出了盒子外,他更容易让我们发现哪里可能设计上有问题,比如设计出的接口是不是好用。
上一篇下一篇

猜你喜欢

热点阅读