почему в программирование ноль - это первый элемент? (Страница 1) / Программирование / Форум StopLinux

Объявление

Kwork.ru - услуги фрилансеров от 500 руб.

#1 06-06-12 16:35:37

Luca
Участник
Зарегистрирован: 03-09-09
Сообщений: 1,413
Windows XPFirefox 13.0

почему в программирование ноль - это первый элемент?

Казалось бы, ноль - это ничего. Но почему тогда в программирование принято, что нот - это первый шаг для отсчета? Почему не единица? Разве не логичнее было бы?

Неактивен

#2 06-06-12 16:41:51

NEMO
Поджигатель
Зарегистрирован: 28-12-11
Сообщений: 933
Windows 7Firefox 12.0

Re: почему в программирование ноль - это первый элемент?

Luca пишет:

Казалось бы, ноль - это ничего. Но почему тогда в программирование принято, что нот - это первый шаг для отсчета? Почему не единица? Разве не логичнее было бы?

Потому что иначе теряется одно значение. А в программировании это важно.

Неактивен

Следующие пользователи поставили вам "+1":shell32

#3 06-06-12 16:47:00

straus
Участник
Зарегистрирован: 01-06-11
Сообщений: 967
LinuxChrome 19.0.1084.52

Re: почему в программирование ноль - это первый элемент?

Luca пишет:

Казалось бы, ноль - это ничего.

Рекомендую покурить темы из начальной математики натуральные и целые числа.


В детстве я молил бога о велосипеде;
потом понял что бог работает по-другому...
я украл велосипед и стал молить бога о прощении.
Аль Пачино

Неактивен

#4 06-06-12 16:58:41

Okkamas Buddy
Участник
Из СПб
Зарегистрирован: 22-05-12
Сообщений: 968
Windows 7Chrome 19.0.1084.52

Re: почему в программирование ноль - это первый элемент?

Ребёнок когда рождается, ему 0 лет. И только через год будет 1 год.


Случайности не случайны.

Неактивен

#5 06-06-12 17:54:38

Luca
Участник
Зарегистрирован: 03-09-09
Сообщений: 1,413
Windows XPFirefox 13.0

Re: почему в программирование ноль - это первый элемент?

straus, как я понимаю ноль это все же ничто. Или нет? Просто только что статью про ноль читал и отсюда такой вопрос возник.

Okkamas Buddy, ну в теории логично, только считаем то мы всегда в жизни с одного т.е. если ничего нет, то это нельзя сосчитать.

Неактивен

#6 06-06-12 18:10:48

Белая рысь
Мартовский кот
Зарегистрирован: 13-08-10
Сообщений: 763
Windows 7Internet Explorer 7.0

Re: почему в программирование ноль - это первый элемент?

Luca пишет:

если ничего нет, то это нельзя сосчитать.

Ну... лет нет, а ребёнок - есть. Вот такой парадокс. smile
А вообще, с нуля, если строить аналогии, считают, потому что надо учитывать, что при подсчёте количества яиц в корзине их отсутствие - тоже количество. IRL это нечасто бывает важно, а в компьютере - сплошь и рядом. Сколько, например, в пустом массиве элементов?
PS: В Pascal массивы нумеруются с 1. smile)


Для Director-cemetery: Пока не почешетесь извиниться, Ваши комментарии буду игнорировать.
Для Rector: В дальнейшем буду Вас просто игнорировать.

Неактивен

#7 06-06-12 18:14:22

дохтур
Боевой дятел
Из Краматорск, ул. Железячкина
Зарегистрирован: 30-11-09
Сообщений: 994
Windows XPOpera 11.64

Re: почему в программирование ноль - это первый элемент?

Подразумеваем первый элемент, но по нулевому смещению от начала массива, т.е. в языках с прямым доступом к памяти - без вариантов


Бывает, новые пользователи перезагружают компьютер, потому что не знают, как ещё можно выйти из vi
Ну ты пруфами не сыпь © Skynet2015
Провокатор хуев -) Я к тебе в твою конторку инсайдера зашлю, ты даже не узнаешь в какой момент тебя поимели -) © Rector, 2010-2015

Неактивен

#8 06-06-12 18:26:25

