2011-08-29 69 views
11

最近对Smalltalk的介绍让我对“纯”面向对象风格的应用和好处有了启发。我以前在Ruby中看到过这样的好处,尽管面向非面向对象的if,unless等构造似乎并没有带来一切。纯粹在这里,我谈论的是'一切都是对象'(包括通过块或类似的功能),没有过程式流程控制,而是在布尔集合中使用流控制方法。然而,即使在像Smalltalk这样的语言中,有些事物因为不是面向对象而突出。例如,如果不使用特殊语法(:=而不是'is:'或类似的方法)来进行变量赋值似乎是不可能的,并且从函数返回值似乎需要似乎不属于的^运算符'任何对象。什么是一些最纯粹的面向对象的语言?

有没有任何语言可以进一步提升这种风格?

+0

纯度的好处是什么?纯度使Haskell比其他函数式语言具有更高的学习曲线,因为monad从程序角度来看很难理解。 –

+2

@克里斯:是的,但是一旦你得到他们,单子就会很棒。另一方面,这个问题似乎让纯粹的东西变得有点远了......当然,你可以放弃返回值,而是需要通过对象状态进行通信(调用一个没有任何结果的方法,然后使用'self.result'),但是我们程序员通常会尽量保持尽可能小的范围,这是有原因的。另外,它会破坏方法链接,因为没有返回值,除非将某个对象属性定义为该值,但随后我们又回到了魔术。而这样的例子不胜枚举。 – delnan

+1

我完全认识到在这方面的纯度可以使事情变得非常冗长而且可能不是高性能的,但在具有非常小且一致的规则集的语言中也有显着的好处。也就是说,我很想找到一种能够让事情发展到极致的语言,即使只是一个好东西的例子。 – donalbain

回答

8

由于长时间Smalltalker我(相对于很多其他的答案在这里),了解你所追求的 - 与“自我”语不走远一点,在至少在涉及任务时。没有在自己编程,我不能评论它比这更进一步。另一种与自我相似的新语言是Slate,也是原型的,也使用消息发送进行分配。

2

埃菲尔铁塔,Smalltalk和红宝石 http://www.jvoegele.com/software/langcomp.html

+2

Smalltalk在这个问题上被讨论和驳回。 Ruby比Smalltalk更加混合(例如,它具有'call/cc'等功能特性)。请阅读这个问题。 – delnan

+0

该链接实际上是一个很好的资源。 – donalbain

+0

十年前它是一个很好的资源。 Java自2003年以来一直使用泛型。 – fdreger

相关问题