Not in languages that are mathematically correct like matlab, Octave etc.
The reason many language start arrays at 0 is due to some nastiness related to poplar languages like C in the 70s. In a language like c an array is really just a pointer to a memory location, the array index is just an offset of the initial memory pointer. This was also done in early languages due to memory issues and size constraints. e.g. an 8 bit unsigned int has values form 0 to 255 because zero is needed in this instance. if the arrays started at 1 then there could only be 255 entries and not 256. But these days the array index will be a 64 bit number, therefore if you start at 0 you have 18,446,744,073,709,551,615 values, if you start at 1 you have a mere 18,446,744,073,709,551,614 values which inconsequential.
Thus languages like matlab start at 1. E.g. a list of length 10 has valid indices 1,2,3,4,5,6,7,8,9 and 10. The first index is 1, the last index is 10.