I think the 0's have it!
I think that table was compiled by someone with a bias towards 0, rather than no bias. It looks like there is a battle about whether arrays should start at 0 or 1, and the combatants have completely missed the question of: why even have this constraint at all?
Every BASIC compiler I've used since VAX BASIC in the '80s has allowed things like
Dim StudentsInYearLevel(7 to 12) or
SuperBowlChampion(1967 to CurrentYear). Pascal too, and that language isn't even on the list (wtf?). And I'm pretty sure FORTRAN did too, probably even earlier.
Better yet, indices can be negative, eg:
Dim DirectionNSEW(-1 to 1, -1 to 1) Pascal could even apply range-checking to integer (maybe even scalar) variables, thus you could define Temperature as being -273..101, or EggsInCarton as 0..12, or DiceTotal as 2..12.
But... but... but... 0-based arrays are more efficient. Agreed. But Java is doing runtime bounds checks on array accesses anyway, so clearly factors other than efficiency were considered. Like making the programmer's life easier
So if we're already spending CPU cycles on calculating and checking array indexes, the cost of an extra subtraction is negligible in comparison to the benefit of array bounds that match the problem being solved rather than conforming to theoretical constraints.
Better yet, you could have your cake and eat it too, eg, per PowerBASIC documentation:
While PowerBASIC supports lower boundary values that are non-zero, PowerBASIC generates the most efficient code if the lower boundary parameter is omitted (i.e., the array uses the default lower boundary of zero).
The whole discussion is a bit moot with regards to B4A, though, since it's built upon Java, interacts with Java libraries, using Java arrays, so: 0-based it is. At least we have the freedom to emulate 1-based natural-numbered arrays by dimming one more than we need and then ignoring element zero. All is good, as long as you don't post the code in public...
;-)