Why do most programming languages have 0 as the first index of arrays? What are the advantages of that? Why do some languages like Lua start their arrays at 1?
Low-level programming languages are written with the machine's hardware in mind, and indexing from 0 is no exception. The C programming language uses 0-based array indexing, because the array index is measuring the difference in memory locations, so 0 would refer to the first index. Because C was so influential on the rest of the programming world, many other languages also started using 0-based array indexing. However, some higher-level languages such as Lua or MATLAB ignore this convention, most likely because it can be confusing for those new to programming.