“复杂比复杂更好”是什么意思?

时间:2010-12-31 07:11:05

标签: python

在蒂姆·彼得斯的“禅宗之谜”中,“复杂比复杂更好”这句话使我感到困惑。任何人都可以提供更详细的解释或示例吗?

7 个答案:

答案 0 :(得分:42)

虽然复杂而复杂的声音相似,但在这种情况下它们并不一样。

禅宗因此说:构建非常复杂的应用程序是可以的,只要对它的需求是合理的。

举个例子:

counter = 0
while counter < 5:
   print counter
   counter += 1

代码很容易理解。这并不复杂。但是,它很复杂。您无需手动执行上述大多数步骤。

for i in xrange(5):
   print i

此代码比上面的示例更复杂。但是:了解''范围'的文档,你可以一眼就看出来。许多步骤隐藏在易于使用的界面背后。

随着流程变得越来越大,复杂和复杂之间的差距越来越大。

一般的经验法则是遵循Python的其他原则:

如果难以解释,那不是一个好主意。

如果这很容易解释,那可能是个好主意。

答案 1 :(得分:13)

复杂:做了很多。通常是不可避免的。

复杂:难以理解。

我喜欢这句话(source):

  

复杂的人就像一个iPod。那   就是说它们是一致的,   直截了当,'用户友好'   同时也相当复杂。   与复杂的人不同,   与复杂的人交往   不需要他们的特殊知识   复杂的方式 - 因为他们的方式   并不复杂。当错误是   制作,他们往往是非常原谅   因为他们了解人   不完美。简而言之,他们是   成熟,明智的人。

和这一个(source):

  

空中客车A380很复杂。一个   水母很复杂。巴黎地铁   网络很复杂。人们如何使用   这很复杂。你的骨架是   复杂。你很复杂。一个   建筑很复杂。一个城市   复杂。

关于此的更多文章:

答案 2 :(得分:0)

我还没看过这本书。

复杂在我看来是一个可能不容易理解但用简单和逻辑代码编写的解决方案。

复杂的解决方案可能很简单(或复杂),但是用代码编写,不容易理解,因为它没有模式或逻辑,也没有适当的隐喻和命名。

答案 3 :(得分:0)

复杂的系统高度耦合,因此很脆弱。

复杂系统由一起操作的简单部件组成,以创建复杂的紧急行为。虽然紧急行为可能仍然是一个挑战,但可以隔离,研究和调试各个部分。各个部件都可以拆卸和重复使用。

我对此主题发表了更多评论,并提供了示例on my blog

答案 4 :(得分:0)

根据Pro Python第三版:

  

出于本指南的考虑,大多数情况倾向于采用以下观点:   这两个词:   •复杂:由许多相互连接的部分组成   •复杂:如此复杂以至于难以理解   因此,面对需要跟踪大量信息的界面,   保持尽可能的简单甚至更为重要。可以采取以下形式   将方法合并到较少数量的对象上,也许将对象分组   进行更合理的安排,甚至只是确保使用   无需深入理解代码即可理解它们。

因此,正如您所说的那样,您需要使代码和文件更有条理,并使用大多数可读的名称来尽可能地定义变量/函数。

实际上,接受的最佳答案更有可能描述上限规则:

简单胜于复杂。

以下是“简单胜于复杂”的摘要示例。从书中:

if value is not None and value != ":
if value:

很明显,第二行比第一行更简单,更容易被篡改,并且更有可能使用最佳答案示例代码。

答案 5 :(得分:0)

复杂:需要大量的脑力(内部CPU)来解决。但是,一旦您解决了问题,便知道它是对的。解决数学问题很复杂。完成后,方便您第二次执行。但是对你的朋友又很难。

复杂:需要很多直觉来解决(您积累的经验)。一旦选择了一种方法,就无法确定这是最好的方法。人际关系很复杂。再次进行此操作对您仍然是一个挑战。但是遵循您的道路(阅读您的代码...)的人可以轻松地跟随您。

算法旨在解决复杂的问题。

机器学习旨在找到复杂问题的答案。

算法是可以预测的。深度学习提出了有关计算机为何决定选择该特定答案的可解释性问题。

现在是时候回答您的问题了吗?

答案 6 :(得分:-1)

对于“复杂”而言,困难在于表面。 (您的描述很复杂。)

对于“复杂”而言,困难的事情在桌子底下。 (汽车很复杂。)

就像EinLama的例子所示。