• 一个翻译问题

    2015/08/07 艾凌风 11 评论

原文:http://docs.python-guide.org/en/latest/writing/structure/

这一段说的是,python不一定要用面向对象的编程方法

There are some reasons to avoid unnecessary object-orientation. Defining custom classes is useful when we want to glue together some state and some functionality. The problem, as pointed out by the discussions about functional programming, comes from the “state” part of the equation.

有一些理由避免不必要的面向对象。当我们想要将一些状态和功能粘贴在一起的时候定义自定义类是很有用的。正如关于函数式编程的讨论中指出的那样,这个问题来自于方程的“state”。

这里 The problem, as pointed out by the discussions about functional programming, comes from the “state” part of the equation. 不太确定应该如何翻译。不了解函数式编程。

请指教

2 收藏


直接登录
最新评论
  • Eos   2015/08/11

    这里的state是否是声明的意思?

  • 结合上下文,觉得翻译成“状态”比较合适一些,下文有提到“In this case, holding some state into instantiated objects, which means keeping some static information about the world“。这里”state”可以是类似”loaded”, “read by user”, “deleted”这种描述object在state transition中的当前状态信息

    • 艾凌风 软件工程师 2015/08/11

      请问“state” part of the equation应该怎么理解呢?这里的equation不知道指的是什么

  • 楼顶上的猫猫   2015/08/11

    可以翻译为“状态”,泛指各类属性和成员变量。

  • 黄利民 站长 2015/08/11

    凌风再看看这条微博下的评论:

    http://weibo.com/2093492691/CvewC9G47

  • 黄小非 程序员 2015/08/11

    实际上确实存在一些场合,应当避免在不必要的时候使用”面向对象”。若要将“状态”和“功能”结合起来,通过自定义类的方式自然是很受用。不过问题在于,正如我们在讨论函数式编程时指出的那样,函数式的“状态”和类的“状态”根本就不是一回事。

    —我觉得最后一句还不如直接跟读者说清楚了比较好,也就不要翻译成“问题出在公式状态”了

    • 艾凌风 软件工程师 2015/08/11

      作者的意思是不是:状态本不应该和功能相结合,尽管有时候我们必须要去结合两者,这时可以使用面向对象的思想。而对于其他非必要(结合两者)情况,应当按照函数式编程的思想,尽可能分离两者才是正确的做法?

      • 黄小非 程序员 2015/08/12

        因为函数式编程是强调immutable的,状态一旦定下来就不要再改了。虽然语言级别支持改的语法但是也并不推荐的。这个和OO里的setter完全是矛盾的呢

  • 英哲   2015/08/11

    函数式编程与面向对象的本质区别是,执行过程中只做运算,避免了运行状态以及数值的改变。

    面向对象要传递实例,在传递过程中会发生状态及数值的改变,因此在多线程(Multi-Thread)以及并发(Concurrency)的场景,就会发生资源竞争(Race-Conditions)的问题,从而避免不了同步(Semaphore)或者锁(Spin Mutex)的使用,导致系统性能的瓶颈。如果没有状态及数值的改变,就不会产生上述问题。

    因此,这里的state就是所谓的状态,而equation指的就是算式了。