正文

OOP已死2006-10-09 18:01:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/nothing/19161.html

分享到:

原文是英文,我这个不能算翻译只是笔记。
http://kawagner.blogspot.com/2006/08/oop-is-dead.html

文章的主要观点是:OOP已经达到它的顶点,并开始衰落。
主要证据有
1.函数式编程逐渐引人注意,许多老牌语言开始引入函数式编译的概念
比如,closure, continuation, iterate等。

2.多范式语言并不是解决之道:
1)编程语言应该引导编程员解决问题,而不是面对多种范式无所选择。
2)多种范式降低了代码重用的范围和效率.

3.OOP语言不能解决以下问题
1)多分派,双分派可以使用visiter模式,但要加入大量代码,也不灵活.
而函数式语言可以轻易做到多分派.
2)扩展工具类的能力.以java中String类为例,即使有一个ExtString类,
也没有太大用处,因为除了你的程序以外没人用ExtString,你无论是从
url中还是toString,得到的都是String,还要构造一次才能成为ExtString.
但在函数式/过程式语言中,添加一个函数十分容易.
3)扩展基本类操作,如果你需要添加一个能与Int/BigInt进行add的Complex类
呵呵,你不得不为每一个基本类型添加相同的操作.

4.OOP中最大的问题在于可变的状态,这正是函数式语言所没有的.
它影响了OOP在程序结构,并型性,优化.
函数式语言中无副作用的函数其实从根本上解决了这些问题.

5.元编程也不是一个好主意.元编程被用于解决OOP语言中一些语义的问题
但事实上,这完全是错误,Lisp这样自然的元编程语言中,语义是不能被修改的.这种使用原因完全是因为有些问题语言本身没有解决好.

6.程序框架能解决一些问题,并非所有问题.

总结一下

OOP在两个方面已经很难满足要求:
1.模块化.(原文是Dependencies,不过我认为模块化更准确)
2.扩展性.

详细内容还是看原文吧.

阅读(4102) | 评论(1)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册