像"机器"一样思考

像”机器”一样思考

刚刚看了一篇文章,有点感触,简单写写,算是梳理思路,也当作是总结。

文章的题目叫做:《像”机器”一样思考》,我在这儿简单的回顾和总结一下吧。
机器的思考方式,即:输入➡️处理➡️输出。简单粗暴,效率高。输入和输出都好理解,这个中间的处理环节,就相当麻烦了。
还是简单总结一下,就是:

1.分解问题
2.找到子问题之间的关联
3.找到问题的边界,明确假设和结果

第三点的大概意思应该就是要详细地分析每一个分解之后的问题,给出假设以及假设的结果。

这也是这篇文章给我最大感触的地方。上述的三点看起来十分简单,但是在实际实施过程中则要麻烦许多。你需要很强的逻辑思维,以及对整个项目把控能力。

(就举做项目的例子吧,在生活中的其它领域,应该都可以使用到)
这个能力叫做Analytical Thinking,翻译过来也就是分析问题的能力。你需要把一个复杂的东西拆开,分解成一个个相对简单的,再找到其相对应的点,最后再合成一个整体。

###还有一个点:面向过程和面向对象的区别及联系
我之前一直没有太分得清楚,只是知道两者都是一种实现方法,相对应的解决思路不同.看过这篇文章之后,茅塞顿开,以下是我所理解的两者之间的联系与区别,(如果有大神看到不对之处,望纠正!)

我的理解:
上面所说的这种Analytical Thinking其实就是一种面向过程的编程方法,如果仅仅是停留在此处,那也就没有面向对象的事情了.也就是说,如果你的项目规模很小,那用面向过程编程就完全可以实现了,但是如果你的项目很大,后期需要新增一些新的功能,或者要修改一些旧的功能,那面向过程就很方便了.

举个栗子:
你要做一个五子棋的游戏.

面向过程编程:
黑子走–>在棋盘上绘制–>判断输赢–>白子走–>判断输赢,然后就是重复执行上述步骤.

面向对象编程:
将整个游戏划分为三个对象:

1. 棋子
2. 棋盘
3. 规则

每个对象负责相对应的部分,而各个对象给予其对应的方法:
如:棋子对象完成相应的动作后,告知棋盘对象绘制,而后告知规则对象进行相应的判断.

那这样做有什么好处么?
举例:
要在五子棋的基础上改为围棋游戏

基于面向过程的方式,需要改动的地方就多了吧:每一处引用到规则(也就是判断输赢这个环节)的地方都要修改,当然棋盘需要重新绘制一个比较大一点的了.这个的链路需要重写,需要改动的地方太多.

基于面向对象的方式就简单一点了,只需要把规则对象和棋盘对象改掉就好,可修改性就体现出来了,当然,之前的规则还可以继续保留,五子棋游戏还是可以继续存在的,只需要新添加围棋的规则和围棋的棋盘就好.整体的脉络都可以得以保留,只是需要有新成员的加入。

总结

1.面向对象的编程方法,是面向过程编程方法的一种封装,是在其基础上发展出现的.
2.像”机器”一样思考 是面向过程思想的一种体现.
3.面向过程思想:输入–>处理–>输出
4.面向对象思想:A对象–>B对象–>C对象,而每个对象之中又存在[输入–>处理–>输出],也就是面向过程的封装了.

以上是我的一些思考,如果有大神发现一些不对的地方,望指正.

-------------本文结束感谢您的阅读-------------

本文标题:像"机器"一样思考

文章作者:老米的世界

发布时间:2017年04月29日 - 00:00

最后更新:2019年09月05日 - 22:06

原始链接:http://mpfly.github.io/2017/04/29/像-机器-一样思考/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

老米的世界 wechat
欢迎关注我的微信公众号!
坚持原创技术分享,您的支持将鼓励我继续创作!