2014-08-27 59 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上找到對您問題的精彩解釋。

他詳細解釋了編程中協方差和反變量與純數學分類理論的關係。