gpt4 book ai didi

oop - FP 和 OO 正交吗?

转载 作者:行者123 更新时间:2023-12-03 05:20:36 25 4
gpt4 key购买 nike

我已经听过很多次了,我正在尝试理解和验证 FP 和 OO 是正交的想法。

首先,两个概念正交是什么意思?

FP 尽可能鼓励不变性和纯粹性,而 OO 似乎是为状态和突变而构建的——命令式编程的稍微组织的版本?我意识到对象可以是不可变的,但 OO 对我来说似乎意味着状态/更改。

他们看起来是对立的。这如何影响它们的正交性?

像Scala这样的语言可以很容易地实现OO和FP,这会影响这两种方法的正交性吗?

最佳答案

Orthogonality意味着两件事是不相关的。它来自数学,意思是perpendicular 。在常见用法中,它可能意味着两个决定不相关,或者一个主题在考虑另一个主题时不相关。此处使用的正交意味着一个概念既不暗示也不排除另一个概念。

两个概念object oriented programmingfunctional programming彼此并非不相容。面向对象并不意味着可变性。许多以传统方式接触面向对象程序的人通常首先使用 C++、Java、C# 或类似的语言,在这些语言中,可变性很常见,甚至受到鼓励(标准库提供了各种可变类供人们使用)。因此,许多人将面向对象编程与命令式编程和可变性联系起来是可以理解的,因为他们就是这样学习的。

然而,面向对象编程涵盖了以下主题:

  • 封装
  • 多态性
  • 抽象

这些都不意味着可变性,也不排除函数式编程。所以是的,它们是正交的,因为它们是不同的概念。它们并不是对立的——您可以使用其中之一,或使用另一个,或两者都使用(甚至都不使用)。 Scala 和 F# 等语言尝试将两种范式合并为一种语言:

Scala is a multi-paradigm programming language designed to integrate features of object-oriented programming and functional programming.

Source

F# is a succinct, expressive and efficient functional and object-oriented language for .NET which helps you write simple code to solve complex problems.

Source

关于oop - FP 和 OO 正交吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3949618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com