|
Модераторы: LSD |
|
mimik |
|
|||
не Rohoss Я Профиль Группа: Участник Сообщений: 69 Регистрация: 1.11.2010 Репутация: нет Всего: 2 |
Не могу понять почему в ЯП так популярна индексация массивов с нуля, ведь это как-то не логично, да и преимуществ вроде нет.
|
|||
|
||||
FadilMamedov |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 5.11.2010 Репутация: нет Всего: нет |
Видимо сказывается традиция...
|
|||
|
||||
bilbobagginz |
|
|||
Naughtius Maximus Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: 6 Всего: 317 |
mimik, ваше предложение не содержит вопрос.
и не понятно пример чего вы хотите: яп индексуюзего с 0 или с 1 или вообще объяснения почему это так. можете пояснить ? -------------------- Я ещё не демон. Я только учусь. |
|||
|
||||
mimik |
|
|||
не Rohoss Я Профиль Группа: Участник Сообщений: 69 Регистрация: 1.11.2010 Репутация: нет Всего: 2 |
по моему логичней начинать индексацию массивов с 1, первый элемент - индекс 1 Добавлено через 4 минуты и 29 секунд |
|||
|
||||
A5uKa |
|
|||
TЋ♥s F1rȜ iƧ BurȠiƞg Профиль Группа: Awaiting Authorisation Сообщений: 1928 Регистрация: 30.8.2008 Репутация: 1 Всего: 16 |
ну положительные числа с нуля начинаются.
|
|||
|
||||
baldina |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
а это вот почему:
предположим, по адресу памяти A расположен массив. тогда адрес первой ячейки это А, адрес второй - A+1, адрес i-й - A+i представляя в форме доступа к элементу массива по индексу получаем A[0], A[1]...A[i] |
|||
|
||||
bars80080 |
|
|||
прапор творюет Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 3 Всего: 315 |
ноль не является ни положительным, ни отрицательным числом
это по-человечески логично, однако, говоря о ЯП надо принимать машинную логику. что такое массив? по сути, это регистр, где каждый физический элемент памяти содержит элемент массива. а элементы эти выстроены по порядку. наглядно по наиболее простым ЯП виден этот момент, так как среди функций работы с массивами могут отсутствовать многие, но функции pop() и push() будут всегда. эти функции дословно означают - положить элемент в массив или забрать. при этом массив растёт, либо уменьшается. чистое поведение регистров. а в какой позиции регистра надо быть, чтобы получить первый элемент массива? конечно, в позиции ноль, ведь мы в него ещё не вошли. чтобы добраться до второго элемента - надо передвинуть считывающую головку на одну [1] позицию вглубь. всё очень даже логично. сделать конвертор из системы 1,2,3... в систему 0,1,2... конечно не сложно, но когда мы говорим о машинной логике, то эффективность выходит на первое место. |
|||
|
||||
mimik |
|
|||
не Rohoss Я Профиль Группа: Участник Сообщений: 69 Регистрация: 1.11.2010 Репутация: нет Всего: 2 |
и всё-таки аргументы в пользу индексации массивов с 0, имхо, я не услышал
нет, это задача компилятора, я пишу array[2], а компилятор сам сделает array[1] Это сообщение отредактировал(а) mimik - 8.11.2010, 18:54 |
|||
|
||||
bilbobagginz |
|
|||
Naughtius Maximus Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: 6 Всего: 317 |
mimik,
термин массив существует не только для языков высокаго уровня как Lisp/Java и т.д., но и для языков такого низкаго уровня как ассембли. для того, чтобы не пояснять людям, изучающим информатику, что у одного языка индексация с 1 а у другого - 0, довольно умное решение вопроса - определить что такое массив концептуально, т.е. эстетическая причина. Кроме того, в языках, работающих с памятью (без автоматических освободитлей мусора и т.д.), частенько удобно "шагать" через адреса посредством так называемой "арифметики указателей". Если бы первый элемент массива "A" был обозначен как "A+1" это намного некрасивее. (т.е. причина комфортабельности) С другой стороны можно было бы создать синтаксис, что если ты уже используешь арифметику указателей, т.е. разделитсь семантику A[i] от *(A+i), то нередко пришлось бы делать и без того уродливый синтаксис еще менее читабельным. т.е. для единства подходов напр. в языке Си имеет смысл сделать и ту и другую нотации похожими (опять же, эстетика) Третья причина образовательная: инженер разработчик не "просто человек", а должен помнить об адресации памяти компьютера. даже если он работает на языках высокаго уровня, ибо нефиг. -------------------- Я ещё не демон. Я только учусь. |
|||
|
||||
mimik |
|
||||
не Rohoss Я Профиль Группа: Участник Сообщений: 69 Регистрация: 1.11.2010 Репутация: нет Всего: 2 |
а сейчас разве не так? открываю почти любую книгу и читаю что-то типо такого: помните что индексация массивов начинается с нуля
имхо, никак не связано имхо, массивы это одно, а работа с памятью другое, хотя в некоторых языках это эквивалентно, что не есть гуд |
||||
|
|||||
baldina |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
mimik, Вам уже описали и преимущества, и логику. Повторюсь:
преимущества. не надо делать лишних усилий компилятору (да и программисту), переходя от обывательского понимания "первый" к математическому. меньше преобразований -> проще -> надежнее логика. зависит от взгляда на массив и индексацию. если рассматривать индекс как смещение, то использовать ноль для индекса первого элемента логичнее, чем единицу. Вы просто не привыкли. Операции вроде += в С/С++ тоже поначалу вызывают недоумение, неудобство, излишнее напряжение мысли. А когда втягиваешься, напрягать начинает a = a + b Привыкнете, человек ко всему привыкает ;-) |
|||
|
||||
mimik |
|
|||
не Rohoss Я Профиль Группа: Участник Сообщений: 69 Регистрация: 1.11.2010 Репутация: нет Всего: 2 |
почему это так работает я понял, а преимущества я не увидел (index - 1) вроде ничего сложного я уже привык к этому синтаксису, но хочется писать для людей, а не для компилятора Это сообщение отредактировал(а) mimik - 8.11.2010, 20:38 |
|||
|
||||
bilbobagginz |
|
|||
Naughtius Maximus Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: 6 Всего: 317 |
если вам это настолько мешает, и считаете что это имеет смысл, напишите свой ЯП, свой компилятор и отладчик. А потом посмотрите как хорошо он "пойдет", если пойдет - флаг в руки, респект, и т.д. Удачи. -------------------- Я ещё не демон. Я только учусь. |
|||
|
||||
Фантом |
|
|||
Вы это прекратите! Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: нет Всего: 49 |
Вообще-то в нормальных языках, в которых есть массивы, индексация может начинаться откуда угодно, более того, индекс нередко вообще может быть и не целым числом.
Фиксированное начало индексации есть в тех языках, где есть не столько массивы, сколько области памяти с указателями на них. Там - именно из-за адресной арифметики - действительно проще начинать с нуля. |
|||
|
||||
skyboy |
|
|||
неОпытный Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 1 Всего: 260 |
мы по-прежнему говорим о массивах? Или о мапах/хешах/гридах с синтаксисом таким же, как и у массивов? преимуществ чего? одной записи над другой? я вот не вижу преимуществ использования знака "+" для операции сложения. нашел, в чем искать просто оптимизации. я понимаю ещё - протестовать против неопределенностей вроде "++n++". забудь, прими как данность. в Pascal/Delphi - вон с единицы нумерация. |
|||
|
||||
Фантом |
|
|||
Вы это прекратите! Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: нет Всего: 49 |
Именно о массивах. Для этого вполне достаточно, чтобы между индексом массива и некоторым конечным набором целочисленных значений существовала биекция, устанавливаемая на этапе компиляции. |
|||
|
||||
SelenIT |
|
|||
баг форума Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 5 Всего: 401 |
А кстати, вроде ж в каком-то дремучем бейсике можно было явно указывать OPTION BASE - и пиши после как себе удобнее. В самом деле, почему от этого отказались?
-------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
baldina |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
никто не отказывался. во многих языках есть (хотя бы на уровне библиотек) возможность работать с массивами, указывая Ubound/Lbound Добавлено @ 18:12 удобство удобству рознь. задачи, где в явном виде присутствуют массивы с заданными диапазонами, не так уж часто встречаются. а в большинстве прочих случаев удобнее (см. выше) иметь базой 0 Это сообщение отредактировал(а) baldina - 11.11.2010, 18:12 |
|||
|
||||
baldina |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
понимаю, подсознательно 0 не хочется за число признавать, и считаем мы от одного. недаром даже такие великие умы как пифагор и декарт ноль (да и отрицательные числа тоже) за число не признавали.
конечно, ведь с точки зрения "здравого смысла" ноль это пустота, ничто. его особое положение понятно с точки зрения алгебры: ноль является специальным элементом множества. но таки элементом множества (т.е. числом), а не отдельным объектом. и именно свойство a+0=a и дает нам удобство начинать счет от 0. это если смотреть на операции с массивами с точки зрения машинной арифметики, арифметики указателей и алгебры. Добавлено через 1 минуту и 17 секунд с обывательской удобнее "адын два тры", но программы пишут программисты |
|||
|
||||
mes |
|
|||
любитель Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
||||
|
||||
LSD |
|
|||
Leprechaun Software Developer Профиль Группа: Модератор Сообщений: 15709 Регистрация: 24.3.2004 Репутация: 9 Всего: 537 |
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
mimik |
|
|||
не Rohoss Я Профиль Группа: Участник Сообщений: 69 Регистрация: 1.11.2010 Репутация: нет Всего: 2 |
||||
|
||||
bars80080 |
|
|||
прапор творюет Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 3 Всего: 315 |
||||
|
||||
mimik |
|
|||
не Rohoss Я Профиль Группа: Участник Сообщений: 69 Регистрация: 1.11.2010 Репутация: нет Всего: 2 |
||||
|
||||
gcc |
|
||||
Агент алкомафии Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: нет Всего: 17 |
вывело:
ARRAY(0x810017c) - пустой массив, ссылка на массив Это сообщение отредактировал(а) gcc - 22.11.2010, 02:48 |
||||
|
|||||
SelenIT |
|
|||
баг форума Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 5 Всего: 401 |
-------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
baldina |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
первый год, второй год...
сейчас 2010. сколько лет от РХ пройдет, когда он закончится (и начнется 2011)? правильно, 2010. при i=0 мы обрабатываем первый элемент массива. когда он будет обработан (цикл перейдет к следующему шагу) будет обработан один элемент, i будет равно 1. Добавлено через 3 минуты и 49 секунд все от подхода зависит, от определения. если считать индекс массива синонимом смещения от начала (что в некоторых языках таковым является по определению), никаких сомнений и неудобств не будет Добавлено через 5 минут и 50 секунд эт только ийхо. пустой карман бывает? а пустое множество? а пустой список, дерево? |
|||
|
||||
mimik |
|
|||
не Rohoss Я Профиль Группа: Участник Сообщений: 69 Регистрация: 1.11.2010 Репутация: нет Всего: 2 |
||||
|
||||
bars80080 |
|
|||
прапор творюет Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 3 Всего: 315 |
||||
|
||||
Kefir |
|
|||
«Hakuna Matata» Профиль Группа: Комодератор Сообщений: 1878 Регистрация: 25.1.2003 Где: Tampere, Suomi Репутация: 4 Всего: 87 |
С нуля надо начинать и не пудрите другим мозги. Это ж легче застрелиться, если на индексацию с единицы перейти. У меня в каждом цикле ошибки будут. То есть я к тому, что ноль - это традиция, привычка, обычай - как угодно называйте. А на единицу не переходят ибо просто незачем. Вот вам красоты хочется, а смысла от такого перехода - пшик.
Хотя нет. Вот вы представьте, перейдём мы все (Java, C++, C# etc.) на единицу в этом вопросе... вот подумайте только, как потом, лет через дцать мы будем трепать молодых программистов по макушке и по-доброму говорить: "Ех, молодёжь, не застали вы время, когда индексы с нуля начинались... Даааа, были временааа!". Потом на выбор можно затянуться трубкой или выпить глоточек виски... |
|||
|
||||
SelenIT |
|
|||
баг форума Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 5 Всего: 401 |
Иногда нумерация с нуля всё же выносит мозг. Например, месяцы в JS-ном Date. Везде, скажем, декабрь — 12-й: что в русском формате даты, что в американском, что в SQL-ном., даже в PHP он идет 12-м (если считать с нулября, как обычно;). Почему ж в JS он 11-й? Притом что дни нумеруются как надо привычно...
...и так по цепочке до самого ООН... и удивимся очередному блестящему предсказанию -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
LSD |
|
|||
Leprechaun Software Developer Профиль Группа: Модератор Сообщений: 15709 Регистрация: 24.3.2004 Репутация: 9 Всего: 537 |
Нумерация с нуля тяжкое наследие Си. И все прогрессивное программистское сообщество должно бороться с этим пережитком царизма!
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
mimik |
|
||||||
не Rohoss Я Профиль Группа: Участник Сообщений: 69 Регистрация: 1.11.2010 Репутация: нет Всего: 2 |
не вижу аргументов
от i = i + 1 к ++i как-то ж перешли, нет?
хорошие аргументы, ага
вы на асме кодируете? |
||||||
|
|||||||
Kefir |
|
|||
«Hakuna Matata» Профиль Группа: Комодератор Сообщений: 1878 Регистрация: 25.1.2003 Где: Tampere, Suomi Репутация: 4 Всего: 87 |
Конечно перешли. Толку от этого - удобнее на плавиатуре набирать, не более. (оффтопик) хотя мне больше нравится i += 1; У меня аргументы просты - если нет разницы, то смысла переходить нет. И если в случае с ++ можно было пользоваться старыми методами (i = i + 1), то в случае с индексом надо будет переучиваться. Это и есть мой аргумент - я не вижу никакого смысла менять ноль на единицу и пытаться к этому привыкнуть пока в этом нет никакого смысла. И дело не в том, что переучиваться сложно, а в том, что НЕ переучиваться в бесконечность раз проще. Добавлено @ 21:38 Я на шарпе кодирую. И разработчики шарпа вместо бреда типа перехода с нулей на единицу добавляют туда реально вкусный сахар (var, await, async etc.). И полагаю, что разрабы других ЯП тоже стремятся сделать что-нибудь полезное Это сообщение отредактировал(а) Kefir - 29.12.2010, 21:39 |
|||
|
||||
bems |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 0 Всего: 88 |
Странная постановка вопроса. Как по мне так сравнивать принудительную индексацию с нуля и принудительной индексацией с единицы нет вообще никакого смысла (ну с нуля предпочтительней, потому что традиция). ТС почему-то не задумывается о массивах с произвольным типом и множеством индексов
-------------------- Обижено школьников: 8 |
|||
|
||||
GrayCardinal |
|
|||
Фигасе Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: нет Всего: 58 |
В массивах в квадратных скобках просто пишут не адрес а _смещение_. Всего делов.
|
|||
|
||||
mimik |
|
||||||||
не Rohoss Я Профиль Группа: Участник Сообщений: 69 Регистрация: 1.11.2010 Репутация: нет Всего: 2 |
а если а языке нет указателей, то смещение как-то не логично, не?
и что тут не сходится? |
||||||||
|
|||||||||
bems |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 0 Всего: 88 |
Что не сходится?
-------------------- Обижено школьников: 8 |
|||
|
||||
mimik |
|
|||
не Rohoss Я Профиль Группа: Участник Сообщений: 69 Регистрация: 1.11.2010 Репутация: нет Всего: 2 |
||||
|
||||
bems |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 0 Всего: 88 |
Оооой блин. Нет.
Массив должен начинаться чем захочется тому кто его объявляет, а не автору языка. -------------------- Обижено школьников: 8 |
|||
|
||||
mimik |
|
|||
не Rohoss Я Профиль Группа: Участник Сообщений: 69 Регистрация: 1.11.2010 Репутация: нет Всего: 2 |
||||
|
||||
bems |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 0 Всего: 88 |
mimik, ты всегда указываешь размерность. Ничего не мешает указыввать при этом и стартовый индекс.
-------------------- Обижено школьников: 8 |
|||
|
||||
mes |
|
||||
любитель Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
не знаю приводили ли уже это: http://www.ict.edu.ru/ft/004781/m2_obe.pdf
ну как тут спорить, если сам Никлаус Вирт, поклонник и прародитель всего человеку-удобного, в своем стремлении довести Оберон до идеала, проголосовал за нуль в качестве нижней границы диапазона индексов массива.. |
||||
|
|||||
Фантом |
|
|||
Вы это прекратите! Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: нет Всего: 49 |
И тем не менее во многих случаях это чрезвычайно неудобно. Хотя язык и его компиляцию, конечно, упрощает. |
|||
|
||||
bems |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 0 Всего: 88 |
А вот так. Он в маразм мог спасть. Это ничего не означает.
-------------------- Обижено школьников: 8 |
|||
|
||||
gcc |
|
|||
Агент алкомафии Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: нет Всего: 17 |
интересно, в каких случаях? мощно выглядят массивы вместе с хэшами и наоборот, например, массивы-хэшей (список пар хэшей) где массив - это просто набор значений, а хэши как индексы... для работы над элементами массивов, есть разные операторы: cross-, hyper-, reduce-, meta-operators (где индексация не важна...) Это сообщение отредактировал(а) gcc - 13.1.2011, 06:00 |
|||
|
||||
mimik |
|
||||
не Rohoss Я Профиль Группа: Участник Сообщений: 69 Регистрация: 1.11.2010 Репутация: нет Всего: 2 |
это не очень удобно, ведь массив мы можем получить и из функций, или надо перед использованием надо смотреть на объявление
к его мнению я прислушиваюсь, но не более
Это сообщение отредактировал(а) mimik - 13.1.2011, 12:52 |
||||
|
|||||
Фантом |
|
|||
Вы это прекратите! Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: нет Всего: 49 |
||||
|
||||
baldina |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
если
a[b] === *(a+b) === *(b+a) === b[a], то алгебраически мы должны иметь моноид. для данной структуры операцией является операция сложения указателя с числом, а единицей - 0 поэтому индексация должна вестись с 0. индексация с другого числа - частный случай этого, формально мы работаем со срезами другая точка зрения - индексом мы задаем систему отсчета. тогда 0 нравится любителям локальных координат, а прочие индексы - любителям глобальных как говорит А.Степанов, "depends on the definition" |
|||
|
||||
Romper |
|
|||
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 7.11.2012 Репутация: 1 Всего: 1 |
Индексация с нуля — техническая оптимизация С, который складывал указатели, но она распространилась везде.
Если подумать, это совсем не естественно. Нужно постоянно держать в памяти этот −1. Почему, чтобы взять пятый элемент, я пишу arr[4]? Разве это удобно? Почему, если в списке 10 элементов, то взять десятый (arr[10]) — ошибка? Если беспокоитесь о производительности, храните указатель на начало массива−1. |
|||
|
||||
Ilya81 |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 105 Регистрация: 18.4.2014 Где: ЛО, Всеволожский р-н Репутация: 1 Всего: 4 |
Не исключаю, что неестественны нумерация с нуля, указания сначала адреса назначения, потом источника (функция CopyMemory), 1024 байта в килобайте и многое другое. Но неужели удаётся так прямо и думать об этом годами? Мне как-то всё это как-то стало привычным, и "неестественность" давным давно не замечаю.
|
|||
|
||||
bems |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 0 Всего: 88 |
тот же порядок что в операторе присваивания -------------------- Обижено школьников: 8 |
|||
|
||||
Ilya81 |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 105 Регистрация: 18.4.2014 Где: ЛО, Всеволожский р-н Репутация: 1 Всего: 4 |
Скорее это аналогия с
который повторяет структуру команды процессоров Intel. Но слышал, что в своё время были процессоры с противоположным порядком операндов. Да и в обычной речи мы скорее скажем из пункта A в пункт B, чем в пункт B из пункта A. Но подобные особенности современных процессоров для меня слишком привычны, чтоб замечать, что где-то присутствует такая неестественность. |
|||
|
||||
_zorn_ |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 21.8.2007 Репутация: нет Всего: 12 |
Ну ёпта. Вы действительно думаете, что ПРОЦЕССОР видит команды в таком виде ? А АМД процессоры в каком виде команды видят ? Открою для тебя страшную тайну. Процессоры видят команды в виде битов, а ассемблерные мнемоники как раз для людей. И кстати есть еще AT&T-синтаксис и процессор тут совсем не причем. А слышали вы скорей всего о порядке байтов. И это не "в свое время", а есть и сейчас (little/big endian). Процессоров много и они не только в вашем системном блоке... А по части нумерации - при чем тут какие то оптимизации ? В си массив - это просто указатель на область памяти, индекс смещение. Хотите создавайте массивы с размером на 1 элемент больше и индексируйте с 1, кто вам запрещает ? Все таки си это язык с самыми большими возможностями выстрелить себе в ногу Это сообщение отредактировал(а) _zorn_ - 22.1.2015, 17:17 |
|||
|
||||
Ilya81 |
|
||||||
Шустрый Профиль Группа: Участник Сообщений: 105 Регистрация: 18.4.2014 Где: ЛО, Всеволожский р-н Репутация: 1 Всего: 4 |
Ну если я ничего не путаю, то команды процессоров - префиксный битовый код, в котором после кода команды следуют операнды во вполне определённой последовательности. И в процессорах Intel, насколько знаю, в команде копирования данных идёт сначала код/адрес (в зависимости от того, это регистр процессора, RAM или ещё там что) адресата, потом код/адрес источника. Более того, насколько я знаю, в виду того, что коды команд тоже придумываются людьми, то разница между кодами команд и операндами условна, т. е. предопределённые команды для соседних регистров имеют похожий битовый код. И ещё, насколько я знаю, хоть нынче структура самих логических элементов внутри кристалла не имеет полного дискретного аналога, всё ж сами триггеры расположены в определённой последовательности (как и конденсаторы RAM и прочее), поэтому можно вполне чётко сказать о порядке расположения битового кода внутри процессора.
Это вполне вероятно, я просто подразумевал доминирующие нынче процессоры. А Intel, насколько знаю, нынче не слабо потеснил конкурентов, притом и в desktop/серверах, и в мобильных устройствах, и много ещё где.
Но в C# и Java вольностей поменьше будет. Про Objective-C/Swift сказать затрудняюсь. Это сообщение отредактировал(а) Ilya81 - 23.1.2015, 10:04 |
||||||
|
|||||||
Romper |
|
|||
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 7.11.2012 Репутация: 1 Всего: 1 |
||||
|
||||
_zorn_ |
|
||||||||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 21.8.2007 Репутация: нет Всего: 12 |
Про RISC процессоры я думаю нету смысла вам говорить. Но AMD же ? У них что все по другому ? При чем тут интел ? Вы про архитектуру х86 сейчас говорите, а не про процессоры интел. Кстати 64 битную архитектуру первыми замутили АМД, и набор инструкций сейчас называются AMD64 Еще раз - типов процессоров намного больше чем в вашем системном блоке...
Вы о чем сейчас вообще ? О том что у программистов конденсаторы в мозгу расположены так же как в процессоре ? Есть, но большинство поглядывает на си хотя бы по синтаксису ) Ну и он самый кросплатформенный
Мой вариант предпочтительней. В вашем еще лишние телодвижения придется делать типа
Да и чревато последствиями если ваш код будет потом кто то дописывать. Ваши привычки он не знает, и будет мусорить перед массивами ) А если вы еще макросов налепите, или стандартные переопределите, то вообще ужас... Это сообщение отредактировал(а) _zorn_ - 25.1.2015, 06:21 |
||||||||
|
|||||||||
bems |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 0 Всего: 88 |
-------------------- Обижено школьников: 8 |
|||
|
||||
ТоляМБА |
|
|||
Котэ Профиль Группа: Завсегдатай Сообщений: 1607 Регистрация: 15.12.2004 Репутация: нет Всего: 252 |
|
|||
|
||||
_zorn_ |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 21.8.2007 Репутация: нет Всего: 12 |
||||
|
||||
Ilya81 |
|
||||
Шустрый Профиль Группа: Участник Сообщений: 105 Регистрация: 18.4.2014 Где: ЛО, Всеволожский р-н Репутация: 1 Всего: 4 |
В области биологии я не знаток, а вот что касается устройства вычислительной техники - насколько знаю, RAM чаще всего основывается на конденсаторах, а вот cache-память разного уровня - на триггерах. Ибо хотя б гигабайт (а по нынешним временам это совсем мало) памяти на триггерах стоил б совершенно немыслимую сумму денег. А ещё о том упомянул, что со времён первых Pentium'ов для дальнейшего повышения производительности процессоров придумали структуру самих логических элементов внутри кристалла, у которой не существует точного эквивалента в виде отдельных транзисторов, резисторов и диодов. Впрочем, всё это с той поры ещё не раз менялось, чтоб энергопотребление процессоров не становилось запредельным при частоте в несколько гигагерц. Но при этом триггеры, регистры, сумматоры и прочее имеют вполне разделённую в пространстве структуру даже с учётом всех ухищрений по размещению их внутри кристалла.
Много что менялось с той поры, насколько знаю, Apple тоже стал использовать процессоры Intel позже. Да и тот ж x86 нынче в мобильных устройствах распространён куда больше, чем прежде. А пример про x86 я привёл от того, что 64-битные приложения я ни разу не писал на ассемблере и всех их особенностей не знаю. Это сообщение отредактировал(а) Ilya81 - 26.1.2015, 09:34 |
||||
|
|||||
LSD |
|
|||
Leprechaun Software Developer Профиль Группа: Модератор Сообщений: 15709 Регистрация: 24.3.2004 Репутация: 9 Всего: 537 |
Можешь назвать платформу для которой не существует компилятора Си? -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Фантом |
|
|||
Вы это прекратите! Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: нет Всего: 49 |
||||
|
||||
baldina |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
ENIAC убийца ЯП. перемычки наше всё.
|
|||
|
||||
LSD |
|
|||
Leprechaun Software Developer Профиль Группа: Модератор Сообщений: 15709 Регистрация: 24.3.2004 Репутация: 9 Всего: 537 |
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
ТоляМБА |
|
|||
Котэ Профиль Группа: Завсегдатай Сообщений: 1607 Регистрация: 15.12.2004 Репутация: нет Всего: 252 |
|
|||
|
||||
baldina |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
на каком языке пишут дефчонки?
Добавлено через 47 секунд им, счастливым, проблемы индексации массивов по барабану |
|||
|
||||
_zorn_ |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 21.8.2007 Репутация: нет Всего: 12 |
||||
|
||||
ТоляМБА |
|
|||
Котэ Профиль Группа: Завсегдатай Сообщений: 1607 Регистрация: 15.12.2004 Репутация: нет Всего: 252 |
||||
|
||||
LSD |
|
|||
Leprechaun Software Developer Профиль Группа: Модератор Сообщений: 15709 Регистрация: 24.3.2004 Репутация: 9 Всего: 537 |
Заканчивайте флуд, пока я вас в Аншлаг не отправил.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Bulat |
|
|||
татарский Нео Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: нет Всего: 57 |
А как насчет ПЭВМ Агат?? Знаю точно на Агате можно было писать программы на бэйсике, а вот насчет С - точно не знаю! -------------------- менеджер по кодеврайтингу |
|||
|
||||
_zorn_ |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 21.8.2007 Репутация: нет Всего: 12 |
Инфа с википедии... мопед не мой короче
Признаться немножко попотел нажимая на мышку Но нашел http://en.wikipedia.org/wiki/Aztec_C |
|||
|
||||
Bulat |
|
|||
татарский Нео Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: нет Всего: 57 |
Ну это еще бабушка на двое сказала! Первые версии Агата действительно использовали в качестве ПО переработанное яблочное! Но Агат поступивший в массовое производство имел ОС Школьница, написанный кстати на Рапире, был Бейсик. А вот был ли на нем хоть какая-то версия Си. А первые версии Агата это как раз из разряда ENIAC. Добавлено через 4 минуты и 32 секунды http://deka18.tsk.ru/er/agat/Apps/Language.shtml - кстати вот здесь тоже пишут что был.... блин, но никаких архивов, никакого софта - на нем написанном не встречается и упоминание разве что в документах. Добавлено через 5 минут и 9 секунд -------------------- менеджер по кодеврайтингу |
|||
|
||||
baldina |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
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 Это сообщение отредактировал(а) baldina - 29.1.2015, 14:51 |
|||
|
||||
Bulat |
|
|||
татарский Нео Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: нет Всего: 57 |
Это ты описываешь последние версии Агата(7-9), которые поступали уже в массовое производство! Но существовала еще версия Агат-4, выпущенная в небольшом количестве, но так и не поступившая в серийное производство, и ее характеристики были хуже того, что ты написал. Точно не знаю, это надо смотреть из архивных документов. А про версии Агат 1-2 и т.п. вообще молчу, про них никакой инфы уже не сохранилось! -------------------- менеджер по кодеврайтингу |
|||
|
||||
baldina |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
Агат-4 не содержал НГМД и памяти поменьше было. не говоря уж про "качество сборки" (это не серийный образец, а у нас и серийные часто выглядели как пионерское поделие). Агат 1-3 не существовали, по крайней мере как готовые к употреблению образцы.
|
|||
|
||||
Bulat |
|
|||
татарский Нео Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: нет Всего: 57 |
Игра слов....... Агат 1-3 существовали, но это что-то из разряда ENIAC. Просто в силу сложившейся тенденции, отечественной культурой интересуемся гораздо меньше, чем западной. А интересовались бы больше - глядишь и инфы было бы больше! -------------------- менеджер по кодеврайтингу |
|||
|
||||
baldina |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
||||
|
||||
Bulat |
|
|||
татарский Нео Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: нет Всего: 57 |
Ты мне лучше дай инфу про первые версии Агата и сравним характеристики с тем же ENIAC и БЭСМ, а ссылки на википедию я и сам могу дать в большом количестве! -------------------- менеджер по кодеврайтингу |
|||
|
||||
baldina |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
найди то не знаю что? с чего ты взял что они существовали? Добавлено через 2 минуты и 21 секунду я сильно сомневаюсь, т.к. подобные проекты тогда занимали сотни метров, весили десятки тонн и стоили кучу народных денежков (выделяемых централизованно через госплан). такой проект не мог исчезнуть бесследно. |
|||
|
||||
ТоляМБА |
|
|||
Котэ Профиль Группа: Завсегдатай Сообщений: 1607 Регистрация: 15.12.2004 Репутация: нет Всего: 252 |
||||
|
||||
baldina |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
в институте НИИВК, где разработан Агат, во времена ENIAC создана M-1 (всего построен адын екземпляр). ниче общего с агатом она, понятно, не имела.
Агат был клоном apple II и до apple могло быть что угодно, но только не Агат. так что никаких доводов пока не вижу |
|||
|
||||
Bulat |
|
|||
татарский Нео Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: нет Всего: 57 |
У нас в России Камазы десятками исчезают бесследно - чего уж тут исчезнуть какой-то железяке! Добавлено через 1 минуту и 1 секунду С твоей стороны - да! Никаких доводов, одна игра слов, в народе именуемая демагогией! -------------------- менеджер по кодеврайтингу |
|||
|
||||
Bulat |
|
|||
татарский Нео Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: нет Всего: 57 |
Знаешь что такое клон?? Клон - это когда ты берешь компьютер Эппл, меняешь название, цвет каркаса и называешь его Агат! Агат никогда не был клоном Эппл! -------------------- менеджер по кодеврайтингу |
|||
|
||||
_zorn_ |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 21.8.2007 Репутация: нет Всего: 12 |
А китайцы всегда выпускали авторские разработки, ага. Ведь никогда тупо наклейки не переклеивали Патриотом нужно быть в меру... |
|||
|
||||
миг |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 157 Регистрация: 15.9.2008 Репутация: нет Всего: 1 |
просто решили условно принять, что первая ячейка в массиве имеет индекс нуль. Ну, это как точка таяния снега условно принято за 0 градусов по цельсию. Если вам по какой то причине не удобен такой отсчет всегда можете сделать свой массив. Индексация которого будет начинаться с единицы. Теоретически можно замутить массив индексация, которого будет начинаться с минус ста до плюс пятьсот и тому подобное. Только зачем, чтобы другие программисты работающие с вами постоянно путались в начале и конце индексации массива? Вот вам и преимущество любой программист читающий и исправляющий мою программу знает, что первое число массива находится по нулевому индексу. Это сообщение отредактировал(а) миг - 1.2.2015, 14:36 --------------------
Oaks may fall when reeds stand the storm. |
|||
|
||||
миг |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 157 Регистрация: 15.9.2008 Репутация: нет Всего: 1 |
1 век до н.э, а потом сразу 1 век н. э. Нулевого века не было. --------------------
Oaks may fall when reeds stand the storm. |
|||
|
||||
mes |
|
|||
любитель Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
1й век - потому, что используете порядковые числительные, которые показывают вектор направления, притом разнонаправленый для "н.э." и "до н.э."
Младенцу с рождения идет первый год, однако отсчет его жизни идет с нуля. И год исполняется только через год. Поэтому важно понимать какая шкала используется. "Разносторонняя порядковая" удобна в повседневной жизни, но требует дополнительной логики, при расчетах пересекающих границу. В с (с++) решили для создания массива указывать верхнюю границу , а при обращении к элементу нижнюю границу : что в переводе на возраст младенца, вместо нечеткого "ему второй год" получается "ему год , два месяца, три дня, 4 часа, 5 минут" |
|||
|
||||
Romper |
|
|||
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 7.11.2012 Репутация: 1 Всего: 1 |
В C++ тупо сделали из-за offset
т.е. arr[1] означает дай элемент с offset в 1 элемент, а не дай первый элемент это удобно для компьютера но не для человека
отсчет идет с секунд, а не с года, т.е. младенцу 2 месяца(большое число секунд) Это сообщение отредактировал(а) Romper - 18.2.2015, 16:11 |
|||
|
||||
_zorn_ |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 21.8.2007 Репутация: нет Всего: 12 |
||||
|
||||
LSD |
|
|||
Leprechaun Software Developer Профиль Группа: Модератор Сообщений: 15709 Регистрация: 24.3.2004 Репутация: 9 Всего: 537 |
Самое забавное, что люди даже не замечают что пишут числа задом наперед. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Bulat |
|
||||
татарский Нео Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: нет Всего: 57 |
Не задом на перед, а справа на лево... это разные вещи...
Дело не в патриотизме, а просто в корректности.
Агат Если назвать Агат - неким аналогом apple - соглашусь, но уж никак не клон. Клон это по сути точная копия, ну там на 95% схожая с оригиналом... -------------------- менеджер по кодеврайтингу |
||||
|
|||||
RubyLudwigValentin |
|
|||
magister wandal Профиль Группа: Участник Сообщений: 16 Регистрация: 4.3.2023 Где: Rostov-on-Don Репутация: нет Всего: нет |
Традиция языка C В том же Паскале можно задать диапазон индексов [1..1000], и даже необязательно начинать с 1. Можно даже сделать объявление перечисления например, type color={red, yellow, green} и проиндексировать его элементами массив. Но настоящие программисты не боятся индексирования от 0, а делают так и в Java и в C#. |
|||
|
||||
Правила ведения Религиозных войн | |
|
1. Уважайте собеседника 2. Собеседник != враг 3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez" С уважением, Smartov. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Религиозные войны | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |