Re[10]: Комплексные числа
От: vdimas Россия  
Дата: 26.01.22 21:45
Оценка:
Здравствуйте, Mystic Artifact, Вы писали:

V>>Согласно своей физической природе, отрицательных адресов не существует, бо так спроектирована аппаратура.

V>>(принципиально не запрещено иметь и отрицательные адреса, ес-но, но в классических гарвардской и фон-неймановских архитектурах уже приняли указывать адреса неотрицательным смещением)
MA> Чего-то тема задела. Позволю себе тебя дополнить не влезая в срач: собственно говоря в адресной арифметике нет знакового или беззнакового сложения (да и вообще в процессорах нет разных команд для этого). Есть просто сложение.

Ага, только не мне это надо было объяснять.
Я тоже это же пытаюсь донести рядом:
http://www.rsdn.org/forum/education/8180722.1

Индекс массива унутре всегда приводится к ширине адреса, где последующим вычислениям, происходящим в дополнительном двоичном коде, ГЛУБОКО ДО ФЕНИ насчёт того, знаковый был тип второго слагаемого или нет.


Я ж говорю — тема для студентов 1-го курса.
Отредактировано 26.01.2022 21:46 vdimas . Предыдущая версия .
Re[11]: Комплексные числа
От: Mystic Artifact  
Дата: 26.01.22 21:59
Оценка: :)
Здравствуйте, vdimas, Вы писали:

V>Ага, только не мне это надо было объяснять.

Так, я и говорю, что, я только лишь в дополнение тобою сказанному. А в срач я вступать не хочу. Реакция оппонента, как минимум не соответствует правилам форума, да и вообще, не культурно так себя вести, кто бы там ни был прав или нет. Я написал твоему оппоненту два сообщения, но нашел в себе силы их не отправлять. Я сам токсичен адски, и борюсь с собой.
Re[11]: Комплексные числа
От: T4r4sB Россия  
Дата: 27.01.22 06:09
Оценка:
Здравствуйте, vdimas, Вы писали:

TB>>Смотри, индекс — это смещение.


V>Смотрю — для массива [1..10] это уже не так.


В С/С++ и ещё куче языков это так, не уводи тему в сторону, твои познания в паскалоидах — оффтоп.

V>Я нигде не вижу беззнаковых индексов, ни в С/С++, ни в си-подобном C#, где индекс массива привоится либо к int, либо к long.


О, ты ни разу не пользовался std::vector и std::array? Плохо, очень плохо.
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
Re[12]: Комплексные числа
От: T4r4sB Россия  
Дата: 27.01.22 06:14
Оценка:
Здравствуйте, Mystic Artifact, Вы писали:

MA> Так, я и говорю, что, я только лишь в дополнение тобою сказанному. А в срач я вступать не хочу. Реакция оппонента, как минимум не соответствует правилам форума, да и вообще, не культурно так себя вести, кто бы там ни был прав или нет. Я написал твоему оппоненту два сообщения, но нашел в себе силы их не отправлять. Я сам токсичен адски, и борюсь с собой.


Ну напиши. Только давай без вот этих вот а-ля вдимас:

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

Короче давай без самолюбования, без демонстрации скила в демагогии, без завуалированных наездов на оппонента (после которых я перехожу к прямым, да), без засирания философией и оффтопом, ок? Я считаю всё это тоже крайне некультурным поведением, странно что ты этого не замечаешь.
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
Re[2]: Комплексные числа
От: Privalov  
Дата: 27.01.22 07:55
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Ну какие в опу "мнимые" и "действительные"? ))

V>Никаких действительных и мнимых частей комплексного числа нет, есть некая алгебра поверх 2D-векторов.

Ну прижился термин. Сколько лет уже существует. Меня больше напрягает термин виртуальная функция. Которая вызывается, отрабатывает и возвращает результат. Придумал же кто-то!
Re[3]: Комплексные числа
От: vdimas Россия  
Дата: 27.01.22 09:22
Оценка:
Здравствуйте, Privalov, Вы писали:

