Most of the general purpose languages like C, C++, Java start their array index from 0. Isn't it more natural to start from 1? Now the last index of the array is also the size of the array, thus avoiding subtraction of 1 to get to the last index. Also 0 could have been used to represent an invalid index in the array. What could have been the reason to start indexing from 0?