型のコナーセンス

型のコナーセンスは複数のコンポーネントがエンティティの型において一致しなければならないときに生じます。静的型付け言語では、この問題は(常にではないものの)ほとんどの場合、コンパイラが捕捉します。以下の単純な C++ コードを考えてみてください。

std::string cost;

cost = 10.95; // OOPS!

動的型付け言語では型のコナーセンスが明らかでないため苦しめられる場合が多くあります。以下のような誕生年月日から年齢を計算する関数を考えてみてください。

def calculate_age(birth_day, birth_month, birth_year):
    # do the calculation here:

この関数はどのように呼ばれるでしょうか。いくつか選択肢があります。

calculate_age(1, 9, 1984)
calculate_age(1, 9, 84)
calculate_age('1', '9', '1984')
calculate_age('1', 'September', '1984')