P>Меня больше напрягает термин виртуальная функция.


Это беда многих жаргонизмов.
Русское слово "виртуальный" и английское "virtual" имеют в разных контекстах разный смысл.

virtual: варианты перевода

виртуальный
действительный
фактический
мнимый
не номинальный


В русском "виртуальный" значает только "мнимый", "не существующий" и т.д.
В ООП "virtual" означает "фактический".
Re[12]: Комплексные числа
От: vdimas Россия  
Дата: 27.01.22 09:59
Оценка:
Здравствуйте, T4r4sB, Вы писали:

TB>>>Смотри, индекс — это смещение.

V>>Смотрю — для массива [1..10] это уже не так.
TB>В С/С++ и ещё куче языков это так, не уводи тему в сторону, твои познания в паскалоидах — оффтоп.

В дотнете тоже можно создать массивы с индексом не от 0-ля.


V>>Я нигде не вижу беззнаковых индексов, ни в С/С++, ни в си-подобном C#, где индекс массива привоится либо к int, либо к long.

TB>О, ты ни разу не пользовался std::vector и std::array? Плохо, очень плохо.

Мде...
Давай-ка я тебя и тут выпорю. ))
#include <iostream>
#include <vector>

using namespace std;

int main()
{
    {
        int vec[] = {1, 2};
        auto ptr = begin(vec);
        ptr++;
        auto x = ptr[-1];
        cout << x << endl;
        ptr++;
        x = *(ptr-1);
        cout << x << endl;
    }
    {
        vector<int> vec = {1, 2};
        auto ptr = begin(vec);
        ptr++;
        auto x = ptr[-1];
        cout << x << endl;
        ptr++;
        x = *(ptr-1);
        cout << x << endl;
    }
    
    return 0;
}

Не благодари.
Re[13]: Комплексные числа
От: vdimas Россия  
Дата: 27.01.22 10:02
Оценка: +1
Здравствуйте, T4r4sB, Вы писали:

TB>Ну напиши. Только давай без вот этих вот а-ля вдимас


Ну мужикам-то прибедняться не к лицу. ))
Вот твоя реакция на краткое замечание по-делу:
http://www.rsdn.org/forum/education/8180594.1

Ты сам задал тон общения с тобой.
Re[4]: Комплексные числа
От: Privalov  
Дата: 27.01.22 11:14
Оценка:
Здравствуйте, vdimas, Вы писали:

V>В русском "виртуальный" значает только "мнимый", "не существующий" и т.д.

V>В ООП "virtual" означает "фактический".

А сие из чего следует? И зачем в таком случае понадобился термин pure virtual? Это что? Чистый фактический?
Слово "виртуальный" может означать: "возможный", "воображаемый", "реализованный программно". Но про "фактический" — это ты просто открыл мне и остальным глаза.
Re[5]: Комплексные числа
От: vdimas Россия  
Дата: 27.01.22 12:50
Оценка:
Здравствуйте, Privalov, Вы писали:

V>>В русском "виртуальный" значает только "мнимый", "не существующий" и т.д.

V>>В ООП "virtual" означает "фактический".
P>А сие из чего следует? И зачем в таком случае понадобился термин pure virtual? Это что? Чистый фактический?

Это оттенок слегка поменялся.


P>Слово "виртуальный" может означать: "возможный", "воображаемый", "реализованный программно".


Это не русскоязычный термин.
Английские значения virtual я приводил.


P>Но про "фактический" — это ты просто открыл мне и остальным глаза.


Дык, в русском языке "фактический" имеет несколько смыслов:
— существующий на самом деле (не подходит);
— выбранный из нескольких возможных альтернатив (оно!).
Re[7]: Комплексные числа
От: Mr.Delphist  
Дата: 27.01.22 13:43
Оценка: +1
Здравствуйте, LaptevVV, Вы писали:

LVV>Ну, начиная с Си массивы — это просто модель памяти. И индекс (как и адрес) просто обозначает смещение от начала.

