![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
Результаты опроса: От чего нумеровать данные? | |||
Использовать 0 |
![]() ![]() ![]() ![]() |
17 | 68.00% |
использовать 1 |
![]() ![]() ![]() ![]() |
5 | 20.00% |
Без разницы |
![]() ![]() ![]() ![]() |
3 | 12.00% |
Голосовавшие: 25. Вы ещё не голосовали в этом опросе |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]()
Понятно что сейчас в большинстве языков программирования задавать индексы не проблема от любого другого числа. Но традиционно всяческие там коллекции/кортежи/массивы/списки и т.д. имеют определенную негласную традицию в нумерации и как правило это 0 или 1. Вопрос - с чего начинать с 0 или 1?
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
От нуля привычно. Паскалевский String от 1 даже раздражает
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#3 |
Просветитель
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,844
|
![]()
От нуля. Без вариантов. Даже если язык ориентирован на обучение программированию, цель обучения -- научить не только программировать, но и мыслить по-программистски. Поэтому надо учить так, чтобы первичным инстинктам не пришлось переучиваться. Ненависть к Паскалю/Delphi у многих -- в том числе и из-за этого: не могут простить, что, пользуясь их неосведомленностью, их вначале учили игрушечному программированию, тогда как в настоящем всё по-другому.
В разработке: воспроизводственный контур ИТ
|
![]() |
![]() |
![]() |
#4 | ||
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]() Цитата:
Цитата:
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() Последний раз редактировалось Utkin; 28.04.2015 в 19:26. |
||
![]() |
![]() |
![]() |
#5 |
Просветитель
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,844
|
![]()
Почему сразу по-американски? Нули и единицы не имеют национальности. Программистский способ мышления можно реверсить из анекдотов. Анекдот про нумерацию с нуля есть (Рассчитайсь! - В какой системе? - Нулевой!).
В разработке: воспроизводственный контур ИТ
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
А чего по-американски? Логически - индекс умноженный на длину элемента как смещение в массиве. 0 - смещение начального элемента
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#7 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Всегда нумерация от нуля раздражала. Никогда не понимал как это первый элемент может быть нулевым. Тем паче что в нулевом всегда предпочитаю хранить размер массива.
I'm learning to live...
|
![]() |
![]() |
![]() |
#8 | |||||||
МегаМодератор
СуперМодератор
Регистрация: 27.11.2012
Сообщений: 5,712
|
![]() Цитата:
Цитата:
Не самая плохая особенность реализации. Скажем, в том же Си строки реализованы почти что никак, в т.ч. и поэтому из него убежала куча других языков. Отсчет индексов динамического массива в Паскале ведется с нуля. Отсчет обычных указывается явно. Добавлять -1 к размеру в цикле for не удобно, поэтому и нумеруют там обычно явно с 1 - программы получаются проще. Нормальная среда должна подсказывать объявление массива где все сразу будет ясно. Цитата:
А еще речевая неопределенность "нулевого <элемента>" - это первый или равный нулю? А потом возникают удивления, почему программисты не могут никому ничего на словах объяснить. Цитата:
Цитата:
Забудьте все чему Вас учили, только хардкор, только ассемблер! Да-да-да! А потом несчастный мозг окончательно вынесет Python, где -1 это не исключение, а первая справа))) А, например, чтобы специально пометить индекс как недействительный, придется уже больше возможного размера выставлять. Цитата:
Цитата:
Благими намерениями устлана дорога на programmersforum.ru
Последний раз редактировалось MihalNik; 28.04.2015 в 21:03. |
|||||||
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,091
|
![]()
Я конечно проголосовал за ноль, но это ни разу не правильный подход.
Берем паскаль, берём нумерацию с нуля и пробуем написать цикл for для перебора массива (в делфийских динамических массивах этот мерзкий -1 постоянно вылазил). Теперь берём си и пробуем написать тот же for с нумерацией с единицы (разница небольшая, но как-то <= лично мне не нравится). В целом смотрим на работу с массивами с началом в единице. Даже такая мелочь должна выбираться не от балды, а нужно прикидывать применение и удобство пользования. |
![]() |
![]() |
![]() |
#10 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,372
|
![]()
Добавляем поддержку
#pragma array_base_index XXX и не паримся (и отстреливаем себе обе ноги)... |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
вести/вывести запись или массив | pascal1992 | Общие вопросы Delphi | 2 | 07.04.2013 18:54 |
вести 5 целых чисел | viknik | Помощь студентам | 1 | 14.12.2011 20:37 |
Вести в edit1 из *.txt | foxes | Общие вопросы Delphi | 6 | 15.10.2010 19:31 |
Вести учет форматирования... | Busine2009 | Microsoft Office Word | 1 | 28.06.2009 18:05 |