Во время изучения С# мне показалось странным, что динамически типизированный Python поднимет ошибку в следующем коде:
i = 5
print i + " "
тогда как статически типизированный С#, как правило, будет работать с аналогичным кодом:
int i = 5;
Console.Write(i + " ");
Я бы ожидал другого пути (в python я смог бы сделать это без кастингов, но С# потребовал бы, чтобы я использовал int для string или string для int).
Просто чтобы подчеркнуть, я не спрашиваю, какой язык лучше, мне любопытно, в чем причина внедрения языка таким образом.