Pull to refresh

List Revolution. Нумерация списков начиная с единицы? Считайте, уже сделано! [UPD]

Python *
Недавно на просторах интернета наткнулся на вот это сообщение из меил-листа сообщества python:
Christopher King: Первый элемент в списке имеет индекс 0, второй имеет индекс 1, третий это 2, и так далее. Иногда это сбивает с толку новичков python и программирования в целом. Такая система нумерации была принята в то время, когда 1 бит все еще имел большое значение. Пришло время обновления. Имейте ввиду, что это предложение для четвертой версии, так-как из-за него не будет обратной совместимости. Я говорю о том, что мы должны сделать первый элемент с индексом 1, второй — с индексом 2 и т.д. Другие языки последуют за этим. Мы хотим сделать питон легким и читабельным, и в эпоху, когда нельзя получить что-то меньше килобайта через USB, мы должны сделать первое первым, второе вторым, а третье третим, как это и должно быть. Я даю этому "+1".
Guido van Rossum: Считайте, что это уже сделано.
* Гвидо ван Россум — автор языка программирования Python, его BDFL.
Оригинал на mail.python.org, обсуждение.

Сообщество, как и предполагалось, отреагировало на это неоднозначно: от «я не могу поверить, что сам раньше до этого не додумался», до «это полное безумие!». Началось углубление в техническую реализацию этой идеи. Автор предложения был искренне удивлен одобрению Гвидо, поскольку воспринимал свою идею больше как шутку. Правда, через несколько дней, пожизненный диктатор все же опомнился:

Guido van Rossum:… В любом случае ваша идея не взлетит, не говоря уже о том, хорошая ли вообще эта идея для дизайна нового языка. Весь код, написанный за более чем 20 лет существования питона должен быть изменен, не говоря уже о мозгах миллионов пользователей и сотни книг о питоне.
Плюс, почти все другие широкоиспользуемые языки программирования (C, C++, Java, C#, JavaScript, Ruby, Objective C) начинают индексирование с нуля.
Это идеологическая битва, которая велась давно (все старые языки программирования поддерживают индексацию на основе 1: Fortran, Algol, Pascal), и победила индексация с 0, и это в действительности не так уже важно по большему счету, так что «статус кво» выигрывает.

Тем не менее, обсуждение идеи ведется до сих пор, и у нее есть немало влиятельных и уважаемых в сообществе приверженцев.

Это предложение повергло меня в бурные рассуждения: с одной стороны это вроде бы действительно более «человечно», но что делать с обратной совместимостью старого кода, не говоря уже о конфликтах в представлении данных для/от других языков программирования? Если эту фичу таки внедрят в Python 4 она может стать как изюминкой питона, так и сущим адом. Лично я склоняюсь ко второму. Что скажет по этому поводу хабрасообщество?

UPD. Для тех, кто воспринял все слишком серьезно: индексацию с единицы никто и никаким образом вводить в Python не будет, истерика отменятся. Читаем второй ответ Гвидо.
Tags:
Hubs:
Total votes 72: ↑58 and ↓14 +44
Views 12K
Comments Comments 100