Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Религиозные войны > Индексация массивов


Автор: mimik 7.11.2010, 17:50
Не могу понять почему в ЯП так популярна индексация массивов с нуля, ведь это как-то не логично, да и преимуществ вроде нет.

 smile 

Автор: FadilMamedov 7.11.2010, 18:42
Видимо сказывается традиция...

Автор: bilbobagginz 7.11.2010, 18:51
mimik, ваше предложение не содержит вопрос.
и не понятно пример чего вы хотите: яп индексуюзего с 0 или с 1 или вообще объяснения почему это так.
можете пояснить ?
 

Автор: mimik 7.11.2010, 18:56
Цитата(bilbobagginz @  7.11.2010,  18:51 Найти цитируемый пост)
mimik, ваше предложение не содержит вопрос.и не понятно пример чего вы хотите: яп индексуюзего с 0 или с 1 или вообще объяснения почему это так.можете пояснить ?

по моему логичней начинать индексацию массивов с 1, 
первый элемент - индекс 1

Добавлено через 4 минуты и 29 секунд
Цитата(bilbobagginz @  7.11.2010,  18:51 Найти цитируемый пост)
вообще объяснения почему это так

 smile 

Автор: A5uKa 8.11.2010, 15:02
ну положительные числа с нуля начинаются.

Автор: baldina 8.11.2010, 15:09
а это вот почему:
предположим, по адресу памяти A расположен массив.
тогда адрес первой ячейки это А, адрес второй - A+1, адрес i-й - A+i
представляя в форме доступа к элементу массива по индексу получаем
A[0], A[1]...A[i]

Автор: bars80080 8.11.2010, 15:17
Цитата(A5uKa @  8.11.2010,  14:02 Найти цитируемый пост)
ну положительные числа с нуля начинаются. 

ноль не является ни положительным, ни отрицательным числом


Цитата(mimik @  7.11.2010,  17:56 Найти цитируемый пост)
по моему логичней начинать индексацию массивов с 1, 
первый элемент - индекс 1

это по-человечески логично, однако, говоря о ЯП надо принимать машинную логику. что такое массив? по сути, это регистр, где каждый физический элемент памяти содержит элемент массива. а элементы эти выстроены по порядку. наглядно по наиболее простым ЯП виден этот момент, так как среди функций работы с массивами могут отсутствовать многие, но функции pop() и push() будут всегда. эти функции дословно означают - положить элемент в массив или забрать. при этом массив растёт, либо уменьшается. чистое поведение регистров.

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

всё очень даже логично. сделать конвертор из системы 1,2,3... в систему 0,1,2... конечно не сложно, но когда мы говорим о машинной логике, то эффективность выходит на первое место.

Автор: mimik 8.11.2010, 18:52
и всё-таки аргументы в пользу индексации массивов с 0, имхо, я не услышал

Цитата(bars80080 @  8.11.2010,  15:17 Найти цитируемый пост)
это по-человечески логично

 smile 

Цитата(bars80080 @  8.11.2010,  15:17 Найти цитируемый пост)
сделать конвертор из системы 1,2,3... в систему 0,1,2... конечно не сложно, но когда мы говорим о машинной логике, то эффективность выходит на первое место.

нет, это задача компилятора, я пишу array[2], а компилятор сам сделает array[1]

Автор: bilbobagginz 8.11.2010, 19:24
mimik, 
термин массив существует не только для языков высокаго уровня как Lisp/Java и т.д., но и для языков такого низкаго уровня как ассембли.
для того, чтобы не пояснять людям, изучающим информатику, что у одного языка индексация с 1 а у другого - 0, довольно умное решение вопроса - определить что такое массив концептуально, т.е. эстетическая причина.

Кроме того, в языках, работающих с памятью (без автоматических освободитлей мусора и т.д.), частенько удобно "шагать" через адреса посредством так называемой "арифметики указателей". Если бы первый элемент массива "A" был обозначен как "A+1" это намного некрасивее. (т.е. причина комфортабельности) 
С другой стороны можно было бы создать синтаксис, что если ты уже используешь арифметику указателей, т.е. разделитсь семантику A[i] от *(A+i), то нередко пришлось бы делать и без того уродливый синтаксис еще менее читабельным.
т.е. для единства подходов напр. в языке Си имеет смысл сделать и ту и другую нотации похожими (опять же, эстетика) 

Третья причина образовательная: инженер разработчик не "просто человек", а должен помнить об адресации памяти компьютера.
даже если он работает на языках высокаго уровня, ибо нефиг.


Автор: mimik 8.11.2010, 20:11
Цитата(bilbobagginz @  8.11.2010,  19:24 Найти цитируемый пост)
для того, чтобы не пояснять людям, изучающим информатику, что у одного языка индексация с 1 а у другого - 0

а сейчас разве не так?
открываю почти любую книгу и читаю что-то типо такого: помните что индексация массивов начинается с нуля

Цитата(bilbobagginz @  8.11.2010,  19:24 Найти цитируемый пост)
Третья причина образовательная: инженер разработчик не "просто человек", а должен помнить об адресации памяти компьютера

имхо, никак не связано


имхо, массивы это одно, а работа с памятью другое, хотя в некоторых языках это эквивалентно, что не есть гуд

Автор: baldina 8.11.2010, 20:26
mimik, Вам уже описали и преимущества, и логику. Повторюсь:
преимущества. не надо делать лишних усилий компилятору (да и программисту), переходя от обывательского понимания "первый" к математическому. меньше преобразований -> проще -> надежнее
логика. зависит от взгляда на массив и индексацию. если рассматривать индекс как смещение, то использовать ноль для индекса первого элемента логичнее, чем единицу.

Вы просто не привыкли. Операции вроде += в С/С++ тоже поначалу вызывают недоумение, неудобство, излишнее напряжение мысли. А когда втягиваешься, напрягать начинает a = a + b
Привыкнете, человек ко всему привыкает ;-)

Автор: mimik 8.11.2010, 20:35
Цитата(baldina @  8.11.2010,  20:26 Найти цитируемый пост)
mimik, Вам уже описали и преимущества, и логику

почему это так работает я понял, а преимущества я не увидел

Цитата(baldina @  8.11.2010,  20:26 Найти цитируемый пост)
не надо делать лишних усилий компилятору

(index - 1) вроде ничего сложного

