| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Религиозные войны > Индексация массивов |
| Автор: mimik 7.11.2010, 17:50 |
| Не могу понять почему в ЯП так популярна индексация массивов с нуля, ведь это как-то не логично, да и преимуществ вроде нет. |
| Автор: FadilMamedov 7.11.2010, 18:42 |
| Видимо сказывается традиция... |
| Автор: bilbobagginz 7.11.2010, 18:51 |
| mimik, ваше предложение не содержит вопрос. и не понятно пример чего вы хотите: яп индексуюзего с 0 или с 1 или вообще объяснения почему это так. можете пояснить ? |
| Автор: 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 | ||
ноль не является ни положительным, ни отрицательным числом
это по-человечески логично, однако, говоря о ЯП надо принимать машинную логику. что такое массив? по сути, это регистр, где каждый физический элемент памяти содержит элемент массива. а элементы эти выстроены по порядку. наглядно по наиболее простым ЯП виден этот момент, так как среди функций работы с массивами могут отсутствовать многие, но функции pop() и push() будут всегда. эти функции дословно означают - положить элемент в массив или забрать. при этом массив растёт, либо уменьшается. чистое поведение регистров. а в какой позиции регистра надо быть, чтобы получить первый элемент массива? конечно, в позиции ноль, ведь мы в него ещё не вошли. чтобы добраться до второго элемента - надо передвинуть считывающую головку на одну [1] позицию вглубь. всё очень даже логично. сделать конвертор из системы 1,2,3... в систему 0,1,2... конечно не сложно, но когда мы говорим о машинной логике, то эффективность выходит на первое место. |
| Автор: mimik 8.11.2010, 18:52 | ||
и всё-таки аргументы в пользу индексации массивов с 0, имхо, я не услышал
нет, это задача компилятора, я пишу 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 | ||||
а сейчас разве не так? открываю почти любую книгу и читаю что-то типо такого: помните что индексация массивов начинается с нуля
имхо, никак не связано имхо, массивы это одно, а работа с памятью другое, хотя в некоторых языках это эквивалентно, что не есть гуд |
| Автор: baldina 8.11.2010, 20:26 |
| mimik, Вам уже описали и преимущества, и логику. Повторюсь: преимущества. не надо делать лишних усилий компилятору (да и программисту), переходя от обывательского понимания "первый" к математическому. меньше преобразований -> проще -> надежнее логика. зависит от взгляда на массив и индексацию. если рассматривать индекс как смещение, то использовать ноль для индекса первого элемента логичнее, чем единицу. Вы просто не привыкли. Операции вроде += в С/С++ тоже поначалу вызывают недоумение, неудобство, излишнее напряжение мысли. А когда втягиваешься, напрягать начинает a = a + b Привыкнете, человек ко всему привыкает ;-) |
| Автор: mimik 8.11.2010, 20:35 |
почему это так работает я понял, а преимущества я не увидел (index - 1) вроде ничего сложного я уже привык к этому синтаксису, но хочется писать для людей, а не для компилятора |
| Автор: bilbobagginz 8.11.2010, 21:17 | ||
если вам это настолько мешает, и считаете что это имеет смысл, напишите свой ЯП, свой компилятор и отладчик. А потом посмотрите как хорошо он "пойдет", если пойдет - флаг в руки, респект, и т.д. Удачи. |
| Автор: Фантом 8.11.2010, 23:05 |
| Вообще-то в нормальных языках, в которых есть массивы, индексация может начинаться откуда угодно, более того, индекс нередко вообще может быть и не целым числом. Фиксированное начало индексации есть в тех языках, где есть не столько массивы, сколько области памяти с указателями на них. Там - именно из-за адресной арифметики - действительно проще начинать с нуля. |
| Автор: skyboy 9.11.2010, 00:46 |
мы по-прежнему говорим о массивах? Или о мапах/хешах/гридах с синтаксисом таким же, как и у массивов? преимуществ чего? одной записи над другой? я вот не вижу преимуществ использования знака "+" для операции сложения. нашел, в чем искать просто оптимизации. я понимаю ещё - протестовать против неопределенностей вроде "++n++". забудь, прими как данность. в Pascal/Delphi - вон с единицы нумерация. |
| Автор: Фантом 9.11.2010, 01:06 | ||
Именно о массивах. Для этого вполне достаточно, чтобы между индексом массива и некоторым конечным набором целочисленных значений существовала биекция, устанавливаемая на этапе компиляции. |
| Автор: SelenIT 11.11.2010, 16:54 |
| А кстати, вроде ж в каком-то дремучем бейсике можно было явно указывать OPTION BASE - и пиши после как себе удобнее. В самом деле, почему от этого отказались? |
| Автор: baldina 11.11.2010, 18:10 | ||
никто не отказывался. во многих языках есть (хотя бы на уровне библиотек) возможность работать с массивами, указывая Ubound/Lbound Добавлено @ 18:12 удобство удобству рознь. задачи, где в явном виде присутствуют массивы с заданными диапазонами, не так уж часто встречаются. а в большинстве прочих случаев удобнее (см. выше) иметь базой 0 |
| Автор: baldina 11.11.2010, 18:26 |
| понимаю, подсознательно 0 не хочется за число признавать, и считаем мы от одного. недаром даже такие великие умы как пифагор и декарт ноль (да и отрицательные числа тоже) за число не признавали. конечно, ведь с точки зрения "здравого смысла" ноль это пустота, ничто. его особое положение понятно с точки зрения алгебры: ноль является специальным элементом множества. но таки элементом множества (т.е. числом), а не отдельным объектом. и именно свойство a+0=a и дает нам удобство начинать счет от 0. это если смотреть на операции с массивами с точки зрения машинной арифметики, арифметики указателей и алгебры. Добавлено через 1 минуту и 17 секунд с обывательской удобнее "адын два тры", но программы пишут программисты |
| Автор: mes 21.11.2010, 21:51 | ||
а с какого года начался первый век ? а компьютеров тогда еще не было |
| Автор: LSD 21.11.2010, 22:30 |
И давно? |
| Автор: mimik 21.11.2010, 22:47 |
а при чем тут это? да, что и начинается с нуля, например год, но только потому что он может быть а может и не быть(т.е. 0) интересно а нулевой век есть? имхо, не быавет массив без элемента |
| Автор: bars80080 21.11.2010, 22:51 | ||
нет пожалуйста
нет элементов. и даже count() покажет 0 |
| Автор: mimik 21.11.2010, 22:58 | ||
имхо, это только определение типа
|
| Автор: gcc 22.11.2010, 00:58 | ||||
вывело:
ARRAY(0x810017c) - пустой массив, ссылка на массив |
| Автор: SelenIT 22.11.2010, 03:45 |
С первого, 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... |
| Автор: baldina 22.11.2010, 09:32 |
| первый год, второй год... сейчас 2010. сколько лет от РХ пройдет, когда он закончится (и начнется 2011)? правильно, 2010. при i=0 мы обрабатываем первый элемент массива. когда он будет обработан (цикл перейдет к следующему шагу) будет обработан один элемент, i будет равно 1. Добавлено через 3 минуты и 49 секунд все от подхода зависит, от определения. если считать индекс массива синонимом смещения от начала (что в некоторых языках таковым является по определению), никаких сомнений и неудобств не будет Добавлено через 5 минут и 50 секунд эт только ийхо. пустой карман бывает? а пустое множество? а пустой список, дерево? |
| Автор: mimik 22.11.2010, 14:07 |
это ∅ т.е. null/nil я хотел сказать что если нет элементов то это пустое множество а не массив нулевой карман бывает? |
| Автор: bars80080 22.11.2010, 15:34 | ||
причём здесь диаметр?
а если есть элементы, то почему это массив, а не заполненное множество? |
| Автор: 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-й? Притом что дни нумеруются как надо привычно...
...и так по цепочке до самого ООН... и удивимся http://alisaselezneva.narod.ru/xxi.htm |
| Автор: LSD 29.12.2010, 12:34 |
| Нумерация с нуля тяжкое наследие Си. И все прогрессивное программистское сообщество должно бороться с этим пережитком царизма! |
| Автор: mimik 29.12.2010, 19:18 | ||||||
не вижу аргументов
от i = i + 1 к ++i как-то ж перешли, нет?
хорошие аргументы, ага
вы на асме кодируете? |
| Автор: Kefir 29.12.2010, 21:36 |
Конечно перешли. Толку от этого - удобнее на плавиатуре набирать, не более. (оффтопик) хотя мне больше нравится i += 1; У меня аргументы просты - если нет разницы, то смысла переходить нет. И если в случае с ++ можно было пользоваться старыми методами (i = i + 1), то в случае с индексом надо будет переучиваться. Это и есть мой аргумент - я не вижу никакого смысла менять ноль на единицу и пытаться к этому привыкнуть пока в этом нет никакого смысла. И дело не в том, что переучиваться сложно, а в том, что НЕ переучиваться в бесконечность раз проще. Добавлено @ 21:38 Я на шарпе кодирую. И разработчики шарпа вместо бреда типа перехода с нулей на единицу добавляют туда реально вкусный сахар (var, await, async etc.). И полагаю, что разрабы других ЯП тоже стремятся сделать что-нибудь полезное |
| Автор: bems 1.1.2011, 21:04 |
| Странная постановка вопроса. Как по мне так сравнивать принудительную индексацию с нуля и принудительной индексацией с единицы нет вообще никакого смысла (ну с нуля предпочтительней, потому что традиция). ТС почему-то не задумывается о массивах с произвольным типом и множеством индексов |
| Автор: GrayCardinal 11.1.2011, 19:07 |
| В массивах в квадратных скобках просто пишут не адрес а _смещение_. Всего делов. |
| Автор: mimik 12.1.2011, 10:46 | ||||||||
а если а языке нет указателей, то смещение как-то не логично, не?
и что тут не сходится? |
| Автор: bems 12.1.2011, 12:50 |
| Что не сходится? |
| Автор: mimik 12.1.2011, 12:57 | ||
т.е. если массив начинается с 1, то о массивах с произвольным типом и множеством индексов задумывается не надо, а если с 0 то надо вот и не сходится |
| Автор: bems 12.1.2011, 18:04 |
| Оооой блин. Нет. Массив должен начинаться чем захочется тому кто его объявляет, а не автору языка. |
| Автор: mimik 12.1.2011, 18:30 | ||
т.е. я всегда должен указывать и индексы и элементы? |
| Автор: bems 12.1.2011, 22:07 |
| mimik, ты всегда указываешь размерность. Ничего не мешает указыввать при этом и стартовый индекс. |
| Автор: mes 12.1.2011, 22:55 | ||||
не знаю приводили ли уже это: http://www.ict.edu.ru/ft/004781/m2_obe.pdf
ну как тут спорить, если сам Никлаус Вирт, поклонник и прародитель всего человеку-удобного, в своем стремлении довести Оберон до идеала, проголосовал за нуль в качестве нижней границы диапазона индексов массива.. |
| Автор: Фантом 12.1.2011, 23:18 | ||
И тем не менее во многих случаях это чрезвычайно неудобно. Хотя язык и его компиляцию, конечно, упрощает. |
| Автор: bems 13.1.2011, 00:07 |
| А вот так. Он в маразм мог спасть. Это ничего не означает. |
| Автор: gcc 13.1.2011, 05:44 | ||||
интересно, в каких случаях? мощно выглядят массивы вместе с хэшами и наоборот, например, массивы-хэшей (список пар хэшей) где массив - это просто набор значений, а хэши как индексы... для работы над элементами массивов, есть разные операторы: cross-, hyper-, reduce-, meta-operators (где индексация не важна...) |
| Автор: mimik 13.1.2011, 12:47 | ||||
это не очень удобно, ведь массив мы можем получить и из функций, или надо перед использованием надо смотреть на объявление
к его мнению я прислушиваюсь, но не более
|
| Автор: Фантом 13.1.2011, 14:00 |
Ну, лично для меня это вычислительные задачи, в которых индексация может быть достаточно причудливой, а ее смещение - громадной работой, чреватой ошибками. |
| Автор: baldina 13.1.2011, 16:06 |
| если a[b] === *(a+b) === *(b+a) === b[a], то алгебраически мы должны иметь моноид. для данной структуры операцией является операция сложения указателя с числом, а единицей - 0 поэтому индексация должна вестись с 0. индексация с другого числа - частный случай этого, формально мы работаем со срезами другая точка зрения - индексом мы задаем систему отсчета. тогда 0 нравится любителям локальных координат, а прочие индексы - любителям глобальных как говорит А.Степанов, "depends on the definition" |
| Автор: 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 22.1.2015, 09:26 | ||
Скорее это аналогия с
который повторяет структуру команды процессоров Intel. Но слышал, что в своё время были процессоры с противоположным порядком операндов. Да и в обычной речи мы скорее скажем из пункта A в пункт B, чем в пункт B из пункта A. Но подобные особенности современных процессоров для меня слишком привычны, чтоб замечать, что где-то присутствует такая неестественность. |
| Автор: _zorn_ 22.1.2015, 17:08 | ||
Ну ёпта. Вы действительно думаете, что ПРОЦЕССОР видит команды в таком виде ? А АМД процессоры в каком виде команды видят ? Открою для тебя страшную тайну. Процессоры видят команды в виде битов, а ассемблерные мнемоники как раз для людей. И кстати есть еще 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, кто вам запрещает ? Все таки си это язык с самыми большими возможностями выстрелить себе в ногу |
| Автор: Ilya81 23.1.2015, 09:59 | ||||||
Ну если я ничего не путаю, то команды процессоров - префиксный битовый код, в котором после кода команды следуют операнды во вполне определённой последовательности. И в процессорах Intel, насколько знаю, в команде копирования данных идёт сначала код/адрес (в зависимости от того, это регистр процессора, RAM или ещё там что) адресата, потом код/адрес источника. Более того, насколько я знаю, в виду того, что коды команд тоже придумываются людьми, то разница между кодами команд и операндами условна, т. е. предопределённые команды для соседних регистров имеют похожий битовый код. И ещё, насколько я знаю, хоть нынче структура самих логических элементов внутри кристалла не имеет полного дискретного аналога, всё ж сами триггеры расположены в определённой последовательности (как и конденсаторы RAM и прочее), поэтому можно вполне чётко сказать о порядке расположения битового кода внутри процессора.
Это вполне вероятно, я просто подразумевал доминирующие нынче процессоры. А Intel, насколько знаю, нынче не слабо потеснил конкурентов, притом и в desktop/серверах, и в мобильных устройствах, и много ещё где.
Но в C# и Java вольностей поменьше будет. Про Objective-C/Swift сказать затрудняюсь. |
| Автор: Romper 23.1.2015, 11:51 | ||||
а что, кроме Си ЯП больше нет?
|
| Автор: _zorn_ 25.1.2015, 05:52 | ||||||||
Про RISC процессоры я думаю нету смысла вам говорить. Но AMD же ? У них что все по другому ? При чем тут интел ? Вы про архитектуру х86 сейчас говорите, а не про процессоры интел. Кстати 64 битную архитектуру первыми замутили АМД, и набор инструкций сейчас называются AMD64 Еще раз - типов процессоров намного больше чем в вашем системном блоке...
Вы о чем сейчас вообще ? О том что у программистов конденсаторы в мозгу расположены так же как в процессоре ? Есть, но большинство поглядывает на си хотя бы по синтаксису ) Ну и он самый кросплатформенный
Мой вариант предпочтительней. В вашем еще лишние телодвижения придется делать типа
Да и чревато последствиями если ваш код будет потом кто то дописывать. Ваши привычки он не знает, и будет мусорить перед массивами ) А если вы еще макросов налепите, или стандартные переопределите, то вообще ужас... |
| Автор: bems 25.1.2015, 15:22 |
чо правда? |
| Автор: ТоляМБА 25.1.2015, 16:09 | ||
|
| Автор: _zorn_ 26.1.2015, 04:56 |
А чо нет ? Линупс например в какие устройства только не пихают... |
| Автор: Ilya81 26.1.2015, 09:32 | ||||
В области биологии я не знаток, а вот что касается устройства вычислительной техники - насколько знаю, RAM чаще всего основывается на конденсаторах, а вот cache-память разного уровня - на триггерах. Ибо хотя б гигабайт (а по нынешним временам это совсем мало) памяти на триггерах стоил б совершенно немыслимую сумму денег. А ещё о том упомянул, что со времён первых Pentium'ов для дальнейшего повышения производительности процессоров придумали структуру самих логических элементов внутри кристалла, у которой не существует точного эквивалента в виде отдельных транзисторов, резисторов и диодов. Впрочем, всё это с той поры ещё не раз менялось, чтоб энергопотребление процессоров не становилось запредельным при частоте в несколько гигагерц. Но при этом триггеры, регистры, сумматоры и прочее имеют вполне разделённую в пространстве структуру даже с учётом всех ухищрений по размещению их внутри кристалла.
Много что менялось с той поры, насколько знаю, Apple тоже стал использовать процессоры Intel позже. Да и тот ж x86 нынче в мобильных устройствах распространён куда больше, чем прежде. А пример про x86 я привёл от того, что 64-битные приложения я ни разу не писал на ассемблере и всех их особенностей не знаю. |
| Автор: LSD 26.1.2015, 12:04 |
Можешь назвать платформу для которой не существует компилятора Си? |
| Автор: Фантом 26.1.2015, 15:23 |
| ENIAC подойдет? |
| Автор: baldina 26.1.2015, 16:13 |
| ENIAC убийца ЯП. перемычки наше всё. |
| Автор: LSD 26.1.2015, 17:17 |
![]() |
| Автор: ТоляМБА 26.1.2015, 17:56 |
![]() |
| Автор: baldina 26.1.2015, 18:22 |
на каком языке пишут дефчонки?![]() Добавлено через 47 секунд им, счастливым, проблемы индексации массивов по барабану |
| Автор: _zorn_ 27.1.2015, 11:23 |
Я знаю круче платформу ![]() |
| Автор: ТоляМБА 27.1.2015, 11:46 |
![]() |
| Автор: LSD 27.1.2015, 13:23 |
| Заканчивайте флуд, пока я вас в Аншлаг не отправил. |
| Автор: Bulat 28.1.2015, 11:56 |
А как насчет ПЭВМ Агат?? Знаю точно на Агате можно было писать программы на бэйсике, а вот насчет С - точно не знаю! |
| Автор: _zorn_ 28.1.2015, 21:42 | ||
Инфа с википедии... мопед не мой короче
Признаться немножко попотел нажимая на мышку Но нашел http://en.wikipedia.org/wiki/Aztec_C |
| Автор: Bulat 28.1.2015, 22:35 |
Ну это еще бабушка на двое сказала! Первые версии Агата действительно использовали в качестве ПО переработанное яблочное! Но Агат поступивший в массовое производство имел ОС Школьница, написанный кстати на Рапире, был Бейсик. А вот был ли на нем хоть какая-то версия Си. А первые версии Агата это как раз из разряда ENIAC. Добавлено через 4 минуты и 32 секунды http://deka18.tsk.ru/er/agat/Apps/Language.shtml - кстати вот здесь тоже пишут что был.... блин, но никаких архивов, никакого софта - на нем написанном не встречается и упоминание разве что в документах. Добавлено через 5 минут и 9 секунд |
| Автор: baldina 29.1.2015, 14:34 |
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 |
| Автор: Bulat 29.1.2015, 16:03 | ||
Это ты описываешь последние версии Агата(7-9), которые поступали уже в массовое производство! Но существовала еще версия Агат-4, выпущенная в небольшом количестве, но так и не поступившая в серийное производство, и ее характеристики были хуже того, что ты написал. Точно не знаю, это надо смотреть из архивных документов. А про версии Агат 1-2 и т.п. вообще молчу, про них никакой инфы уже не сохранилось! |
| Автор: baldina 29.1.2015, 21:55 |
| Агат-4 не содержал НГМД и памяти поменьше было. не говоря уж про "качество сборки" (это не серийный образец, а у нас и серийные часто выглядели как пионерское поделие). Агат 1-3 не существовали, по крайней мере как готовые к употреблению образцы. |
| Автор: Bulat 30.1.2015, 07:09 | ||
Игра слов....... Агат 1-3 существовали, но это что-то из разряда ENIAC. Просто в силу сложившейся тенденции, отечественной культурой интересуемся гораздо меньше, чем западной. А интересовались бы больше - глядишь и инфы было бы больше! |
| Автор: baldina 30.1.2015, 14:20 |
| во времена ENIAC были МЭСМ, потом БЭСМ. характеристики похожи. 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 | ||
Ты мне лучше дай инфу про первые версии Агата и сравним характеристики с тем же ENIAC и БЭСМ, а ссылки на википедию я и сам могу дать в большом количестве! |
| Автор: baldina 30.1.2015, 17:16 |
найди то не знаю что? с чего ты взял что они существовали? Добавлено через 2 минуты и 21 секунду я сильно сомневаюсь, т.к. подобные проекты тогда занимали сотни метров, весили десятки тонн и стоили кучу народных денежков (выделяемых централизованно через госплан). такой проект не мог исчезнуть бесследно. |
| Автор: ТоляМБА 30.1.2015, 17:25 |
В России? Мог! |
| Автор: baldina 30.1.2015, 17:26 |
| в институте НИИВК, где разработан Агат, во времена ENIAC создана M-1 (всего построен адын екземпляр). ниче общего с агатом она, понятно, не имела. Агат был клоном apple II и до apple могло быть что угодно, но только не Агат. так что никаких доводов пока не вижу |
| Автор: Bulat 31.1.2015, 09:25 | ||
У нас в России Камазы десятками исчезают бесследно - чего уж тут исчезнуть какой-то железяке! Добавлено через 1 минуту и 1 секунду С твоей стороны - да! Никаких доводов, одна игра слов, в народе именуемая демагогией! |
| Автор: Bulat 31.1.2015, 09:43 |
Знаешь что такое клон?? Клон - это когда ты берешь компьютер Эппл, меняешь название, цвет каркаса и называешь его Агат! Агат никогда не был клоном Эппл! |
| Автор: _zorn_ 1.2.2015, 11:27 | ||
А китайцы всегда выпускали авторские разработки, ага. Ведь никогда тупо наклейки не переклеивали Патриотом нужно быть в меру... |
| Автор: миг 1.2.2015, 11:58 | ||
просто решили условно принять, что первая ячейка в массиве имеет индекс нуль. Ну, это как точка таяния снега условно принято за 0 градусов по цельсию. Если вам по какой то причине не удобен такой отсчет всегда можете сделать свой массив. Индексация которого будет начинаться с единицы. Теоретически можно замутить массив индексация, которого будет начинаться с минус ста до плюс пятьсот и тому подобное. Только зачем, чтобы другие программисты работающие с вами постоянно путались в начале и конце индексации массива? Вот вам и преимущество любой программист читающий и исправляющий мою программу знает, что первое число массива находится по нулевому индексу. |
| Автор: миг 1.2.2015, 12:19 | ||
1 век до н.э, а потом сразу 1 век н. э. Нулевого века не было. |
| Автор: mes 16.2.2015, 00:35 | ||
1й век - потому, что используете порядковые числительные, которые показывают вектор направления, притом разнонаправленый для "н.э." и "до н.э."
Младенцу с рождения идет первый год, однако отсчет его жизни идет с нуля. И год исполняется только через год. Поэтому важно понимать какая шкала используется. "Разносторонняя порядковая" удобна в повседневной жизни, но требует дополнительной логики, при расчетах пересекающих границу. В с (с++) решили для создания массива указывать верхнюю границу , а при обращении к элементу нижнюю границу : что в переводе на возраст младенца, вместо нечеткого "ему второй год" получается "ему год , два месяца, три дня, 4 часа, 5 минут" |
| Автор: Romper 18.2.2015, 16:10 | ||
| В C++ тупо сделали из-за offset т.е. arr[1] означает дай элемент с offset в 1 элемент, а не дай первый элемент это удобно для компьютера но не для человека
отсчет идет с секунд, а не с года, т.е. младенцу 2 месяца(большое число секунд) |
| Автор: _zorn_ 23.2.2015, 17:29 |
Как сказать Дело привычки опять же. Вон арабы вообще задом наперед пишут Хватить филосовствовать на ровном месте |
| Автор: LSD 24.2.2015, 15:58 |
Самое забавное, что люди даже не замечают что пишут числа задом наперед. |
| Автор: Bulat 15.2.2023, 14:53 | ||||
Не задом на перед, а справа на лево... это разные вещи...
Дело не в патриотизме, а просто в корректности.
https://ru.wikipedia.org/wiki/Агат_(компьютер) Если назвать Агат - неким аналогом apple - соглашусь, но уж никак не клон. Клон это по сути точная копия, ну там на 95% схожая с оригиналом... |
| Автор: RubyLudwigValentin 6.3.2023, 07:31 |
Традиция языка C В том же Паскале можно задать диапазон индексов [1..1000], и даже необязательно начинать с 1. Можно даже сделать объявление перечисления например, type color={red, yellow, green} и проиндексировать его элементами массив. Но настоящие программисты не боятся индексирования от 0, а делают так и в Java и в C#. |