2014-08-27 76 views
5

我想知道为什么术语协方差和反变量在编程领域被命名。通常人们会在概率论或统计学中听到这些术语,指出被测量的数量相对于平均值的扩散。为什么Covariance和Contravariance这样命名?

  • 从统计中借用这些术语的想法是什么?
  • 这些术语在编程领域如何描述这种扩散?
  • 编程领域的平均值是多少?

我知道协变是为更具体类型的变量赋予更具体类型的表达式的能力,但是对此有另一种解释吗?
有关这两个域的示例将会很有帮助。

+0

差异仅仅是“差异” - 在统计数据中,它与样本的平均值有多少有关;在编程中它是如何变化的类型(是否可以使用子类型/超类型关系等)。 – 2014-08-27 14:24:11

+1

你为什么认为它来自'Statistics'?它来自根据[wikipedia](http://en.wikipedia.org/wiki/Covariance_and_contravariance_%28computer_science%29#Origin_of_the_term_.22covariance.22)的'category theory'。 – 2014-08-27 14:40:03

+0

这就是为什么我喜欢C#中的'T' /'out T'决定的原因。这是非常直观的,他们的意思,而不必记得哪个是哪个 – 2014-08-27 14:40:38

回答

1

我不是数学家,所以我不会试图回答我自己的问题,但是您可以在Tomas Petricek's blog上找到对您问题的精彩解释。

他详细解释了编程中协方差和反变量与纯数学分类理论的关系。