正如我已经阅读了stackoverflow的答案和问题,我得到的印象是OO被划分为本质上是必要的.
但是,OO只是将代码和数据划分为现实世界对象的一种方式吗?
如果是这样,为什么放弃其他较低层次的范式才能在这样的平台上工作?
IOW,默认情况下不可变的基于对象的泛型类型系统将是功能性第一语言的工作方式,默认情况下可变的基于对象的泛型类型系统将是命令式语言的世界.
或者我完全错过了什么?
不.OO和命令是两个正交的概念.
例如:
Common Lisp对象系统是Lisp OO的一个例子,可能是最复杂的对象系统.
OCaml是一种功能语言,具有对象系统和支持面向对象组织的模块系统
Scala是一种具有非常灵活的OO系统的函数式语言
Haskell允许您使用更高级别的多态来编写面向对象的代码
面向对象有很多不同的方法.
大多数OO语言都是必不可少的,但您可以使用它们的功能.一些函数式语言位于OO框架之上(F#on .NET是最明显的例子),为了在适当的时候使用大量框架而牺牲一些"纯度".
我认为"主要是OO"语言有很多空间可以做更多的工作来帮助编程功能 - 更好地支持不可变性是最明显的特性,可能接着是更好的类型推断.(至少在谈论C#时,这可能是传统语言试图进入功能门的最重要的例子.)