zoukankan      html  css  js  c++  java
  • 面向对象属于分解,函数编程属于组合

    有以为利,通过面向对象我们将一分解为多个,数量多了,“有”,而函数编程则是将多个组合成一个,数量少了,“无”,无才能用,只有忽略事物内部的细节,我们才能用它,否则陷入细节迷失方向。换句话说:数学分数考得好,不代表在实际中用数学用的好,牛顿没有发明几何学,但是用了几何学,创造了微积分,用它们推导出万有引力;爱因斯坦用了非几何学推导了相对论。

    学习是一种分解能力,使用是一种组合能力,这是两种不同的能力。

    我们分解大的问题为小的问题,如果小的问题还是很大,我们继续分解它,最后我们编写代码来解决这些分解后的小问题,我们组合这些片段来为了解决一个大问题。如果我们不能将那些碎片代码组合起来,分解就没有必要。如果拆了不能装起来,拆就是破坏了。

    分解和组合的并不影响电脑,但是它受限于人的智力,我们的只能某个时间只能处理一些概念,最常见的心理学论文之一:The Magical Number Seven, Plus or Minus Two指出我们只能保持 7 ± 2 个信息片段,我们对人类短期记忆的理解已经改变,但是我们确认它是有限的,我们需要结构不是因为良好结构的代码看上去让人高兴,而是因为我们的大脑不能有效处理(大量数据),我们之所以使用树形结构,用一个根节点代表其聚合群体,用组长代表所有组员,用名字代表人的全部,等等这些组合抽象的办法就是让我们大脑去除大量对象内部的细节,用一个符号代替它们,这样我们才能基于这个树的根节点再组合成新的树形结构。

  • 相关阅读:
    Largest Submatrix of All 1’s
    Max Sum of Max-K-sub-sequence
    Sticks Problem
    Splay模版
    B. Different Rules
    链表合并 leetcode
    K个一组翻转链表
    反转链表2 leetcode
    nodejs简单仿apache页面
    HTML 5 Web Workers
  • 原文地址:https://www.cnblogs.com/feng9exe/p/8652753.html
Copyright © 2011-2022 走看看