面向对象语言更接近人的自然语言。虽然CMU说OOP是Anti-Modular和Anti-Parallel的,但不可否认OOP具有自然性(Naturality)。如果计算5x2,Lisp写成“(* 5 📅 2026/7/5 3:52:20 (defun assoc (x,y)(cond ((eq (caar y) x) (cadar y))(‘t (assoc x (cdr y)))))这里可能会引入一点争论到底代码是写给谁看的是写给机器“看”的还是写给人看的我认为最终是写给人看的所以我更看重语言的自然性。- 面向对象技术还有很好的可重用性和可扩展性。这一点即使是List的大师Paul Graham也不得不承认。所以如果你需要可持续性的开发可能面向对象技术是合适的选择。- 也许上面2条比较片面。因为我在用自己擅长、且长期使用的语言来看待自己不会、且有重大差异的语言思维定式可能会误导我。那么我们用函数式语言的大师和专家的说法来看看。《对象已死》一文中提到CLOSCommon Lisp Object System一套用Lisp编写嵌入在Lisp中的系统根据Paul Graham在《On Lisp》一书中所述“CLOS 的到来似乎意味着Lisp 正在改变自己以拥抱面向对象的编程方式。与其这样说不如改成Lisp 还在墨守成规用老样子来拥抱面向对象编程这样还确切一些”无论他怎么说我们可以看出函数式编程是可以和面向对象编程共存的。在CLOS里定义一个Circle类可能是这样的(defclass circle ()((radius :accessor circle-radius :initarg :radius)(center :accessor circle-center :initarg :center)))而创建对象实例可能是这样的(circle-radius (make-instance ’circle:radius 2:center ’(0 . 0)))上面这些代码相当于public class Circle{public Circle(float radius, PointF center){_radium radius;_center center;}public float _radius;public PointF _center;}class Program{static void Main(string[] args){Circle circle new Circle(2, new PointF(0, 0));Console.WriteLine(circle._radius);}}所以面向对象有其生命力也许它会进化也许会和函数式融合但它不会在100年内消亡之所以用100年来说是因为受Paul Graham的“一百年后的编程语言”文章影响。但尽管如此我等喜爱面向对象技术的人还是不应固步自封还是应该跳出面向对象编程的圈子去了解和接触函数式编程。