я уже привык к этому синтаксису, но хочется писать для людей, а не для компилятора  smile 

Автор: bilbobagginz 8.11.2010, 21:17
Цитата(mimik @  8.11.2010,  19:11 Найти цитируемый пост)
имхо, массивы это одно, а работа с памятью другое, хотя в некоторых языках это эквивалентно, что не есть гуд 

если вам это настолько мешает, и считаете что это имеет смысл, напишите свой ЯП, свой компилятор и отладчик.
А потом посмотрите как хорошо он "пойдет", если пойдет - флаг в руки, респект, и т.д.

Удачи.


Автор: Фантом 8.11.2010, 23:05
Вообще-то в нормальных языках, в которых есть массивы, индексация может начинаться откуда угодно, более того, индекс нередко вообще может быть и не целым числом.  smile 

Фиксированное начало индексации есть в тех языках, где есть не столько массивы, сколько области памяти с указателями на них. Там - именно из-за адресной арифметики - действительно проще начинать с нуля.

Автор: skyboy 9.11.2010, 00:46
Цитата(Фантом @  8.11.2010,  22:05 Найти цитируемый пост)
индекс нередко вообще может быть и не целым числом

мы по-прежнему говорим о массивах? Или о мапах/хешах/гридах с синтаксисом таким же, как и у массивов?
Цитата(mimik @  8.11.2010,  19:35 Найти цитируемый пост)
а преимущества я не увидел

преимуществ чего? одной записи над другой?
я вот не вижу преимуществ использования знака "+" для операции сложения. 
нашел, в чем искать просто оптимизации.
я понимаю ещё - протестовать против неопределенностей вроде "++n++". 
забудь, прими как данность.
в Pascal/Delphi - вон с единицы нумерация. 

Автор: Фантом 9.11.2010, 01:06
Цитата(skyboy @  9.11.2010,  00:46 Найти цитируемый пост)

мы по-прежнему говорим о массивах? Или о мапах/хешах/гридах с синтаксисом таким же, как и у массивов?

Именно о массивах. Для этого вполне достаточно, чтобы между индексом массива и некоторым конечным набором целочисленных значений существовала биекция, устанавливаемая на этапе компиляции.  smile 

Автор: SelenIT 11.11.2010, 16:54
А кстати, вроде ж в каком-то дремучем бейсике можно было явно указывать OPTION BASE - и пиши после как себе удобнее. В самом деле, почему от этого отказались?

Автор: baldina 11.11.2010, 18:10
Цитата(SelenIT @  11.11.2010,  16:54 Найти цитируемый пост)
в каком-то дремучем бейсике можно было явно указывать OPTION BASE - и пиши после как себе удобнее. В самом деле, почему от этого отказались?

никто не отказывался. во многих языках есть (хотя бы на уровне библиотек) возможность работать с массивами, указывая Ubound/Lbound

Добавлено @ 18:12
Цитата(SelenIT @  11.11.2010,  16:54 Найти цитируемый пост)
и пиши после как себе удобнее

удобство удобству рознь. задачи, где в явном виде присутствуют массивы с заданными диапазонами, не так уж часто встречаются.
а в большинстве прочих случаев удобнее (см. выше) иметь базой 0

Автор: baldina 11.11.2010, 18:26
понимаю, подсознательно 0 не хочется за число признавать, и считаем мы от одного. недаром даже такие великие умы как пифагор и декарт ноль (да и отрицательные числа тоже) за число не признавали.
конечно, ведь с точки зрения "здравого смысла" ноль это пустота, ничто. 
его особое положение понятно с точки зрения алгебры: ноль является специальным элементом множества. но таки элементом множества (т.е. числом), а не отдельным объектом. и именно свойство a+0=a и дает нам удобство начинать счет от 0. это если смотреть на операции с массивами с точки зрения машинной арифметики, арифметики указателей и алгебры.

Добавлено через 1 минуту и 17 секунд
с обывательской удобнее "адын два тры", но программы пишут программисты  smile 

Автор: mes 21.11.2010, 21:51
Цитата(mimik @  8.11.2010,  19:35 Найти цитируемый пост)

я уже привык к этому синтаксису, но хочется писать для людей, а не для компилятора

Цитата(baldina @  11.11.2010,  17:26 Найти цитируемый пост)
с обывательской удобнее "адын два тры"


а с какого года начался первый век ? а компьютеров тогда еще не было   smile 


Автор: LSD 21.11.2010, 22:30
Цитата(A5uKa @  8.11.2010,  16:02 Найти цитируемый пост)
ну положительные числа с нуля начинаются.

И давно?

Автор: mimik 21.11.2010, 22:47
Цитата(mes @  21.11.2010,  21:51 Найти цитируемый пост)
а с какого года начался первый век ?

а при чем тут это?

да, что и начинается с нуля, например год, но только потому что он может быть а может и не быть(т.е. 0)
интересно а нулевой век есть?

имхо, не быавет массив без элемента

Автор: bars80080 21.11.2010, 22:51
Цитата(mimik @  21.11.2010,  21:47 Найти цитируемый пост)
интересно а нулевой век есть?

нет



Цитата(mimik @  21.11.2010,  21:47 Найти цитируемый пост)
имхо, не быавет массив без элемента 

пожалуйста
Код

$a = array();

нет элементов. и даже count() покажет 0

Автор: mimik 21.11.2010, 22:58
Цитата(bars80080 @  21.11.2010,  22:51 Найти цитируемый пост)
нет элементов. и даже count() покажет 0

имхо, это только определение типа

Код

if (array() == null) echo  'aha';

 smile 

Автор: gcc 22.11.2010, 00:58
Код

use Data::Dumper;

my $array = [[],666]; 

print Dumper $array->[0];
print "\n".Dumper $array;
print ref $array->[0];
print "\n\n".$array->[0];

my @a = qw();
print "\n\n".Dumper \@a;


вывело:
Код

./perll.pl

$VAR1 = [];

$VAR1 = [
          [],
          666
        ];
ARRAY

ARRAY(0x810017c)

$VAR1 = [];



ARRAY(0x810017c) - пустой массив, ссылка на массив  smile 


Автор: SelenIT 22.11.2010, 03:45
Цитата(mes @  21.11.2010,  21:51 Найти цитируемый пост)
а с какого года начался первый век ?

