Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Результаты опроса: От чего нумеровать данные?
Использовать 0 17 68.00%
использовать 1 5 20.00%
Без разницы 3 12.00%
Голосовавшие: 25. Вы ещё не голосовали в этом опросе

Ответ
 
Опции темы Поиск в этой теме
Старый 28.04.2015, 18:24   #1
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию От чего вести нумерацию?

Понятно что сейчас в большинстве языков программирования задавать индексы не проблема от любого другого числа. Но традиционно всяческие там коллекции/кортежи/массивы/списки и т.д. имеют определенную негласную традицию в нумерации и как правило это 0 или 1. Вопрос - с чего начинать с 0 или 1?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 28.04.2015, 18:48   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

От нуля привычно. Паскалевский String от 1 даже раздражает
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 28.04.2015, 19:22   #3
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,775
По умолчанию

От нуля. Без вариантов. Даже если язык ориентирован на обучение программированию, цель обучения -- научить не только программировать, но и мыслить по-программистски. Поэтому надо учить так, чтобы первичным инстинктам не пришлось переучиваться. Ненависть к Паскалю/Delphi у многих -- в том числе и из-за этого: не могут простить, что, пользуясь их неосведомленностью, их вначале учили игрушечному программированию, тогда как в настоящем всё по-другому.
Vapaamies вне форума Ответить с цитированием
Старый 28.04.2015, 19:24   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
От нуля привычно. Паскалевский String от 1 даже раздражает
Да меня это тоже всегда напрягало. Собственно и вопрос частично из-за этого.
Цитата:
но и мыслить по-программистски.
По-американски больше, чем по-программистки. Вообще мыслить следует более обобщенно в том плане что наверно конкретно не принципиально, но принципиально чтобы везде было одинаково.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 28.04.2015 в 19:26.
Utkin вне форума Ответить с цитированием
Старый 28.04.2015, 20:02   #5
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,775
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
По-американски больше, чем по-программистки.
Почему сразу по-американски? Нули и единицы не имеют национальности. Программистский способ мышления можно реверсить из анекдотов. Анекдот про нумерацию с нуля есть (Рассчитайсь! - В какой системе? - Нулевой!).
Vapaamies вне форума Ответить с цитированием
Старый 28.04.2015, 20:03   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А чего по-американски? Логически - индекс умноженный на длину элемента как смещение в массиве. 0 - смещение начального элемента
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 28.04.2015, 20:13   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Всегда нумерация от нуля раздражала. Никогда не понимал как это первый элемент может быть нулевым. Тем паче что в нулевом всегда предпочитаю хранить размер массива.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.04.2015, 20:34   #8
MihalNik
МегаМодератор
СуперМодератор
 
Регистрация: 27.11.2012
Сообщений: 5,657
По умолчанию

Цитата:
От нуля привычно. Паскалевский String от 1 даже раздражает
Цитата:
Сообщение от Utkin Посмотреть сообщение
Да меня это тоже всегда напрягало. Собственно и вопрос частично из-за этого.
Это касается исключительно строк из-за особенности использования 0-го байта.
Не самая плохая особенность реализации. Скажем, в том же Си строки реализованы почти что никак, в т.ч. и поэтому из него убежала куча других языков.
Отсчет индексов динамического массива в Паскале ведется с нуля.
Отсчет обычных указывается явно. Добавлять -1 к размеру в цикле for не удобно, поэтому и нумеруют там обычно явно с 1 - программы получаются проще. Нормальная среда должна подсказывать объявление массива где все сразу будет ясно.

Цитата:
Даже если язык ориентирован на обучение программированию, цель обучения -- научить не только программировать, но и мыслить по-программистски.
Вы не поверите, но циклы изучаются раньше указателей и адресации. А есть даже целые языки без указателей.
А еще речевая неопределенность "нулевого <элемента>" - это первый или равный нулю?
А потом возникают удивления, почему программисты не могут никому ничего на словах объяснить.

Цитата:
Сообщение от Аватар Посмотреть сообщение
А чего по-американски? Логически - индекс умноженный на длину элемента как смещение в массиве. 0 - смещение начального элемента
Что уже не работает для других видов контейнеров.

Цитата:
Поэтому надо учить так, чтобы первичным инстинктам не пришлось переучиваться. Ненависть к Паскалю/Delphi у многих -- в том числе и из-за этого: не могут простить, что, пользуясь их неосведомленностью, их вначале учили игрушечному программированию, тогда как в настоящем всё по-другому.
Ненависть не осиливших в делфипаскале динамические массивы, семейство контейнеров TStringList и, судя по всему, ни одного компонента с контейнерными свойствами?
Забудьте все чему Вас учили, только хардкор, только ассемблер!

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Не согласен. от -1 цы вог многих случаях.э
Да-да-да! А потом несчастный мозг окончательно вынесет Python, где -1 это не исключение, а первая справа))) А, например, чтобы специально пометить индекс как недействительный, придется уже больше возможного размера выставлять.

Цитата:
Вообще мыслить следует более обобщенно в том плане что наверно конкретно не принципиально, но принципиально чтобы везде было одинаково.
Не мое, м.б., дело, но не думаю, что есть одинаково хорошее решение для всего и вся. Обобщение может что-то и потерять.

Цитата:
Всегда нумерация от нуля раздражала. Никогда не понимал как это первый элемент может быть нулевым. Тем паче что в нулевом всегда предпочитаю хранить размер массива.
Думаю, не настолько важно, если есть простой обход без вникания в эти подробности.
Благими намерениями устлана дорога на programmersforum.ru

Последний раз редактировалось MihalNik; 28.04.2015 в 21:03.
MihalNik вне форума Ответить с цитированием
Старый 28.04.2015, 21:15   #9
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Я конечно проголосовал за ноль, но это ни разу не правильный подход.
Берем паскаль, берём нумерацию с нуля и пробуем написать цикл for для перебора массива (в делфийских динамических массивах этот мерзкий -1 постоянно вылазил).
Теперь берём си и пробуем написать тот же for с нумерацией с единицы (разница небольшая, но как-то <= лично мне не нравится). В целом смотрим на работу с массивами с началом в единице.
Даже такая мелочь должна выбираться не от балды, а нужно прикидывать применение и удобство пользования.
pu4koff вне форума Ответить с цитированием
Старый 28.04.2015, 22:22   #10
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Добавляем поддержку
#pragma array_base_index XXX
и не паримся (и отстреливаем себе обе ноги)...
waleri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вести/вывести запись или массив 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