面向对象

主要观点

  • “面向对象(OO)”概念定义不清晰,不同人对其有不同理解和定义。
  • 列举了与“对象”和“OO”相关的一系列特征或属性,如封装、保护、多态等。
  • 指出 C/C++ 人士和 Lisp 人士对 OO 的看法不同,前者视其为从无一等函数世界的解放,后者视其为限制。
  • 强调在讨论 OO 之前需先达成定义共识,否则易引发争论。
  • 以 Simula 67 类模式为例说明常见的 OO 形式,同时指出 OO 是个动态目标,OO 狂热者会随意选择子集来试图说服他人。
  • 对不同语言(如 Java、Lisp 等)的 OO 特性进行分析和比较。

关键信息

  • 详细阐述了 9 个与 OO 相关的特征,如封装(隐藏类型实现)、保护(防止客户端检测实现)等。
  • 提及不同语言(如 Java 有{1,2,3,7,8,9}特性,Lisp 有{4,5}等)的 OO 表现。
  • 介绍了不同人对 OO 的定义,如 Abelson 和 Sussman 认为 Lisp 是 OO 等。
  • 讲述了与 e-lang 列表上关于反 OO 讨论的相关内容及自己的观点。
  • 对 Scott McKay 的回应,澄清自己观点及指出术语情况的糟糕。

重要细节

  • 说明在某些语言中“调用”可柯里化,关键到方法的映射有时可在编译时完成,这会影响 C++及相关语言中 OO 的讨论。
  • 提到自己在不同场合对 OO 的看法及实践,如在 Scheme 实现中使用 Simula 式的 OO 技术等。
  • 指出只有有 Lisp 和学术背景的人才会认真对待 Lisp 和 Actors 的定义。
  • Paul Graham 放置了此消息的第一部分链接。
阅读 15
0 条评论