LVV>Обратите внимание, что в паскале изначально можно было делать индексы произвольно

А ещё в Паскале с самого начала были многомерные массивы, строки как внутренний тип (со всеми необходимыми операциями), строгая типизация с контролем присваивания (а не вот эти вот ваши алиасики) и т.п. Вирт вообще умный дядька.
Re[6]: Комплексные числа
От: Privalov  
Дата: 27.01.22 14:29
Оценка:
Здравствуйте, vdimas, Вы писали:

P>>Слово "виртуальный" может означать: "возможный", "воображаемый", "реализованный программно".


V>Это не русскоязычный термин.

V>Английские значения virtual я приводил.

Ладно, допустим что virtual в английском языке означает фактический. Я по словарям не смотрел, но дупустим.
Но тогда почему одни функции в том же C++ определены с virtual, а другие — нет. Те функции, которые не virtual — они какие?
Так что все равно напрягает.
Re[8]: Комплексные числа
От: LaptevVV Россия  
Дата: 27.01.22 18:09
Оценка: +1
LVV>>Обратите внимание, что в паскале изначально можно было делать индексы произвольно
MD>А ещё в Паскале с самого начала были многомерные массивы, строки как внутренний тип (со всеми необходимыми операциями), строгая типизация с контролем присваивания (а не вот эти вот ваши алиасики) и т.п. Вирт вообще умный дядька.
1. Я читал все книжки Вирта еще в Советском Союзе...
2. И еще тогда понял, что он таки да — ОЧЕНЬ умный дядька.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[9]: Комплексные числа
От: elmal  
Дата: 27.01.22 18:51
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>2. И еще тогда понял, что он таки да — ОЧЕНЬ умный дядька.

Дядька то умный. И его вклад в ИТ да — реально большой. Но. Всегда все достижения и все условия нужно привязывать к конкретному времени. Меня ужасает в людях инерция мышления. Когда они свой опыт в совсем другом времени в совсем других условиях пытаются 1 в 1 перенести на настоящее. И получается как правило полная фигня, можно решить задачу в современных условиях гораздо легче и главное быстрее. Инерция мышления реально огромна. В ИТ инерция мышления получается лет 40. В других вопросах зачастую превышает 100 лет. Обстоятельства изменились, все перевернулось с ног на голову, но поведение осталось тем же, и оно в данных текущих обстоятельствах совсем не оптимально.
Re[13]: Комплексные числа
От: T4r4sB Россия  
Дата: 27.01.22 19:19
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Давай-ка я тебя и тут выпорю. ))

V> auto ptr = begin(vec);
V> ptr++;
V> auto x = ptr[-1];

Ты сам себя выпорол. Никто так с векторами не работает.

V>Ты сам задал тон общения с тобой.


Ты изначально взял снисходительный тон, при этом выдавая крайне сомнительные откровения. Адрес — не индекс.
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
Отредактировано 27.01.2022 19:20 T4r4sB . Предыдущая версия .
Re[4]: Комплексные числа
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 27.01.22 19:46
Оценка:
Здравствуйте, T4r4sB, Вы писали:

S>>Т.е. для всего достаточно натуральных чисел. Остальное — выдумки.


TB>Вот ты ржёшь, но к сожалению, именно так думали дебилы, которые сделали беззнаковые индексы в STL и в Русте. Из-за них теперь миллионы программистов либо пердолятся с кастами на каждый чих, засирая код мусором, либо ловят паники на невинных на первый взгляд операциях.


Я чего-то не понял. Беззнаковые в C++ — размеры, обычно используют для этого size_t. Для индекса ты можешь любой тип использовать. В операторе []/at() тоже используется беззнаковый, но твой знаковый к нему автоматом кастится, максимум что получишь — это варнинг. Хочешь без варнинга — касть явно. А твои вычисления никто тебе в size_t не заставляет делать. Или ты мучаешься с кучей вычислений индекса, используя size_t, только для того, чтобы избежать одного каста при обращении по этому индексу? Ну, такое себе.

