关系相当大啊
对象是数据(状态)和方法的组合
对象内部的状态应该是可变的。
scala已经背叛了oo了
【 在 xWvxYWYxvWx (xWvxYWYxvWxxWvxYWYxvWx) 的大作中提到: 】
: 标 题: Re: 为什么GO和RUST都取消了类?
: 发信站: 水木社区 (Tue May 12 13:00:31 2020), 站内
:
: 我以为面向对象和 immutable 本身关系不大。
:
: Scala 比 Java 更加面向对象,不妨碍 Scala 可以 immutable 很 Happy.
:
: 另外,Python 也明显比 Java 更加面向对象。
:
: 【 在 eGust (十年) 的大作中提到: 】
: : 标 题: Re: 为什么GO和RUST都取消了类?
: : 发信站: 水木社区 (Tue May 12 07:18:55 2020), 站内
: :
: : oo 是纯粹靠直觉设计出来的东西,这套东西跟学院派的 functional programming 比起来就是渣渣。
: :
: : fp 很重要的一个概念就是 immutable,无数 bug 都是因为数据的变动产生的。oo 最大的问题就是,你调用一个方法,不知道数据会不会变化;传一个对象给一个函数,不知道会不会被修改。rust 解决数据被无意修改的问题的思路就是引入 ownership,这与 oo 的设计是格格不入的。
: :
: : 另外就是,zero-cost abstraction 在 oo 条件下很难实现,因为编译期很难确定数据有没有变化(无法保证 immutable),具体哪个函数被调用了(需要在运行期查虚函数表)。
: :
: : oo 还附带着一个非常糟糕工程方面的问题:banana-monkey-jungle 问题。你只想要重用一个非常小的功能(香蕉),结果却不得不引入整个框架(丛林),因为香蕉涉及到猴子类,而猴子的方法把整个丛林都扯进来了。
: :
: : 【 在 threebird (飞剑仙朱亮) 的大作中提到: 】
: : : 难道面向对象是错的?
: :
: :
: : --
: :
: : ※ 来源:·水木社区 newsmth.net·[FROM: 115.188.128.*]
:
:
: --
:
: ※ 来源:·水木社区 newsmth.net·[FROM: 183.14.31.*]
--
FROM 106.39.149.*