Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop OO编程中有哪些数学对偶?_Oop_Design Patterns_Category Theory - Fatal编程技术网

Oop OO编程中有哪些数学对偶?

Oop OO编程中有哪些数学对偶?,oop,design-patterns,category-theory,Oop,Design Patterns,Category Theory,如果你最近看过,一个经常提到的话题是编程。TomasP对面向对象编程中的对偶性有很好的理解 这是因为微软的研究发现,观察者设计模式实际上是迭代器模式的数学对偶。从那时起,他们就开始使用对偶概念 我的问题是: 编程中有哪些数学上的双重性? 面向对象编程是一个良好的开端。主要的GoF设计模式有:装饰器、状态、迭代器、外观、策略、代理、工厂方法、适配器、观察者、模板方法、复合、单例、抽象工厂和命令。是一个很好的对象图海报。我不确定它是否完全是你想要的,因为它更多的是FP而不是OO,但当然有一种(也称为

如果你最近看过,一个经常提到的话题是编程。TomasP对面向对象编程中的对偶性有很好的理解

这是因为微软的研究发现,观察者设计模式实际上是迭代器模式的数学对偶。从那时起,他们就开始使用对偶概念

我的问题是:

编程中有哪些数学上的双重性?


面向对象编程是一个良好的开端。主要的GoF设计模式有:装饰器、状态、迭代器、外观、策略、代理、工厂方法、适配器、观察者、模板方法、复合、单例、抽象工厂和命令。是一个很好的对象图海报。

我不确定它是否完全是你想要的,因为它更多的是FP而不是OO,但当然有一种(也称为Curry-Howard同构)将程序与证明和类型与公式“等同起来”。

我想说编程中的主要二元性是代码-数据二元性,在Lisp中最明显地暴露出来,但在大多数提供内省功能的当代语言中也很明显。

你可以说,观察者/迭代器的二元性是(某种程度上,在这里请与我一起工作:-)更一般的继承OO范式以及委托和聚合的替代范式的表现。在前者中,更专业化的对象使用基本功能(指向上)来继承一般功能,而在后者中,更通用化的对象使用委托来访问更专业化的功能(指向下/向外)-关于oo设计可以用两种形式表示这一事实,学术界有很多讨论,由于形式之间的差异(合理地)是严格的和定义的,我认为它可以被归类为双重的


有关更多信息,请参见

我认为对象和闭包/匿名函数是对偶函数

对象是一组数据,带有一组“附加”到它的例程(即它的方法)


闭包,从函数编程的意义上来说,是对函数的(可调用)引用,附加了一组数据(以其绑定自由变量的形式)。

。你不会看到很多关于范畴理论的讨论。这可能是有原因的…;-)我知道我遇到过他们,但想不出任何细节。我怀疑对象和功能(不仅仅是对象和事件)之间存在着二元性。好问题-我期待着一些漂亮的回答不是库里·霍华德的同构论而是二元论吗?对不起,我不知道二元论的正式含义,而库里·霍华德用两个不同的名字这一事实进一步混淆了事情。