А отрицательные индексы так-то значения не имеют. Потому что индекс всегда в диапазоне [0,N). И в библиотеке идёт одна проверка — на превышение размера (который size_t), вместо двух проверок. Для библиотеки, которая не заставляет тебя платить за то, что ты не используешь — разумное решение.
Опять же, npos удобно объявлять.

Зачем пердолиться с кастами на каждый чих — не понятно.
Маньяк Робокряк колесит по городу
Re[5]: Комплексные числа
От: T4r4sB Россия  
Дата: 27.01.22 20:02
Оценка:
Здравствуйте, Marty, Вы писали:

M>Для индекса ты можешь любой тип использовать.


Чтоб поиметь неявный каст на входе в []? Любитель игнорить варнинги?

M>А отрицательные индексы так-то значения не имеют. Потому что индекс всегда в диапазоне [0,N). И в библиотеке идёт одна проверка — на превышение размера (который size_t), вместо двух проверок. Для библиотеки, которая не заставляет тебя платить за то, что ты не используешь — разумное решение.


Задание: напиши проверку (index >= 0 && index < size) для знакового типа так, чтоб оно скомпилировалось в один бранч

M>Зачем пердолиться с кастами на каждый чих — не понятно.


Вот я хочу перебрать элементы с конца
for (auto i = vec.size() - 1; i >=0; --i)


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

А ещё я хочу перебрать все элементы, кроме последнего
for (auto i = 0; i < vec.size() - 1; ++i)

Упс, опять подорвался, потому что именно в этом случае надо записывать цикл ещё одним особенным способом.


А вот я перебираю возможные ходы коня, чтобы по координате обратиться к элементы 2-мерного массива. Раз у нас массив, то координаты должны быть size_t (а ещё, как говорят теоретики, координаты шахматной фигуры не могут быть отрицательными, значит мы должны использовать беззнаковый тип!).
Дальше я заводу массив возможных ходов коня, его тоже делаю size_t, чтоб работала операция сложения с координатами.
std::array<std::pair<size_t, size_t>, 8> shifts = {{-1, -2}, {-2, -1}, ...

Ой, что-то ерунда получается.
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
Re[7]: Комплексные числа
От: vdimas Россия  
Дата: 28.01.22 07:53
Оценка:
Здравствуйте, Privalov, Вы писали:

P>Ладно, допустим что virtual в английском языке означает фактический.


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

The angry peasants were a virtual army as they attacked the castle.

Разгневанные крестьяне представляли собой фактически армию, напавшую на замок.
... практически армию
... чуть ли не армию
и т.д.


P>Но тогда почему одни функции в том же C++ определены с virtual, а другие — нет.


Могу разве что повториться:

в русском языке "фактический" ...
... выбранный из нескольких возможных альтернатив


Ну или в смысле "почти что функция" ))
Re[8]: Комплексные числа
От: Privalov  
Дата: 28.01.22 14:09
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Ну или в смысле "почти что функция" ))


То есть virtual — это функция, а не virtual — почти функция? А что такое почти функция в языках программирования? Мне приходит в голову только ENTRY из Фортнана. Это оно?
Re[8]: Комплексные числа
От: Miroff Россия  
Дата: 28.01.22 17:27
Оценка:
Здравствуйте, T4r4sB, Вы писали:

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


Практический смысл преизрядный: такому типу даже теоретически невозможно присвоить значение, выходящее за пределы диапазона. В зависимости от дизайна языка это может быть либо статическое ограничение, либо динамическое. Причем последнее логично организовать через обработчик:
#default implementation
array_index_out_of_bound(index, retry) -> throw OutOfBoundException("index {index} out of bound [0, {length})")

#user's implementation
array_index_out_of_bound(index, retry) -> 
  index > length: retry(index - length)
  index < 0: retry(length + index)


А еще можно таким способом сделать нецельночисленные индексы, разреженные индексы, бесконечные индексы для генераторов и т.п.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.