>Индексы начинающиеся с нуля гораздо удобней в программировании. Чем дальше от системного и ближе к прикладному программированию, тем больше расхождений между компьютерными странностями и реальным миром, в котором первый элемент имеет номер 1 а не ноль.
>расчет длинны диапазона: Right - Left
>диапазон с 0: 256 - 0 = 256
>диапазон с 1: 256 - 1 + 1 = 256
значение n-го элемента: ar[n-1]
и то же при естественном исчислении: ar[n]
разность между значениями n-го и m-го элементов: ar[n-1] - ar[m-1]
и то же самое при нормальном подходе ar[n] - ar[m]
диапазоны с n-го по m-го включительно
[(n-1)..(m-1)]
[n..m]
диапазоны с n-го по m-го не включая
[(n)..(m-2)] // вообще задница!
[(n+1)..(m-1)]
Видно же, что первые варианты заставляют ломать голову, а вторые, наоборот, сами себя описывают без комментариев. Математику не дураки придумали, а програмисты просто просто привыкли к странностям, история которых начинается с системного программирования, где ноль и 255 имеют одинаково важное применение.
В какой-то док-ции по Питону автор умудрился объяснить границы среза: индексы указывают не на граничные элементы, а на промежутки между. Типа индекс 3 указывает на промежуток между вторым и третьим элементом. "Правильной" дорогой идёте, товарищи. ;)