straus
Участник
Зарегистрирован: 01-06-11
Сообщений: 967
LinuxChrome 19.0.1084.52

Re: почему в программирование ноль - это первый элемент?

Luca пишет:

straus, как я понимаю ноль это все же ничто. Или нет? Просто только что статью про ноль читал и отсюда такой вопрос возник.

Нет, ноль - это ноль, а ничего - это ничего.

Luca пишет:

ну в теории логично, только считаем то мы всегда в жизни с одного т.е. если ничего нет, то это нельзя сосчитать

Скажите, а "-1" как cосчитать, а "-1,5", а sqrt(2), а 1+2i? Облать применения натурального множества даже в жизни домохозяйки ограничена.


В детстве я молил бога о велосипеде;
потом понял что бог работает по-другому...
я украл велосипед и стал молить бога о прощении.
Аль Пачино

Неактивен

#9 06-06-12 19:17:26

shell32
XP fan
Зарегистрирован: 28-08-10
Сообщений: 219
Windows 7Chrome 19.0.1084.52

Re: почему в программирование ноль - это первый элемент?

Luca пишет:

straus, как я понимаю ноль это все же ничто

В программировании ноль это не ничто, а такое же число как все остальные.

Белая рысь пишет:

PS: В Pascal массивы нумеруются с 1.

Неа, тоже с 0, по умолчанию. А вообще - можно задать с какого хочешь числа, например вот такой массив:

array[5..10] of Integer

будет нумероваться с 5.
С 1 там нумеруются символы в строках, да и то потому что строка в Pascal это массив где первый элемент хранит длину строки, а символы - начиная со второго (поэтому и нумеруются с 1).


25a12bc13076.gif  Windows == УМВР tongue

Неактивен

#10 06-06-12 19:38:38

Babusha
Нехристь
Зарегистрирован: 12-03-10
Сообщений: 2,160
Windows 7Chrome 19.0.1084.52

Re: почему в программирование ноль - это первый элемент?

В асме когда обращаешься к памяти [eax] - обращаешься к первому байту. [eax+1] - второму. Вот так и получается
[eax] -> [0]
[eax+1] -> [1]

Неактивен

#11 06-06-12 20:57:45

judas
Стефани forever
Из у меня нет ПМЖ
Зарегистрирован: 04-06-12
Сообщений: 9
Сайт
Windows 7Opera 11.64

Re: почему в программирование ноль - это первый элемент?

проблема не в нуле Luca, проблема в человеке.
Человек привык считать от 1 до 10, потому что у него столько пальцев. Человеку всё равно, сколько информации содержит 10 одни или 2 символа, ему удобней.
Компьютер не человек и он не понимает термины удобно-неудобно. У него есть некоторый объем информации например 1 байт. В этот объём вмещается 256 натуральных чисел от 0 до 255 (00-FF). Зачем программисту "терять" лишнее значение используя нумерацию по принципу "удобно", внося в код дополнительную путаницу.


я не умею ставить подписи

Неактивен

#12 06-06-12 23:51:55

Babusha
Нехристь
Зарегистрирован: 12-03-10
Сообщений: 2,160
MacintoshSafari 5.0

Re: почему в программирование ноль - это первый элемент?

judas, да, но, это все впитали и другие языки программирования. К примеру, такие скриптовые языки, как руби или питон, для них 20 мб памяти это вообще ничто. Но, нумерация элементов от нуля.

Неактивен

#13 07-06-12 14:47:16

judas
Стефани forever
Из у меня нет ПМЖ
Зарегистрирован: 04-06-12
Сообщений: 9
Сайт
Windows 7Opera 11.64

Re: почему в программирование ноль - это первый элемент?

Но, нумерация элементов от нуля.

Babusha, а где нумерация от единицы?


я не умею ставить подписи

Неактивен

#14 08-06-12 17:16:55

judas
Стефани forever
Из у меня нет ПМЖ
Зарегистрирован: 04-06-12
Сообщений: 9
Сайт
Windows 7Opera 11.64

Re: почему в программирование ноль - это первый элемент?

В некоторых диалектах Бейсика нумерация массивов была с единицы.

помнится такое, в прошедшем тысячелетии было )
В паскале например строчки до сих пор начинаются с единицы (string)