С первого, http://ru.wikipedia.org/wiki/%D0%9D%D1%83%D0%BB%D0%B5%D0%B2%D0%BE%D0%B9_%D0%B3%D0%BE%D0%B4#.D0.9E.D1.88.D0.B8.D0.B1.D0.BA.D0.B8_.D0.B2_.D0.BB.D0.B5.D1.82.D0.BE.D0.B8.D1.81.D1.87.D0.B8.D1.81.D0.BB.D0.B5.D0.BD.D0.B8.D0.B8...  smile 

Автор: baldina 22.11.2010, 09:32
первый год, второй год...
сейчас 2010. сколько лет от РХ пройдет, когда он закончится (и начнется 2011)? правильно, 2010.
при i=0 мы обрабатываем первый элемент массива.
когда он будет обработан (цикл перейдет к следующему шагу) будет обработан один элемент, i будет равно 1.

Добавлено через 3 минуты и 49 секунд
все от подхода зависит, от определения. если считать индекс массива синонимом смещения от начала (что в некоторых языках таковым является по определению), никаких сомнений и неудобств не будет

Добавлено через 5 минут и 50 секунд
Цитата(mimik @  21.11.2010,  22:47 Найти цитируемый пост)
имхо, не быавет массив без элемента

эт только ийхо. пустой карман бывает? а пустое множество? а пустой список, дерево?

Автор: mimik 22.11.2010, 14:07
Цитата(baldina @  22.11.2010,  09:32 Найти цитируемый пост)
а пустое множество? а пустой список, дерево?

это ∅ т.е. null/nil
я хотел сказать что если нет элементов то это пустое множество а не массив

Цитата(baldina @  22.11.2010,  09:32 Найти цитируемый пост)
пустой карман бывает?

нулевой карман бывает?

Автор: bars80080 22.11.2010, 15:34
Цитата(mimik @  22.11.2010,  13:07 Найти цитируемый пост)
это ∅

причём здесь диаметр?


Цитата(mimik @  22.11.2010,  13:07 Найти цитируемый пост)
 хотел сказать что если нет элементов то это пустое множество а не массив

а если есть элементы, то почему это массив, а не заполненное множество?

Автор: Kefir 27.12.2010, 22:46
С нуля надо начинать и не пудрите другим мозги. Это ж легче застрелиться, если на индексацию с единицы перейти. У меня в каждом цикле ошибки будут. То есть я к тому, что ноль - это традиция, привычка, обычай - как угодно называйте. А на единицу не переходят ибо просто незачем. Вот вам красоты хочется, а смысла от такого перехода - пшик.

