最近对Smalltalk的介绍让我对“纯”面向对象风格的应用和好处有了启发。我以前在Ruby中看到过这样的好处,尽管面向非面向对象的if
,unless
等构造似乎并没有带来一切。纯粹在这里,我谈论的是'一切都是对象'(包括通过块或类似的功能),没有过程式流程控制,而是在布尔集合中使用流控制方法。然而,即使在像Smalltalk这样的语言中,有些事物因为不是面向对象而突出。例如,如果不使用特殊语法(:=而不是'is:'或类似的方法)来进行变量赋值似乎是不可能的,并且从函数返回值似乎需要似乎不属于的^运算符'任何对象。什么是一些最纯粹的面向对象的语言?
有没有任何语言可以进一步提升这种风格?
纯度的好处是什么?纯度使Haskell比其他函数式语言具有更高的学习曲线,因为monad从程序角度来看很难理解。 –
@克里斯:是的,但是一旦你得到他们,单子就会很棒。另一方面,这个问题似乎让纯粹的东西变得有点远了......当然,你可以放弃返回值,而是需要通过对象状态进行通信(调用一个没有任何结果的方法,然后使用'self.result'),但是我们程序员通常会尽量保持尽可能小的范围,这是有原因的。另外,它会破坏方法链接,因为没有返回值,除非将某个对象属性定义为该值,但随后我们又回到了魔术。而这样的例子不胜枚举。 – delnan
我完全认识到在这方面的纯度可以使事情变得非常冗长而且可能不是高性能的,但在具有非常小且一致的规则集的语言中也有显着的好处。也就是说,我很想找到一种能够让事情发展到极致的语言,即使只是一个好东西的例子。 – donalbain