я не умею ставить подписи

Неактивен

#15 08-06-12 17:49:45

дохтур
Боевой дятел
Из Краматорск, ул. Железячкина
Зарегистрирован: 30-11-09
Сообщений: 994
Windows XPOpera 11.64

Re: почему в программирование ноль - это первый элемент?

judas пишет:

В паскале например строчки до сих пор начинаются с единицы (string)

Т.к. в нулевом байте - длина строки  smile


Бывает, новые пользователи перезагружают компьютер, потому что не знают, как ещё можно выйти из vi
Ну ты пруфами не сыпь © Skynet2015
Провокатор хуев -) Я к тебе в твою конторку инсайдера зашлю, ты даже не узнаешь в какой момент тебя поимели -) © Rector, 2010-2015

Неактивен

#16 08-06-12 19:44:33

Babusha
Нехристь
Зарегистрирован: 12-03-10
Сообщений: 2,160
Windows 7Chrome 19.0.1084.52

Re: почему в программирование ноль - это первый элемент?

дохтур пишет:

Т.к. в нулевом байте - длина строки

Т.е. в паскале нельзя сделать строку длиной 100h  бит? Даже в асме и то можно  big_smile

Неактивен

#17 08-06-12 20:58:33

SemyonKozakov
Журнашлюшка :)
Из Саратов
Зарегистрирован: 28-11-09
Сообщений: 4,109
Сайт
Windows 7Chrome 19.0.1084.52

Re: почему в программирование ноль - это первый элемент?

Babusha пишет:

Т.е. в паскале нельзя сделать строку длиной 100h  бит?

В обычном - нет, длина строки по умолчанию 255 символов, можно увеличить специальной командой (скорее всего, ей просто заводится отдельная константа). В Delphi можно.


https://nolinux.w2c.ru - море баттхерта и деаонимизации

Неактивен

#18 08-06-12 22:09:29

ikkunan salvataja
Участник
Зарегистрирован: 30-01-10
Сообщений: 2,688
LinuxFirefox 10.0.3

Re: почему в программирование ноль - это первый элемент?

Babusha пишет:

Даже в асме и то можно

Что значит даже? Всё, что можно сделать в любом языке программирования, можно сделать и в асме, и даже больше. Вопрос только в затратах времени на это. А вообще то такие понятия как символьная или числовая переменная к асму не применимы.


Yesterday it worked.
Today it is not working.
Windows is like that.

Неактивен

#19 08-06-12 22:15:31

Babusha
Нехристь
Зарегистрирован: 12-03-10
Сообщений: 2,160
Windows 7Chrome 19.0.1084.52

Re: почему в программирование ноль - это первый элемент?

ikkunan salvataja пишет:

Что значит даже? Всё, что можно сделать в любом языке программирования, можно сделать и в асме, и даже больше. Вопрос только в затратах времени на это. А вообще то такие понятия как символьная или числовая переменная к асму не применимы.

В асме вообще нет переменных, только регистры, только адреса памяти, только хардкор  smile

Неактивен

#20 19-06-12 11:44:08

DonDublon3
Участник
Из Уфа
Зарегистрирован: 06-05-10
Сообщений: 641
Windows 7Opera 12.00

Re: почему в программирование ноль - это первый элемент?

потому что так исторически сложилось с языка С.
есть переменная myvar - указатель, замечу.
можно обратиться к myvar[0], и к myvar[1], и вообще с любым натуральным смещением.
какой элемент логичнее считать отправным для массива? конечно, [0].


"Фу бля, крохобор вонючий" (с) Svart Testare

Неактивен

Kwork.ru - услуги фрилансеров от 500 руб.
Мой VPS с 2016 года !
✅ Виртуальные от 300 ₽/месяц, RAM 1-10GB, DISK 20-360 GB;
✅ Выделенные от 3000 ₽/месяц. RAM 4-64GB, DISK до 4TB;
✅ Intel Xeon, SSD, XEN, iLO/KVM, Windows/Linux, Администрирование;
✅ Бесплатно Full Backup и Anti-DDoS.





Подвал форума

Под управлением FluxBB
Модифицировал Visman

Яндекс.Метрика