Хотя нет. Вот вы представьте, перейдём мы все (Java, C++, C# etc.) на единицу в этом вопросе... вот подумайте только, как потом, лет через дцать мы будем трепать молодых программистов по макушке и по-доброму говорить: "Ех, молодёжь, не застали вы время, когда индексы с нуля начинались... Даааа, были временааа!". Потом на выбор можно затянуться трубкой или выпить глоточек виски...

Автор: SelenIT 28.12.2010, 17:30
Иногда нумерация с нуля всё же выносит мозг. Например, месяцы в JS-ном Date. Везде, скажем, декабрь — 12-й: что в русском формате даты, что в американском, что в SQL-ном., даже в PHP он идет 12-м (если считать с http://www.bash4all.ru/cite/017082/, как обычно;). Почему ж в JS он 11-й? Притом что дни нумеруются как надо привычно... smile

Цитата(Kefir @  27.12.2010,  22:46 Найти цитируемый пост)
Хотя нет. Вот вы представьте, перейдём мы все (Java, C++, C# etc.) на единицу в этом вопросе...

...и так по цепочке до самого ООН... и удивимся http://alisaselezneva.narod.ru/xxi.htm smile

Автор: LSD 29.12.2010, 12:34
Нумерация с нуля тяжкое наследие Си. И все прогрессивное программистское сообщество должно бороться с этим пережитком царизма! smile 

Автор: mimik 29.12.2010, 19:18
Цитата(Kefir @  27.12.2010,  22:46 Найти цитируемый пост)
С нуля надо начинать и не пудрите другим мозги.

не вижу аргументов

Цитата(Kefir @  27.12.2010,  22:46 Найти цитируемый пост)
Это ж легче застрелиться, если на индексацию с единицы перейти. У меня в каждом цикле ошибки будут.

от i = i + 1 к ++i как-то ж перешли, нет?

Цитата(Kefir @  27.12.2010,  22:46 Найти цитируемый пост)
У меня в каждом цикле ошибки будут. То есть я к тому, что ноль - это традиция, привычка, обычай - как угодно называйте.

хорошие аргументы, ага  smile 
Цитата(Kefir @  27.12.2010,  22:46 Найти цитируемый пост)
А на единицу не переходят ибо просто незачем. Вот вам красоты хочется, а смысла от такого перехода - пшик.

вы на асме кодируете?

Автор: Kefir 29.12.2010, 21:36
Цитата(mimik @  29.12.2010,  19:18 Найти цитируемый пост)
от i = i + 1 к ++i как-то ж перешли, нет?

Конечно перешли. Толку от этого - удобнее на плавиатуре набирать, не более.
(оффтопик) хотя мне больше нравится i += 1;  smile 


Цитата(mimik @  29.12.2010,  19:18 Найти цитируемый пост)
не вижу аргументов

Цитата(mimik @  29.12.2010,  19:18 Найти цитируемый пост)
хорошие аргументы, ага

У меня аргументы просты - если нет разницы, то смысла переходить нет. И если в случае с ++ можно было пользоваться старыми методами (i = i + 1), то в случае с индексом надо будет переучиваться. Это и есть мой аргумент - я не вижу никакого смысла менять ноль на единицу и пытаться к этому привыкнуть пока в этом нет никакого смысла. И дело не в том, что переучиваться сложно, а в том, что НЕ переучиваться в бесконечность раз проще.

Добавлено @ 21:38
Цитата(mimik @  29.12.2010,  19:18 Найти цитируемый пост)
вы на асме кодируете? 

Я на шарпе кодирую. И разработчики шарпа вместо бреда типа перехода с нулей на единицу добавляют туда реально вкусный сахар (var, await, async etc.). И полагаю, что разрабы других ЯП тоже стремятся сделать что-нибудь полезное  smile 

Автор: bems 1.1.2011, 21:04
Странная постановка вопроса. Как по мне так сравнивать принудительную индексацию с нуля и принудительной индексацией с единицы нет вообще никакого смысла (ну с нуля предпочтительней, потому что традиция). ТС почему-то не задумывается о массивах с произвольным типом и множеством индексов

Автор: GrayCardinal 11.1.2011, 19:07
В массивах в квадратных скобках просто пишут не адрес а _смещение_. Всего делов.

Автор: mimik 12.1.2011, 10:46
Цитата(bems @  1.1.2011,  21:04 Найти цитируемый пост)
ТС почему-то не задумывается о массивах с произвольным типом и множеством индексов

Цитата(GrayCardinal @  11.1.2011,  19:07 Найти цитируемый пост)
В массивах в квадратных скобках просто пишут не адрес а _смещение_.

 smile 

Цитата(GrayCardinal @  11.1.2011,  19:07 Найти цитируемый пост)
В массивах в квадратных скобках просто пишут не адрес а _смещение_

а если а языке нет указателей, то смещение как-то не логично, не?
Цитата(bems @  1.1.2011,  21:04 Найти цитируемый пост)
ТС почему-то не задумывается о массивах с произвольным типом и множеством индексов

и что тут не сходится?

Автор: bems 12.1.2011, 12:50
Что не сходится?

Автор: mimik 12.1.2011, 12:57
Цитата(bems @  1.1.2011,  21:04 Найти цитируемый пост)
ТС почему-то не задумывается о массивах с произвольным типом и множеством индексов

т.е. если массив начинается с 1, то о массивах с произвольным типом и множеством индексов задумывается не надо, а если с 0 то надо
вот и не сходится

Автор: bems 12.1.2011, 18:04
Оооой блин. Нет.
Массив должен начинаться чем захочется тому кто его объявляет, а не автору языка.

Автор: mimik 12.1.2011, 18:30
Цитата(bems @  12.1.2011,  18:04 Найти цитируемый пост)
Массив должен начинаться чем захочется тому кто его объявляет, а не автору языка.

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

Автор: bems 12.1.2011, 22:07
mimik, ты всегда указываешь размерность. Ничего не мешает указыввать при этом и стартовый индекс.

Автор: mes 12.1.2011, 22:55
Цитата(bems @  12.1.2011,  21:07 Найти цитируемый пост)
ты всегда указываешь размерность. Ничего не мешает указыввать при этом и стартовый индекс. 


не знаю приводили ли уже это: 
http://www.ict.edu.ru/ft/004781/m2_obe.pdf
Цитата

Более того,  нижняя граница индексов
теперь строго равна 0 и в описании массива фигурирует только количество элементов, а не пара
значений,  определяющих границы индексов.  Этот отход от уже устоявшейся традиции, 
восходящей своими корнями еще к языку Algol-60, наглядно демонстрирует принцип удаления из
языка всего несущественного.  Спецификация произвольной нижней границы вряд ли придает
языку дополнительную выразительную силу. В то же время это является скорее ограниченным
видом отображения индексов, которое ведет к скрытым вычислениям, несравнимым с удобством
использования. Скрытые накладные расходы проступают особенно сильно при проверке границ и
при работе с динамическими массивами. 

ну как тут спорить, если сам Никлаус Вирт, поклонник и прародитель всего человеку-удобного,  в своем стремлении довести Оберон до идеала, проголосовал за нуль в качестве нижней границы диапазона индексов массива.. 

Автор: Фантом 12.1.2011, 23:18
Цитата(mes @  12.1.2011,  22:55 Найти цитируемый пост)

ну как тут спорить, если сам Никлаус Вирт, в своем стремлении довести Оберон до идеала, проголосовал за нуль в качестве нижней границы диапазона индексов массива.. 

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

Автор: bems 13.1.2011, 00:07
Цитата(mes @  12.1.2011,  22:55 Найти цитируемый пост)
ну как тут спорить
А вот так. Он в маразм мог спасть. Это ничего не означает.

Автор: gcc 13.1.2011, 05:44
Цитата(Фантом @ 12.1.2011,  23:18)
Цитата(mes @  12.1.2011,  22:55 Найти цитируемый пост)

ну как тут спорить, если сам Никлаус Вирт, в своем стремлении довести Оберон до идеала, проголосовал за нуль в качестве нижней границы диапазона индексов массива.. 

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

интересно, в каких случаях?

мощно выглядят массивы вместе с хэшами и наоборот, например, массивы-хэшей (список пар хэшей)
где массив - это просто набор значений, а хэши как индексы...

для работы над элементами массивов, есть разные операторы: cross-, hyper-, reduce-, meta-operators
(где индексация не важна...)

Автор: mimik 13.1.2011, 12:47
Цитата(bems @  12.1.2011,  22:07 Найти цитируемый пост)
Ничего не мешает указыввать при этом и стартовый индекс.

это не очень удобно, ведь массив мы можем получить и из функций, или надо перед использованием надо смотреть на объявление
Цитата(mes @  12.1.2011,  22:55 Найти цитируемый пост)
ну как тут спорить, если сам Никлаус Вирт, поклонник и прародитель всего человеку-удобного,  в своем стремлении довести Оберон до идеала, проголосовал за нуль в качестве нижней границы диапазона индексов массива.. 

к его мнению я прислушиваюсь, но не более
Цитата(bems @  12.1.2011,  22:07 Найти цитируемый пост)
mimik, ты всегда указываешь размерность

Код

a = [2, 4, 6, 1, 7, 9]

Автор: Фантом 13.1.2011, 14:00
Цитата(gcc @  13.1.2011,  05:44 Найти цитируемый пост)
интересно, в каких случаях?

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

Автор: baldina 13.1.2011, 16:06
если
a[b] === *(a+b) === *(b+a) === b[a],
то алгебраически мы должны иметь моноид. для данной структуры операцией является операция сложения указателя с числом, а единицей - 0
поэтому индексация должна вестись с 0.

индексация с другого числа - частный случай этого, формально мы работаем со срезами
другая точка зрения - индексом мы задаем систему отсчета. тогда 0 нравится любителям локальных координат, а прочие индексы - любителям глобальных

как говорит А.Степанов, "depends on the definition"  smile 

Автор: Romper 21.1.2015, 13:53
Индексация с нуля — техническая оптимизация С, который складывал указатели, но она распространилась везде.

Если подумать, это совсем не естественно. Нужно постоянно держать в памяти этот −1. Почему, чтобы взять пятый элемент, я пишу arr[4]? Разве это удобно? Почему, если в списке 10 элементов, то взять десятый (arr[10]) — ошибка? Если беспокоитесь о производительности, храните указатель на начало массива−1.

Автор: Ilya81 21.1.2015, 16:27
Не исключаю, что неестественны нумерация с нуля, указания сначала адреса назначения, потом источника (функция CopyMemory), 1024 байта в килобайте и многое другое. Но неужели удаётся так прямо и думать об этом годами? Мне как-то всё это как-то стало привычным, и "неестественность" давным давно не замечаю.

Автор: bems 22.1.2015, 00:45
Цитата(Ilya81 @  21.1.2015,  16:27 Найти цитируемый пост)
указания сначала адреса назначения, потом источника (функция CopyMemory)

тот же порядок что в операторе присваивания

Автор: Ilya81 22.1.2015, 09:26
Скорее это аналогия с
Код

MOV EBX, EAX

который повторяет структуру команды процессоров Intel. Но слышал, что в своё время были процессоры с противоположным порядком операндов. Да и в обычной речи мы скорее скажем из пункта A в пункт B, чем в пункт B из пункта A. Но подобные особенности современных процессоров для меня слишком привычны, чтоб замечать, что где-то присутствует такая неестественность.

Автор: _zorn_ 22.1.2015, 17:08
Цитата(Ilya81 @  22.1.2015,  16:26 Найти цитируемый пост)
который повторяет структуру команды процессоров Intel. Но слышал, что в своё время были процессоры с противоположным порядком операндов.

Ну ёпта. Вы действительно думаете, что ПРОЦЕССОР видит команды в таком виде ? А АМД процессоры в каком виде команды видят ?  smile 
Открою для тебя страшную тайну. Процессоры видят команды в виде битов, а ассемблерные мнемоники как раз для людей.
И кстати есть еще https://ru.wikipedia.org/wiki/AT&T-%D1%81%D0%B8%D0%BD%D1%82%D0%B0%D0%BA%D1%81%D0%B8%D1%81 и процессор тут совсем не причем.
А слышали вы скорей всего о https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D1%80%D1%8F%D0%B4%D0%BE%D0%BA_%D0%B1%D0%B0%D0%B9%D1%82%D0%BE%D0%B2. И это не "в свое время", а есть и сейчас (little/big endian). 
Процессоров много и они не только в вашем системном блоке...

А по части нумерации - при чем тут какие то оптимизации ? В си массив - это просто указатель на область памяти, индекс смещение. Хотите создавайте массивы с размером на 1 элемент больше и индексируйте с 1, кто вам запрещает ?
Все таки си это язык с самыми большими возможностями выстрелить себе в ногу smile

Автор: Ilya81 23.1.2015, 09:59
Цитата(_zorn_ @  22.1.2015,  17:08 Найти цитируемый пост)
Ну ёпта. Вы действительно думаете, что ПРОЦЕССОР видит команды в таком виде ? А АМД процессоры в каком виде команды видят ?

Ну если я ничего не путаю, то команды процессоров - префиксный битовый код, в котором после кода команды следуют операнды во вполне определённой последовательности. И в процессорах Intel, насколько знаю, в команде копирования данных идёт сначала код/адрес (в зависимости от того, это регистр процессора, RAM или ещё там что) адресата, потом код/адрес источника. Более того, насколько я знаю, в виду того, что коды команд тоже придумываются людьми, то разница между кодами команд и операндами условна, т. е. предопределённые команды для соседних регистров имеют похожий битовый код.

И ещё, насколько я знаю, хоть нынче структура самих логических элементов внутри кристалла не имеет полного дискретного аналога, всё ж сами триггеры расположены в определённой последовательности (как и конденсаторы RAM и прочее), поэтому можно вполне чётко сказать о порядке расположения битового кода внутри процессора.
Цитата(_zorn_ @  22.1.2015,  17:08 Найти цитируемый пост)
И это не "в свое время", а есть и сейчас (little/big endian). 
Процессоров много и они не только в вашем системном блоке...

Это вполне вероятно, я просто подразумевал доминирующие нынче процессоры. А Intel, насколько знаю, нынче не слабо потеснил конкурентов, притом и в desktop/серверах, и в мобильных устройствах, и много ещё где.

Цитата(_zorn_ @  22.1.2015,  17:08 Найти цитируемый пост)
А по части нумерации - при чем тут какие то оптимизации ? В си массив - это просто указатель на область памяти, индекс смещение. Хотите создавайте массивы с размером на 1 элемент больше и индексируйте с 1, кто вам запрещает ?
Все таки си это язык с самыми большими возможностями выстрелить себе в ногу 

Но в C# и Java вольностей поменьше будет. Про Objective-C/Swift сказать затрудняюсь.

Автор: Romper 23.1.2015, 11:51
Цитата(_zorn_ @  22.1.2015,  17:08 Найти цитируемый пост)
В си массив - это просто указатель на область памяти

а что, кроме Си ЯП больше нет?

Цитата(_zorn_ @  22.1.2015,  17:08 Найти цитируемый пост)
Хотите создавайте массивы с размером на 1 элемент больше и индексируйте с 1

Цитата(Romper @  21.1.2015,  13:53 Найти цитируемый пост)
Если беспокоитесь о производительности, храните указатель на начало массива−1. 


Автор: _zorn_ 25.1.2015, 05:52
Цитата(Ilya81 @  23.1.2015,  16:59 Найти цитируемый пост)
 А Intel, насколько знаю, нынче не слабо потеснил конкурентов, притом и в desktop/серверах, и в мобильных устройствах, и много ещё где.

Про RISC процессоры я думаю нету смысла вам говорить. Но AMD же ? У них что все по другому ? При чем тут интел ? Вы про архитектуру х86 сейчас говорите, а не про процессоры интел. Кстати 64 битную архитектуру первыми замутили АМД, и набор инструкций сейчас называются AMD64  smile

Еще раз - типов процессоров намного больше чем в вашем системном блоке...

Цитата(Ilya81 @  23.1.2015,  16:59 Найти цитируемый пост)
И ещё, насколько я знаю, хоть нынче структура самих логических элементов внутри кристалла не имеет полного дискретного аналога, всё ж сами триггеры расположены в определённой последовательности (как и конденсаторы RAM и прочее), поэтому можно вполне чётко сказать о порядке расположения битового кода внутри процессора.

Вы о чем сейчас вообще ? О том что у программистов конденсаторы в мозгу расположены так же как в процессоре ?  smile 

Цитата(Romper @  23.1.2015,  18:51 Найти цитируемый пост)
а что, кроме Си ЯП больше нет?

Есть, но большинство поглядывает на си хотя бы по синтаксису )
Ну и он самый кросплатформенный  smile 


Цитата(Romper @  23.1.2015,  18:51 Найти цитируемый пост)
Цитата(_zorn_ @  22.1.2015,  17:08 Найти цитируемый пост)
Хотите создавайте массивы с размером на 1 элемент больше и индексируйте с 1
Цитата(Romper @  21.1.2015,  13:53 Найти цитируемый пост)
Если беспокоитесь о производительности, храните указатель на начало массива−1. 

Мой вариант предпочтительней. В вашем еще лишние телодвижения придется делать типа
Код

TYPE var[10];
var -= sizeof(TYPE);

Да и чревато последствиями если ваш код будет потом кто то дописывать. Ваши привычки он не знает, и будет мусорить перед массивами )
А если вы еще макросов налепите, или стандартные переопределите, то вообще ужас...

Автор: bems 25.1.2015, 15:22
Цитата(_zorn_ @  25.1.2015,  05:52 Найти цитируемый пост)
Ну и он самый кросплатформенный

чо правда?

Автор: ТоляМБА 25.1.2015, 16:09
Цитата(_zorn_ @  25.1.2015,  07:52 Найти цитируемый пост)
 стандартные переопределите, то вообще ужас

Цитата
<******> к вопросу о вчерашних скриптостраданиях. Только что кодер знакомый прислал, нашёл в коде программы, написанной уволенным коллегой незадолго до ухода:
<******> #define TRUE FALSE //счастливой отладки суки
* ****** такого извращённого юмора ещё не встречал
 http://bash.im/quote/268036

Автор: _zorn_ 26.1.2015, 04:56
Цитата(bems @  25.1.2015,  22:22 Найти цитируемый пост)
чо правда? 

А чо нет ? Линупс например в какие устройства только не пихают...

Автор: Ilya81 26.1.2015, 09:32
Цитата(_zorn_ @  25.1.2015,  05:52 Найти цитируемый пост)
Вы о чем сейчас вообще ? О том что у программистов конденсаторы в мозгу расположены так же как в процессоре ?   

В области биологии я не знаток, а вот что касается устройства вычислительной техники - насколько знаю, RAM чаще всего основывается на конденсаторах, а вот cache-память разного уровня - на триггерах. Ибо хотя б гигабайт (а по нынешним временам это совсем мало) памяти на триггерах стоил б совершенно немыслимую сумму денег.

А ещё о том упомянул, что со времён первых Pentium'ов для дальнейшего повышения производительности процессоров придумали структуру самих логических элементов внутри кристалла, у которой не существует точного эквивалента в виде отдельных транзисторов, резисторов и диодов. Впрочем, всё это с той поры ещё не раз менялось, чтоб энергопотребление процессоров не становилось запредельным при частоте в несколько гигагерц.

Но при этом триггеры, регистры, сумматоры и прочее имеют вполне разделённую в пространстве структуру даже с учётом всех ухищрений по размещению их внутри кристалла.

Цитата(_zorn_ @  25.1.2015,  05:52 Найти цитируемый пост)
Кстати 64 битную архитектуру первыми замутили АМД, и набор инструкций сейчас называются AMD64  

Много что менялось с той поры, насколько знаю, Apple тоже стал использовать процессоры Intel позже. Да и тот ж x86 нынче в мобильных устройствах распространён куда больше, чем прежде. А пример про x86 я привёл от того, что 64-битные приложения я ни разу не писал на ассемблере и всех их особенностей не знаю.

Автор: LSD 26.1.2015, 12:04
Цитата(bems @  25.1.2015,  16:22 Найти цитируемый пост)
чо правда?

Можешь назвать платформу для которой не существует компилятора Си?

Автор: Фантом 26.1.2015, 15:23
Цитата(LSD @  26.1.2015,  13:04 Найти цитируемый пост)

Можешь назвать платформу для которой не существует компилятора Си? 
 ENIAC подойдет?

Автор: baldina 26.1.2015, 16:13
ENIAC убийца ЯП. перемычки наше всё. 

Автор: LSD 26.1.2015, 17:17
Цитата(Фантом @  26.1.2015,  16:23 Найти цитируемый пост)
ENIAC подойдет?

user posted image

Автор: ТоляМБА 26.1.2015, 17:56
user posted image

Автор: baldina 26.1.2015, 18:22
на каком языке пишут дефчонки?
user posted image

Добавлено через 47 секунд
им, счастливым, проблемы индексации массивов по барабану

Автор: _zorn_ 27.1.2015, 11:23
Цитата(Фантом @  26.1.2015,  22:23 Найти цитируемый пост)
ENIAC подойдет?

Я знаю круче платформу
user posted image

Автор: ТоляМБА 27.1.2015, 11:46
Цитата(_zorn_ @  27.1.2015,  13:23 Найти цитируемый пост)
платформу

user posted image

Автор: LSD 27.1.2015, 13:23
Заканчивайте флуд, пока я вас в Аншлаг не отправил.

Автор: Bulat 28.1.2015, 11:56
Цитата(LSD @  26.1.2015,  12:04 Найти цитируемый пост)
Можешь назвать платформу для которой не существует компилятора Си? 

А как насчет ПЭВМ Агат??  smile 

Знаю точно на Агате можно было писать программы на бэйсике, а вот насчет С - точно не знаю!  smile 

Автор: _zorn_ 28.1.2015, 21:42
Цитата(Bulat @  28.1.2015,  18:56 Найти цитируемый пост)
А как насчет ПЭВМ Агат??

Инфа с википедии... мопед не мой короче  smile 
Цитата
ОС: вариации Apple DOS 3.3

Признаться немножко попотел нажимая на мышку smile
Но нашел http://en.wikipedia.org/wiki/Aztec_C

Автор: Bulat 28.1.2015, 22:35
Цитата(_zorn_ @  28.1.2015,  21:42 Найти цитируемый пост)
Инфа с википедии... мопед не мой короче  


Ну это еще бабушка на двое сказала! Первые версии Агата действительно использовали в качестве ПО переработанное яблочное! Но Агат поступивший в массовое производство имел ОС Школьница, написанный кстати на Рапире, был Бейсик. А вот был ли на нем хоть какая-то версия Си. А первые версии Агата это как раз из разряда ENIAC.  smile

Добавлено через 4 минуты и 32 секунды
http://deka18.tsk.ru/er/agat/Apps/Language.shtml - кстати вот здесь тоже пишут что был.... блин, но никаких архивов, никакого софта - на нем написанном не встречается и упоминание разве что в документах.

Добавлено через 5 минут и 9 секунд
Цитата(Bulat @  28.1.2015,  11:56 Найти цитируемый пост)
насчет С - точно не знаю!
  smile  smile 

Автор: baldina 29.1.2015, 14:34
Цитата(Bulat @  28.1.2015,  22:35 Найти цитируемый пост)
первые версии Агата это как раз из разряда ENIAC

ENIAC
Тактовая частота — 100 кГц
Вычислительная мощность — 357 операций умножения или 5000 операций сложения в секунду.
Объём памяти — 20 число-слов.
Потребляемая мощность — 174 кВт.
Вес — 27 тонн.
ЯП - двоичный десятичный код (задаваемый перемычками)

Агат
Тактовая частота — 1 МГц
Вычислительная мощность — 500 тыс. оп./с
Объем памяти — ПЗУ 2 КБ, ОЗУ 64—128 КБ 
Потребляемая мощность — 60 Вт.
Вес — 9 кг
ЯП — Ассемблер, BASIC, РАПИРА (а на Apple II ставились и Pascal, Лого. Под CP/M, который мог работать на Apple II при наличии платы расширения, были компиляторы Fortran и С)

для сравнения
Samsung Galaxy S5
Тактовая частота — 2.1 ГГц 
Вычислительная мощность — 1.57 DMIPS/MHz (без учета доп. свойств процессора и спец. процессоров)
Объем памяти — ОЗУ 2Гб, Flash 16/32 Гб
Вес — 145 г

Добавлено @ 14:36
http://deka18.tsk.ru/er/agat/Apps/C.shtml
smile

Автор: Bulat 29.1.2015, 16:03
Цитата(baldina @  29.1.2015,  14:34 Найти цитируемый пост)
Агат
Тактовая частота — 1 МГц
Вычислительная мощность — 500 тыс. оп./с
Объем памяти — ПЗУ 2 КБ, ОЗУ 64—128 КБ 
Потребляемая мощность — 60 Вт.
Вес — 9 кг
ЯП — Ассемблер, BASIC, РАПИРА (а на Apple II ставились и Pascal, Лого. Под CP/M, который мог работать на Apple II при наличии платы расширения, были компиляторы Fortran и С)

Это ты описываешь последние версии Агата(7-9), которые поступали уже в массовое производство! Но существовала еще версия Агат-4, выпущенная в небольшом количестве, но так и не поступившая в серийное производство, и ее характеристики были хуже того, что ты написал. Точно не знаю, это надо смотреть из архивных документов. А про версии Агат 1-2 и т.п. вообще молчу, про них никакой инфы уже не сохранилось!

Автор: baldina 29.1.2015, 21:55
Агат-4 не содержал НГМД и памяти поменьше было. не говоря уж про "качество сборки" (это не серийный образец, а у нас и серийные часто выглядели как пионерское поделие). Агат 1-3 не существовали, по крайней мере как готовые к употреблению образцы.

Автор: Bulat 30.1.2015, 07:09
Цитата(baldina @  29.1.2015,  21:55 Найти цитируемый пост)
Агат 1-3 не существовали, по крайней мере как готовые к употреблению образцы. 

Игра слов....... Агат 1-3 существовали, но это что-то из разряда ENIAC. Просто в силу сложившейся тенденции, отечественной культурой интересуемся гораздо меньше, чем западной. А интересовались бы больше - глядишь и инфы было бы больше!  smile 

Автор: baldina 30.1.2015, 14:20
во времена ENIAC были МЭСМ, потом БЭСМ. характеристики похожи.

Цитата(Bulat @  30.1.2015,  07:09 Найти цитируемый пост)
отечественной культурой интересуемся гораздо меньше, чем западной

Bulat, так поинтересуйся
история http://statehistory.ru/3932/Istoriya-razvitiya-sovetskikh-EVM-do-1980-go-goda/, http://statehistory.ru/1305/Istoriya-sozdaniya-mesm-pervoy-sovetskoy-EVM/ etc
https://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D1%81%D0%BE%D0%B2%D0%B5%D1%82%D1%81%D0%BA%D0%B8%D1%85_%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%BD%D1%8B%D1%85_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC

Автор: Bulat 30.1.2015, 14:59
Цитата(baldina @  30.1.2015,  14:20 Найти цитируемый пост)
во времена ENIAC были МЭСМ, потом БЭСМ. характеристики похожи.

Bulat, так поинтересуйся
история 1, 2 etc
список


Ты мне лучше дай инфу про первые версии Агата и сравним характеристики с тем же ENIAC и БЭСМ, а ссылки на википедию я и сам могу дать в большом количестве!  smile 

Автор: baldina 30.1.2015, 17:16
Цитата(Bulat @  30.1.2015,  14:59 Найти цитируемый пост)
дай инфу про первые версии Агата

найди то не знаю что? с чего ты взял что они существовали?

Добавлено через 2 минуты и 21 секунду
Цитата(Bulat @  30.1.2015,  07:09 Найти цитируемый пост)
что-то из разряда ENIAC

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

Автор: ТоляМБА 30.1.2015, 17:25
Цитата(baldina @  30.1.2015,  19:16 Найти цитируемый пост)
такой проект не мог исчезнуть бесследно. 

В России? Мог!

Автор: baldina 30.1.2015, 17:26
в институте НИИВК, где разработан Агат, во времена ENIAC создана M-1 (всего построен адын екземпляр). ниче общего с агатом она, понятно, не имела.
Агат был клоном apple II и до apple могло быть что угодно, но только не Агат.
так что никаких доводов пока не вижу

Автор: Bulat 31.1.2015, 09:25
Цитата(ТоляМБА @ 30.1.2015,  17:25)
Цитата(baldina @  30.1.2015,  19:16 Найти цитируемый пост)
такой проект не мог исчезнуть бесследно. 

В России? Мог!

У нас в России Камазы десятками исчезают бесследно - чего уж тут исчезнуть какой-то железяке! smile

Добавлено через 1 минуту и 1 секунду
Цитата(baldina @  30.1.2015,  17:26 Найти цитируемый пост)
так что никаких доводов пока не вижу 

С твоей стороны - да! Никаких доводов, одна игра слов, в народе именуемая демагогией!  smile 

Автор: Bulat 31.1.2015, 09:43
Цитата(baldina @  30.1.2015,  17:26 Найти цитируемый пост)
Агат был клоном apple II 

Знаешь что такое клон?? Клон - это когда ты берешь компьютер Эппл, меняешь название, цвет каркаса и называешь его Агат! Агат никогда не был клоном Эппл!  smile 

Автор: _zorn_ 1.2.2015, 11:27
Цитата(Bulat @  31.1.2015,  16:43 Найти цитируемый пост)
Знаешь что такое клон?? Клон - это когда ты берешь компьютер Эппл, меняешь название, цвет каркаса и называешь его Агат! Агат никогда не был клоном Эппл!  smile  

А китайцы всегда выпускали авторские разработки, ага. Ведь никогда тупо наклейки не переклеивали  smile 
Патриотом нужно быть в меру...

Автор: миг 1.2.2015, 11:58
Цитата(mimik @  7.11.2010,  17:50 Найти цитируемый пост)
Не могу понять почему в ЯП так популярна индексация массивов с нуля, ведь это как-то не логично, да и преимуществ вроде нет.

просто решили условно принять, что первая ячейка в массиве имеет индекс нуль. Ну, это как точка таяния снега условно принято за 0 градусов по цельсию. Если вам по какой то причине не удобен такой отсчет всегда можете сделать свой массив. Индексация которого будет начинаться с единицы. Теоретически можно замутить массив индексация, которого будет начинаться с минус ста до плюс пятьсот и тому подобное. Только зачем, чтобы другие программисты работающие с вами постоянно путались в начале и конце индексации массива? Вот вам и преимущество любой программист читающий и исправляющий мою программу знает, что первое число массива находится по нулевому индексу.

Автор: миг 1.2.2015, 12:19
Цитата(mes @  21.11.2010,  21:51 Найти цитируемый пост)
а с какого года начался первый век ? а компьютеров тогда еще не было 

1 век до н.э, а потом сразу 1 век н. э. Нулевого века не было.

Автор: mes 16.2.2015, 00:35
Цитата(миг @  1.2.2015,  11:19 Найти цитируемый пост)
1 век до н.э, а потом сразу 1 век н. э. Нулевого века не было. 

1й век - потому, что используете порядковые числительные, которые показывают вектор направления, притом разнонаправленый для "н.э." и "до н.э."

Код

                                                     .- ------------- событие [0]  
                                                     |                .- событие [0+1]
                                                     |                |
  v               v               v               V
  | ----<----- | ----<----- | -----<---- | ---->----- | ---->----- | ----->---- |
  3               2              1                0               1               2              3
        3rd            2nd             1st           1st            2nd           3rd 



Младенцу с рождения идет первый год, однако отсчет его жизни идет с нуля. И год исполняется только через год.
Поэтому важно понимать какая шкала используется. "Разносторонняя порядковая" удобна в повседневной жизни, но требует дополнительной логики,  при расчетах пересекающих границу.  В с (с++) решили для создания массива указывать верхнюю границу , а при обращении к элементу нижнюю границу : что в переводе на возраст младенца, вместо нечеткого "ему второй год" получается "ему год , два месяца, три дня, 4 часа, 5 минут"
 smile

Автор: Romper 18.2.2015, 16:10
В C++ тупо сделали из-за offset
т.е. arr[1] означает дай элемент с offset в 1 элемент, а не дай первый элемент
это удобно для компьютера но не для человека

Цитата(mes @  16.2.2015,  00:35 Найти цитируемый пост)
Младенцу с рождения идет первый год, однако отсчет его жизни идет с нуля

отсчет идет с секунд, а не с года, т.е. младенцу 2 месяца(большое число секунд)

Автор: _zorn_ 23.2.2015, 17:29
Цитата(Romper @  18.2.2015,  23:10 Найти цитируемый пост)
это удобно для компьютера но не для человека

Как сказать  smile 
Дело привычки опять же. Вон арабы вообще задом наперед пишут  smile 

Хватить филосовствовать на ровном месте  smile 

Автор: LSD 24.2.2015, 15:58
Цитата(_zorn_ @  23.2.2015,  18:29 Найти цитируемый пост)
Дело привычки опять же. Вон арабы вообще задом наперед пишут

Самое забавное, что люди даже не замечают что пишут числа задом наперед.

Автор: Bulat 15.2.2023, 14:53
Цитата(_zorn_ @  23.2.2015,  17:29 Найти цитируемый пост)
Дело привычки опять же. Вон арабы вообще задом наперед пишут

Не задом на перед, а справа на лево... это разные вещи...

Цитата(_zorn_ @  1.2.2015,  11:27 Найти цитируемый пост)
А китайцы всегда выпускали авторские разработки, ага. Ведь никогда тупо наклейки не переклеивали   
Патриотом нужно быть в меру...


Дело не в патриотизме, а просто в корректности.

Цитата

«Агат» был разработан на базе архитектурных решений компьютера Apple II Plus, но конструктивно и схемотехнически сильно отличался от прототипа.


https://ru.wikipedia.org/wiki/Агат_(компьютер)

Если назвать Агат - неким аналогом apple - соглашусь, но уж никак не клон. Клон это по сути точная копия, ну там на 95% схожая с оригиналом...  smile 

Автор: RubyLudwigValentin 6.3.2023, 07:31
Цитата(FadilMamedov @  7.11.2010,  18:42 Найти цитируемый пост)
Видимо сказывается традиция... 


Традиция языка C
В том же Паскале можно задать диапазон индексов [1..1000], и даже необязательно начинать с 1.
Можно даже сделать объявление перечисления например, type color={red, yellow, green} и проиндексировать его элементами массив.
Но настоящие программисты не боятся индексирования от 0, а делают так и в Java и в C#.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)