Comment by WolfeReader
Comment by WolfeReader 16 hours ago
The 1 indexes are only a difference from what you're used to. Lua was made by mathematicians, who of course wanted to address the first element as 1, the second element as 2, etc.
0-indexing makes sense in the context of C where the index operator is syntactic sugar for pointer arithmetic. In higher-level languages like C# and Python and others, it's pretty much just a leftover habit from C devs that we all got used to.
Global by default is a perpetual issue, agreed.
> The 1 indexes are only a difference from what you're used to
The left handed scissors are only a difference from what you're used to.
> Lua was made by mathematicians
The default value is nil and using nil as an index on a table returns nil. Yet nil + number is not valid and results in a runtime error.
> it's pretty much just a leftover habit from C devs
It's reflective of the fact that these languages are either intended to work with C APIs or are implemented in C itself. This makes writing FFI and extensions _far_ easier than it would be otherwise.