Да, у римлян тоже были проблемы с нулями.
Это просто [неинтуитивно] следствие того, что математика (являющаяся сильным компонентом программирования, особенно раннего программирования) определяет ноль как первое (проблематичный термин, равный единице) действительное, положительное * натуральное число, и поскольку массив индексируется действительным , натуральные числа, первый элемент имеет индекс 0.
Месяцы на самом деле являются именованными значениями в массиве, где дни и годы являются пронумерованными значениями - возможно, было бы более полезно думать о днях / годах как о массивах, которые выглядят как {"1", "2", "3",. .. } самих себя.
Что касается того, почему это так распространено (помимо математической корректности), то все перечисленные вами языки имеют общее происхождение с одной стороны ...
Редактировать:
Если посмотреть дальше, это ссылке в Википедии подробно описаны несколько хороших и интересных причин для нулевой индексации (которые напрямую не говорят о том, почему месяцы имеют нулевую индексацию, но я думаю, что это уже описано), и эта ссылка SO уже давала ответ на этот вопрос.
Похоже, что преобладающее мнение - либо «историческая случайность», либо «потому что месяцы - это не числа, поэтому их нельзя сравнивать с дневным / годовым хранением» в зависимости от того, кого вы спросите.
* Извините, извините, физика! = Математика возвращается, чтобы укусить меня там. Пойду гладить руки сейчас.