原文是英文,我这个不能算翻译只是笔记。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.扩展性.详细内容还是看原文吧.

评论