Re: Комплексные числа
От: omgOnoz  
Дата: 29.09.21 23:38
Оценка: +1 -4 :))) :)))
Здравствуйте, Bjorn Skalpe, Вы писали:

BS>Просто отличное видео раскрывающее понятие комплексных чисел и функций комплексного переменного.


BS>https://www.youtube.com/watch?v=kicp_odjsRs


Комплексные числа нужны в математике "для связки слов" в промежуточных вычислениях. Это первое, что нужно понимать в сабже. Какого-то. Сакрального смысла в теме нет, ее очень часто преподносят некорректно, не объясняя толком для чего эти числа придуманы.
Отредактировано 29.09.2021 23:43 omgOnoz . Предыдущая версия . Еще …
Отредактировано 29.09.2021 23:42 omgOnoz . Предыдущая версия .
Отредактировано 29.09.2021 23:39 omgOnoz . Предыдущая версия .
Комплексные числа
От: Bjorn Skalpe Земля  
Дата: 29.09.21 12:46
Оценка: 65 (8) +2
Просто отличное видео раскрывающее понятие комплексных чисел и функций комплексного переменного.

https://www.youtube.com/watch?v=kicp_odjsRs
Re[3]: Комплексные числа
От: T4r4sB Россия  
Дата: 17.10.21 22:45
Оценка: +1 :))) :)))
Здравствуйте, Shmj, Вы писали:

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


Вот ты ржёшь, но к сожалению, именно так думали дебилы, которые сделали беззнаковые индексы в STL и в Русте. Из-за них теперь миллионы программистов либо пердолятся с кастами на каждый чих, засирая код мусором, либо ловят паники на невинных на первый взгляд операциях.
Re[2]: Комплексные числа
От: Shmj Ниоткуда  
Дата: 01.10.21 06:30
Оценка: +4
Здравствуйте, omgOnoz, Вы писали:

O>Сакрального смысла в теме нет, ее очень часто преподносят некорректно, не объясняя толком для чего эти числа придуманы.


То же можно сказать об:

1. Отрицательных. Температуру нужно изменять от абсолютного нуля, а не от условного — тогда не нужен этот бред.

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

3. Вещественных. Тем более не нужен этот бред — даже количество атомов во Вселеной — это конкретное целое число.

4. Ну и конечно комплексные — их никто никогда не видел.

Т.е. для всего достаточно натуральных чисел. Остальное — выдумки.
Отредактировано 01.10.2021 6:31 Shmj . Предыдущая версия .
Re[2]: Комплексные числа
От: pagid Россия  
Дата: 01.10.21 07:45
Оценка: +4
Здравствуйте, omgOnoz, Вы писали:

O>Комплексные числа нужны в математике "для связки слов" в промежуточных вычислениях. Это первое, что нужно понимать в сабже. Какого-то. Сакрального смысла в теме нет, ее очень часто преподносят некорректно, не объясняя толком для чего эти числа придуманы.


То же самое можно и по другому. Комплексные числа — математический инструмент и не более того. Как и вся математика это тоже инструмент познания мира, а не его первооснова.
Re[8]: Комплексные числа
От: vdimas Россия  
Дата: 26.01.22 19:47
Оценка: 15 (1) +1 -1
Здравствуйте, T4r4sB, Вы писали:

V>>Адрес и есть индекс.

TB>Нет

Развелось двоечников...
Прямо по определению адрес в ОП — это индекс ячейки памяти.
Причём, независимо от типа памяти — линейно-адресуемой или ассоциативной.


TB>Адрес это адрес, индекс это индекс (ну или в крайнем случае — смещение)


Мде.

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


V>>И зачем что-то выдумывать на коленке?

V>>Изначально адреса беззнаковые, разница адресов знаковая.
TB>Ух ты, а может быть такой эксперт, как ты, подскажет, что же это за такой офигительный тип данных, который сам по себе беззнаковый, но операция a-b даёт знаковый результат?

Развелось двоечников...
https://en.cppreference.com/w/c/types/ptrdiff_t

ptrdiff_t is used for pointer arithmetic and array indexing, if negative values are possible.


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

Поэтому индекс ячейки памяти, то бишь её адрес, всегда положителен и представлен беззнаковым целым в низкоуровневых языках и ассемблерах.
И по той причине, что в Си нумерация элементов начинается с 0-ля, индекс элемента совпадает со смещением от начала массива.
И разница адресов в Си знаковая, ес-но.
И тип интегрального выражения-индекса массива в Си приводится компилятором к size_t или ptrdiff_t, т.е. к беззнаковому или знаковому интегральному типу шириной в адрес данных.
(для гарвадской архитектуры адрес инструкций и адрес данных могут иметь разную битовую ширину)


TB>А то я вот пытаюсь вспомнить, да только вот нифига не выходит каменный цветок. А у тебя вот как-то вышел


Cамая жесть ситуации в том, что взрослые дядьки спорят о вещах, которые студни сдают на первом курсе.
Re[3]: Комплексные числа
От: jamesq Россия  
Дата: 17.10.21 22:27
Оценка: +1 -2
Здравствуйте, Silver_S, Вы писали:

S_S>Уравнение Шредингера из основ квантовой механики — комплексное. И волновая функция комплексная. Говорит ли это о том, что комплексные числа реально присутствуют в законах природы в каком либо виде (дополнительные измерения?). Или это просто костыли, без которых можно обойтись, но комплексная запись короче — это не понятно.


Я придерживаюсь мнения, что реальность — она живёт отдельно. А математика — отдельно.
Математика придумана человеком. Реальный мир прекрасно существовал крайне долгое время без человека и математики. Ну да, она может что-то показать в реальном мире, как он устроен. Та же геометрия. Формула расстояния между точками, например. Или теорема Пифагора.
Но она не обязана соответствовать ничему реальному.

Комплексные числа — порождение буйного разума. Это просто средство, используемое чтобы удобно описать законы нашего реального мира. Как он работает. Нет никакой необходимости в том, чтобы они существовали на самом деле.
Их вон — только в 16 веке, кажется, придумали. До этого, о них не задумывались.
Говорят, на уровне той же квантовой физики, учёные уже не представляют себе, что именно скрывается за математическими построениями. Т.е. всё вообще уезжает в математику. И рекомендуется вообще не задумываться, что же на самом деле там сидит в реальности. Надо просто витать в математических дебрях.
Re[4]: Комплексные числа
От: VladiCh  
Дата: 31.01.22 08:21
Оценка: +2 -1
Здравствуйте, vdimas, Вы писали:

V>Здравствуйте, Privalov, Вы писали:


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


V>Это беда многих жаргонизмов.

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

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

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


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

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

Да нет там значения "фактический".
Есть "почти тот самый, но не совсем".
Обычно virtually переводят как "практически", а "virtual" — это существительное с похожим значением.
Ну и "виртуальный" если подумать имеет тот же самый смысл с немного отличающимся оттенком.
А вы тут придумали какую-то ересь.
Re[6]: Комплексные числа
От: VladiCh  
Дата: 31.01.22 18:42
Оценка: +2 -1
Здравствуйте, vdimas, Вы писали:

V>Здравствуйте, VladiCh, Вы писали:


VC>>Ну и "виртуальный" если подумать имеет тот же самый смысл с немного отличающимся оттенком.

VC>>А вы тут придумали какую-то ересь.

V>Учите матчасть, как грится.

V>

V>вирту-а́ль-ный

V>Синонимы

V>потенциальный
V>мысленный, воображаемый, нереальный
V>симулированный, эмулированный
V>эффективный


V>Понятно, что профессиональная деформация, что жаргонизмы IT въелись в кровь, но всё же...


Жаргонизмы тут ни при чем. я говорю о том, как это слово реально используется вне IT контекста, и откуда взялся собственно смысл в IT-контексте.
И о том что оно не переводится как "фактический" нигде, смысл его "похожий, но не совсем тот",
все указанные выше синонимы удовлетворяют этому смыслу.
Re[2]: Комплексные числа
От: · Великобритания  
Дата: 03.10.21 10:23
Оценка: 15 (2)
Здравствуйте, Shmj, Вы писали:

S> Если кто еще знает настолько же кульные видео образовательные — буду благодарен.

3blue1brown, eigenchris, mathologer математика.
science asylum, sabine, parth g, minutephysics, physics girl, up and atom — физика.
veritasium, vsause — обо всяком.
avalon/3.0.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[10]: Комплексные числа
От: LaptevVV Россия  
Дата: 01.02.22 15:36
Оценка: 11 (2)
LVV>>1. Я читал все книжки Вирта еще в Советском Союзе...
LVV>>2. И еще тогда понял, что он таки да — ОЧЕНЬ умный дядька.
__>а мне повезло на его лекции быть в универе где он рассказывал про дизайн Оберона и прикалывался над С++
__>однако, Оберон помер..
Нифига он не помер.
1. Наши атомщики сварганили себе компилятор Оберона — Мультиоберон.
Чтобы писать на нем встроенные системы для Росатома.
2. В 2018 или 2019 году в Россию на День Оберона (который ежегодно происходит в Москве и Орле) приехал Гуткнехт.
Рассказывал, что они там у себя придумали.
В ниши Оберон ушел — туда, где требуется надежность
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[4]: Комплексные числа
От: · Великобритания  
Дата: 03.10.21 12:18
Оценка: 6 (1) +1
Здравствуйте, Shmj, Вы писали:

S> S>> Если кто еще знает настолько же кульные видео образовательные — буду благодарен.


S> ·>3blue1brown, eigenchris, mathologer математика.


S> Это вы каналы привели, причем не на русском. А такие золотые видео общеобразовательного типа (где начинают с элементарного уровня) — встречаются 1 на миллион.

Видео у топикстартера это перевод тоже. Впрочем соглашусь, с русскими видео не густо. Надо учить английский. Ищи переводы, у Vert Dider полно, или другие например, основы матана https://www.youtube.com/watch?v=RFOdPAteooA
avalon/3.0.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[2]: Комплексные числа
От: Vzhyk2  
Дата: 03.10.21 10:45
Оценка: +1 :)
S>И в видео говорят, что типа на комплексных все заканчивается и числовой плоскости достаточно для всех этих действий с числами.
А в реальности не заканчивается. Вовсю используюся квартернионы. Вот здесь можешь прочитать о них, если интересно https://ru.wikipedia.org/wiki/%D0%9A%D0%B2%D0%B0%D1%82%D0%B5%D1%80%D0%BD%D0%B8%D0%BE%D0%BD
Re[9]: Комплексные числа
От: T4r4sB Россия  
Дата: 26.01.22 20:06
Оценка: :))
Здравствуйте, vdimas, Вы писали:

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

Вот например, эта часть твоих бредней:

1. Поэтому индекс ячейки памяти, то бишь её адрес, всегда положителен и представлен беззнаковым целым в низкоуровневых языках и ассемблерах.
2. И по той причине, что в Си нумерация элементов начинается с 0-ля, индекс элемента совпадает со смещением от начала массива.
3. И разница адресов в Си знаковая, ес-но.

Ты противоречия не видишь, не?
Смотри, индекс — это смещение. Смещение — это разница между адресом элемента и адресом начала. Значит, индекс знаковый, это если махать руками, как ты любишь.

А если смотреть на практику, а не на твои бессмысленные философствования, то беззнаковые индексы — это проблема и скрытая ловушка для некоторых видов вычислений. Вот и всё.
Re[2]: Комплексные числа
От: SkyKnight Швейцария https://github.com/dmitrigrigoriev/
Дата: 12.10.21 06:54
Оценка: 6 (1)
Здравствуйте, Shmj, Вы писали:

S>Если кто еще знает настолько же кульные видео образовательные — буду благодарен.

Если интересно, то вот есть в университете Вашингтона такой профессор Steve L. Brunton.
У него есть канал в ютубе с кучей разных видео.

Я вот посмотрел вот эти:
https://www.youtube.com/watch?v=QM0ATZRlbKQ&list=PLMrJAkhIeNNR2W2sPWsYxfrxcASrUt_9j
К этим видео есть ссылка и там можно найти задачи, с решениями (чтобы себя проконтроллировать)
В общем мне надо было и я вспоминал все из универского курса:
диффуры (ODE, PDE), преобразование Фурье, Лапласа и прочее. Мне понравилось как он преподносит материал студентам, по крайней мере мне все было понятно.
У нас в универе, например, препод по решению обыкновенных дифференциальных уравнений (ODE) вообще не может объяснять.


А вот канал: https://www.youtube.com/c/Eigensteve/playlists
Я сейчас занимаюсь как раз Data-Driven Models и Theory Control (вместе с ML). Мне нравится

И тут книжка Data-Driven Science and Engineering (Только видео к ней)
Найти первое издание можно, например тут

Но они уже закончили второе издание, вот буквально месяц назад. Еще печатается. В первом издании есть несколько критических опечаток.
github.com/dmitrigrigoriev/
Re[5]: Комплексные числа
От: T4r4sB Россия  
Дата: 19.10.21 17:32
Оценка: :)
Здравствуйте, LaptevVV, Вы писали:

LVV>Ну, дык адрес — это ж целое беззнаковое, не ?

LVV>Программисты с этим пердолятся с самого начала...

Адрес — да, индекс — нет. И отрицательный индекс часто надо обрабатывать именно как отрицательное число, чтобы знать, что мы вывалились за диапазон именно слева, а не справа.
Re[11]: Комплексные числа
От: Mystic Artifact  
Дата: 26.01.22 21:59
Оценка: :)
Здравствуйте, vdimas, Вы писали:

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

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

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


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

Ты сам задал тон общения с тобой.
Re[7]: Комплексные числа
От: Mr.Delphist  
Дата: 27.01.22 13:43
Оценка: +1
Здравствуйте, LaptevVV, Вы писали:

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

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

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

P>Здравствуйте, vdimas, Вы писали:


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


P>То есть virtual — это функция, а не virtual — почти функция? А что такое почти функция в языках программирования? Мне приходит в голову только ENTRY из Фортнана. Это оно?


Наоборот, здесь vdimas все запутал. Не virtual — обычная функция, а virtual — "почти функция". Почему так — ну потому что то что стоит за этой "функцией" четко не определено, зависит от VMT.
То есть это не совсем функция, а некий редирект на функцию, я думаю в этом был изначальный смысл.
Re[17]: Комплексные числа
От: T4r4sB Россия  
Дата: 13.02.22 15:04
Оценка: :)
Здравствуйте, vdimas, Вы писали:

V>Несвязанный набор слов.


Связанный, связанный.

V>Механизмом абстрагирования от типа контейнера является концепция итератора.


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

V>Адаптером конкретно массива под эту концепцию является тип std:array.


Ах, да, ещё std::array с той же проблемой с индексами.

V>Для заведомо маленьких коллекций размещение тела данных в динамической памяти является плохим решением.

V>А для произвольной вставки-удаления рулят деревоподобные структуры.

Это не единственные примеры задач, где нужно обращение по индексу, причём индекс вычисляется.

V>>>Арифметика сравнений проще в беззнаковом варианте.

TB>>a<b? Вроде пишется одинаково...

V>В беззнаковом варианте на одно сравнение меньше.


"a<b" пишется одинаково, и в асме число сравнений одинаковое.
А если ты про (a>=0 && a<b) ну это твои проблемы, что ты не смог это выделить в функцию и написать это так, чтоб это скомпилилось в одно сравнение...
Re: Комплексные числа
От: Shmj Ниоткуда  
Дата: 01.10.21 07:03
Оценка:
Здравствуйте, Bjorn Skalpe, Вы писали:

BS>Просто отличное видео раскрывающее понятие комплексных чисел и функций комплексного переменного.


Немного посмотрел — куль! Жаль что на практике моей не применяется, по этому нет смысла вникать.

Вопрос вот какой. Вот о чем задумался. Кнудт хорошо придумал стрелочную нотацию.

Получается так:

↑ — сложение.
↓ — вычитание. На этапе вычитания мы вынуждены ввести понятие отрицательных.

↑↑ — умножение.
↓↓ — деление — на этапе деления мы вынуждены ввести понятие рациональных.

↑↑↑ — возведение в степень. Первая несимметричная операция (2↑↑↑3 != 3↑↑↑2), которая требует так-же введения понятия логарифма.
↓↓↓ — получение корня степени n. На этапе получения корня мы вынуждены ввести 2 класса чисел: вещественные и комплексные.

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

И вопрос у меня такой. А как насчет ↓↓↓↓? Потребует ли сие чудо введения 3 числовой оси?
Re[2]: Комплексные числа
От: Bjorn Skalpe Земля  
Дата: 01.10.21 07:34
Оценка:
S>И вопрос у меня такой. А как насчет ↓↓↓↓? Потребует ли сие чудо введения 3 числовой оси?

Вполне возможно. Есть ряд операторов, но уже за пределами алгебры, которые требуют этого. Это один из способов решения.
Re: Комплексные числа
От: Shmj Ниоткуда  
Дата: 03.10.21 10:02
Оценка:
Здравствуйте, Bjorn Skalpe, Вы писали:

BS>Просто отличное видео раскрывающее понятие комплексных чисел и функций комплексного переменного.


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

Если кто еще знает настолько же кульные видео образовательные — буду благодарен.
Re[3]: Комплексные числа
От: Shmj Ниоткуда  
Дата: 03.10.21 11:09
Оценка:
Здравствуйте, ·, Вы писали:

S>> Если кто еще знает настолько же кульные видео образовательные — буду благодарен.

·>3blue1brown, eigenchris, mathologer математика.

Это вы каналы привели, причем не на русском. А такие золотые видео общеобразовательного типа (где начинают с элементарного уровня) — встречаются 1 на миллион.
Re[3]: Комплексные числа
От: Shmj Ниоткуда  
Дата: 03.10.21 11:31
Оценка:
Здравствуйте, Vzhyk2, Вы писали:

S>>И в видео говорят, что типа на комплексных все заканчивается и числовой плоскости достаточно для всех этих действий с числами.

V>А в реальности не заканчивается. Вовсю используюся квартернионы. Вот здесь можешь прочитать о них, если интересно https://ru.wikipedia.org/wiki/%D0%9A%D0%B2%D0%B0%D1%82%D0%B5%D1%80%D0%BD%D0%B8%D0%BE%D0%BD

Вот если бы такое же понятное видео нафига все это нужно, какая простейшая задача, для которой требуются эти кватернионы и почему без них нельзя обойтись.
Re[4]: Комплексные числа
От: Vzhyk2  
Дата: 03.10.21 16:02
Оценка:
S>Вот если бы такое же понятное видео нафига все это нужно, какая простейшая задача, для которой требуются эти кватернионы и почему без них нельзя обойтись.
Можно, но хреновово получается всё. А задачи всё, что связано с рехмерным движениям, самолеты, ракеты (это важно, особенно ядреные), квадрики, спутники (это не про вас) и т.п.
Re[3]: Комплексные числа
От: ksandro Мухосранск  
Дата: 04.10.21 17:09
Оценка:
Здравствуйте, Vzhyk2, Вы писали:

S>>И в видео говорят, что типа на комплексных все заканчивается и числовой плоскости достаточно для всех этих действий с числами.

V>А в реальности не заканчивается.

Я не очень помню детали, но вроде как бы в этом-то и вся фишка, что на комплексных числах все заканчивается. То есть мы конечно можем добавить еще измерений, но перестают выполняться оновные свойства операций над такими числами,типа:
A + B = B + A , A + (B + C) = (A + B) + C, A * B = B * A и тд.

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

V> Вовсю используюся квартернионы. Вот здесь можешь прочитать о них, если интересно https://ru.wikipedia.org/wiki/%D0%9A%D0%B2%D0%B0%D1%82%D0%B5%D1%80%D0%BD%D0%B8%D0%BE%D0%BD


Кватерионы — одна из попыток расширить множество чисел, там кажется выполняются почти все свойства, кроме коммутативности умножения (A * B != B * A), я не помню детали.
Есть и другие виды "гиперкомплексных чисел", но там везде немного другая алгебра, и немного другие свойства сложения и умножения.
Re[2]: Комплексные числа
От: Silver_S Ниоткуда  
Дата: 17.10.21 20:36
Оценка:
Здравствуйте, omgOnoz, Вы писали:

O>Комплексные числа нужны в математике "для связки слов" в промежуточных вычислениях. Это первое, что нужно понимать в сабже. Какого-то. Сакрального смысла в теме нет, ее очень часто преподносят некорректно, не объясняя толком для чего эти числа придуманы.


Уравнение Шредингера из основ квантовой механики — комплексное. И волновая функция комплексная. Говорит ли это о том, что комплексные числа реально присутствуют в законах природы в каком либо виде (дополнительные измерения?). Или это просто костыли, без которых можно обойтись, но комплексная запись короче — это не понятно.
Re: Комплексные числа
От: Shmj Ниоткуда  
Дата: 18.10.21 20:57
Оценка:
Здравствуйте, Bjorn Skalpe, Вы писали:

BS>Просто отличное видео раскрывающее понятие комплексных чисел и функций комплексного переменного.


Вот, кстати, критика :

  Скрытый текст
https://www.youtube.com/watch?v=si63dtg9FUk


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

Видимо отрицательные нас заставляют принять еще в начальной школе. Хотя у многих же ломка идет — как это -5 яблок? Вот, пошел я к Васе, у Васи 5 яблок, я забрал у 100 яблок — сколько осталось? Ну так ведь тоже — эта задача неразрешима и к ней применимы все те же аргументы, которые чел. приводил для отрицания комплексных.
Re[2]: Комплексные числа
От: Bjorn Skalpe Земля  
Дата: 18.10.21 22:36
Оценка:
S>Вот, кстати, критика :

...

Вот кстати разнос критики и критика

https://www.youtube.com/watch?v=RfQ0GgoLcks
Отредактировано 18.10.2021 22:45 Bjorn Skalpe . Предыдущая версия . Еще …
Отредактировано 18.10.2021 22:45 Bjorn Skalpe . Предыдущая версия .
Re[2]: Комплексные числа
От: jamesq Россия  
Дата: 18.10.21 23:08
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Видимо отрицательные нас заставляют принять еще в начальной школе. Хотя у многих же ломка идет — как это -5 яблок? Вот, пошел я к Васе, у Васи 5 яблок, я забрал у 100 яблок — сколько осталось? Ну так ведь тоже — эта задача неразрешима и к ней применимы все те же аргументы, которые чел. приводил для отрицания комплексных.


Что комплексные числа, что отрицательные, что натуральные, рациональные — это всё различные математические концепции, понятия, придуманные математиками.
Они могут использоваться для различных применений. Какие-то уместны в некоторых ситуациях, какие-то нет.
Вот скажем, отрицательные числа уместны, чтобы деньги считать. Отрицательным числом обозначается долг. А вот в физике, массу отрицательным числом не обозначить.

А уж если говорить про действительные числа — так это вообще крайне идеализированная концепция. Тут уже пошла чистая математическая фантазия, что они образуют биекцию с прямой. Т.е. некая непрерывная линия без промежутков.
Вот эту вот математическую фантазию применяют в физике, идеализируя реальность.
Рассуждать о том, что реальное пространство всюду непрерывно, можно до бесконечности рассматривать всё более мелкие и мелкие его промежутки — оно неправильно.
Реальность всё-таки устроена несколько иначе же. Есть же эта Планковская длина, меньше которой рассматривать расстояния бессмысленно.
Re[4]: Комплексные числа
От: LaptevVV Россия  
Дата: 19.10.21 02:09
Оценка:
TB>Вот ты ржёшь, но к сожалению, именно так думали дебилы, которые сделали беззнаковые индексы в STL и в Русте. Из-за них теперь миллионы программистов либо пердолятся с кастами на каждый чих, засирая код мусором, либо ловят паники на невинных на первый взгляд операциях.
Ну, дык адрес — это ж целое беззнаковое, не ?
Программисты с этим пердолятся с самого начала...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[3]: Комплексные числа
От: SkyKnight Швейцария https://github.com/dmitrigrigoriev/
Дата: 19.10.21 07:42
Оценка:
Здравствуйте, Silver_S, Вы писали:

S_S>Уравнение Шредингера из основ квантовой механики — комплексное. И волновая функция комплексная. Говорит ли это о том, что комплексные числа реально присутствуют в законах природы в каком либо виде (дополнительные измерения?). Или это просто костыли, без которых можно обойтись, но комплексная запись короче — это не понятно.


Если ты опишешь систему "Маятник" или "груз на пружине" дифференциальным уравнением и решишь его, то увидишь, что в решении будет пристутсвовать (упрощенно) exp(iK*t).
В общем если коротко, там где в динамических системах присутсвуют затухающие колебания, в решение дифф. уравнения для этой системы будут пристутсвовать комплесные числа.

И не только затухающие.
github.com/dmitrigrigoriev/
Отредактировано 19.10.2021 7:52 SkyKnight . Предыдущая версия . Еще …
Отредактировано 19.10.2021 7:44 SkyKnight . Предыдущая версия .
Re[6]: Комплексные числа
От: LaptevVV Россия  
Дата: 19.10.21 18:53
Оценка:
LVV>>Ну, дык адрес — это ж целое беззнаковое, не ?
LVV>>Программисты с этим пердолятся с самого начала...
TB>Адрес — да, индекс — нет. И отрицательный индекс часто надо обрабатывать именно как отрицательное число, чтобы знать, что мы вывалились за диапазон именно слева, а не справа.
Ну, начиная с Си массивы — это просто модель памяти. И индекс (как и адрес) просто обозначает смещение от начала.
Обратите внимание, что в паскале изначально можно было делать индексы произвольно,
но в последующих языках — и в Обероне окончательно — массив тоже стал индексироваться с нуля.
так что, на мой взгляд, в расте просто довершили эволюцию индексирования до завершения — беззнаковое целое, как и адрес.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[7]: Комплексные числа
От: T4r4sB Россия  
Дата: 19.10.21 19:27
Оценка:
Здравствуйте, LaptevVV, Вы писали:

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

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

Это всё рассказы про "идея того, идея сего". Чистая теория, в отрыве от практики. Просто слова, без опоры реального опыта, когда совершенно корректные на первый взгляд операции выдают падающий код. Концепция "индекс это смещение" на практике — это дыра в безопасности, не дающая преимуществ ни в одной ситуации. В Расте авторы сильно протупили. В С++ STL авторы раскаялись: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1428r0.pdf
но уже поздно

И да, это в Си индекс это смещение.
В Расте индекс это число в диапазоне [0 .. len).
И если мы боремся за идеологическую чистоту, то и надо использовать специальный тип, у которого диапазон значений ровно такой, хотя практической пользы от этого тоже не будет никакой.
Беззнаковый же тип соответствует этому диапазону ничуть не лучше, чем знаковый. А ограничение снизу приводит к проблемам, когда промежуточный результат операции, вычисляющей индекс, оказался отрицательным.
Отредактировано 19.10.2021 19:45 T4r4sB . Предыдущая версия .
Re: Комплексные числа
От: Тёма  
Дата: 22.10.21 12:57
Оценка:
Вот ёще отличная подборка. От тригонометрии к комплексным числам и дальше, очень понятным языком и с примерами.
https://www.3blue1brown.com/topics/lockdown-math
Re[3]: Комплексные числа
От: Dym On Россия  
Дата: 10.01.22 16:50
Оценка:
Здравствуйте, Vzhyk2, Вы писали:

S>>И в видео говорят, что типа на комплексных все заканчивается и числовой плоскости достаточно для всех этих действий с числами.

V>А в реальности не заканчивается. Вовсю используюся квартернионы.
Можно обобщить до гиперкомплексных чисел.
Счастье — это Glück!
Re[2]: Комплексные числа
От: MaximVK Россия  
Дата: 10.01.22 21:13
Оценка:
Здравствуйте, Shmj, Вы писали:

Ох, какой же космический идиот! Но ладно, такое бывает. Но, блин, 350k подписчиков?!
Re[5]: Комплексные числа
От: alexzzzz  
Дата: 12.01.22 17:49
Оценка:
Здравствуйте, LaptevVV, Вы писали:

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

LVV>Ну, дык адрес — это ж целое беззнаковое, не ?
LVV>Программисты с этим пердолятся с самого начала...

Почему бы адресам/индексам не быть временно отрицательными в ходе арифметических операций с другими адресами/индексами и смещениями?
Re[6]: Комплексные числа
От: LaptevVV Россия  
Дата: 12.01.22 19:07
Оценка:
LVV>>Ну, дык адрес — это ж целое беззнаковое, не ?
LVV>>Программисты с этим пердолятся с самого начала...
A>Почему бы адресам/индексам не быть временно отрицательными в ходе арифметических операций с другими адресами/индексами и смещениями?
Это не адреса, а промежуточные значения.
Адреса — это именно смещение от начала массива памяти.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[3]: Комплексные числа
От: pva  
Дата: 13.01.22 11:18
Оценка:
Здравствуйте, jamesq, Вы писали:

J>Реальность всё-таки устроена несколько иначе же. Есть же эта Планковская длина, меньше которой рассматривать расстояния бессмысленно.

И как же она устроена? И есть ли объективные причины считать Планковскую длину наименьшей неделемой единицей?
newbie
Re[7]: Комплексные числа
От: alexzzzz  
Дата: 13.01.22 18:47
Оценка:
Здравствуйте, LaptevVV, Вы писали:

A>>Почему бы адресам/индексам не быть временно отрицательными в ходе арифметических операций с другими адресами/индексами и смещениями?

LVV>Это не адреса, а промежуточные значения.
LVV>Адреса — это именно смещение от начала массива памяти.

Промежуточные значения типа "адрес" или "индекс".
Re[6]: Комплексные числа
От: vdimas Россия  
Дата: 26.01.22 18:21
Оценка:
Здравствуйте, T4r4sB, Вы писали:

LVV>>Ну, дык адрес — это ж целое беззнаковое, не ?

LVV>>Программисты с этим пердолятся с самого начала...
TB>Адрес — да, индекс — нет.

Адрес и есть индекс.

И зачем что-то выдумывать на коленке?
Изначально адреса беззнаковые, разница адресов знаковая.
Re[7]: Комплексные числа
От: T4r4sB Россия  
Дата: 26.01.22 18:23
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Адрес и есть индекс.


Нет

Адрес это адрес, индекс это индекс (ну или в крайнем случае — смещение)

V>И зачем что-то выдумывать на коленке?

V>Изначально адреса беззнаковые, разница адресов знаковая.

Ух ты, а может быть такой эксперт, как ты, подскажет, что же это за такой офигительный тип данных, который сам по себе беззнаковый, но операция a-b даёт знаковый результат? А то я вот пытаюсь вспомнить, да только вот нифига не выходит каменный цветок. А у тебя вот как-то вышел
Re: Комплексные числа
От: vdimas Россия  
Дата: 26.01.22 18:30
Оценка:
Здравствуйте, Bjorn Skalpe, Вы писали:

BS>Просто отличное видео раскрывающее понятие комплексных чисел и функций комплексного переменного.

BS>https://www.youtube.com/watch?v=kicp_odjsRs

Ммм... не согласен.
Хорошо раскрывается история возникновения комплексного исчисления, зачем оно вообще надо...
Но раскрывается не то и не о том. ))

Проблема комплексных чисел, ИМХО, сугубо в дебильной терминологии: "действительная" и "мнимая" части.
Ну какие в опу "мнимые" и "действительные"? ))
Никаких действительных и мнимых частей комплексного числа нет, есть некая алгебра поверх 2D-векторов.

Причём, даже не поверх ортогональных 2D-векторов классической записи комплексного числа (бо это лишь ортогональные проекции), а в базе там простейшая алгебра над полярной системой координат.

Если бы оно давалось именно так с самых первых определений, не было бы этого первоначального ступора у новичков/школьников/студентов.
Re[9]: Комплексные числа
От: Mystic Artifact  
Дата: 26.01.22 21:29
Оценка:
Здравствуйте, vdimas, Вы писали:

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

V>(принципиально не запрещено иметь и отрицательные адреса, ес-но, но в классических гарвардской и фон-неймановских архитектурах уже приняли указывать адреса неотрицательным смещением)
Чего-то тема задела. Позволю себе тебя дополнить не влезая в срач: собственно говоря в адресной арифметике нет знакового или беззнакового сложения (да и вообще в процессорах нет разных команд для этого). Есть просто сложение. Есть адрес один, есть второй (адрес, который мы трактуем как смещение) — они складываются. Да, иногда это трактуется как знаковое число, но это же наше восприятие и только с желаемым или нежелаемым эффектом. А если взять за базу 0 — то оффсет никогда не сможет переполнить регистр. А база не 0 — то о боже, мы получим "прыжок назад". Тьфу. [Людям думать удобно об адресном пространстве у которого есть начало и конец, но это не так: это что-то вроде бесконечной закольцеванной ленты, когда дело касается относительной индексации разумеется, а не вообще].

PS: Да и вообще, если взять x86 LEA — то это просто отличная команда для вычисления... чего? Адресов? Нет. Она используется для вычисления чего угодно. Хотя, имеет пространное название и изначально предполагалась для адресов (и индексов). Ну, как, экстремальный случай эксплуатации этой системы — на ум приходит movfuscator, который эффективно поможет окончательно смешать всё в кучу, если кому-то было мало.
Отредактировано 26.01.2022 21:38 Mystic Artifact . Предыдущая версия . Еще …
Отредактировано 26.01.2022 21:37 Mystic Artifact . Предыдущая версия .
Отредактировано 26.01.2022 21:35 Mystic Artifact . Предыдущая версия .
Re[10]: Комплексные числа
От: vdimas Россия  
Дата: 26.01.22 21:43
Оценка:
Здравствуйте, T4r4sB, Вы писали:

TB>Послушай дядя, давай ты перестанешь сам себе противоречить

TB>извинишься за пиписькомерский базар или пойдёшь нафиг, ок?

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


TB>Ты противоречия не видишь, не?


Были бы противоречия, ты бы их давно показал.


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


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

Еще раз, медленно, индекс — это некие данные, требуемые для поиска целевых.
Для поиска целевых данных по нулевому смещению в массиве выше индекс будет равен 1.
(и на всяк случай — смещение не в байтах, а в элементах)


TB>Смещение — это разница между адресом элемента и адресом начала. Значит, индекс знаковый, это если махать руками, как ты любишь.


Индекс может быть знаковым, ес-но, о чём было сказано:

тип интегрального выражения-индекса массива в Си приводится компилятором к size_t или ptrdiff_t, т.е. к беззнаковому или знаковому интегральному типу шириной в адрес данных


Встроенный массив в Си представлен адресом своего первого элемента.
Разница указателей — это знаковый тип ptrdiff_t, значение этого типа может быть индексом массива или, согласно адресной арифметике Си, значение типа ptrdiff_t можно складывать со значением указателя, получая положительно или отрицательно смещенное итоговое значение. Вычитать тоже можно, ес-но.


TB>А если смотреть на практику, а не на твои бессмысленные философствования, то беззнаковые индексы — это проблема и скрытая ловушка для некоторых видов вычислений. Вот и всё.


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

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

Т.е., эти условности

тип интегрального выражения-индекса массива в Си приводится компилятором к size_t или ptrdiff_t, т.е. к беззнаковому или знаковому интегральному типу шириной в адрес данных

работают сугубо в процессе расширения интегрального значения выражения-индекса до ширины адреса.

И да, в том же дотнете уже ввели тип данных nint — это знаковый тип данных шириной в native адрес, поэтому вопрос можно считать почти исчерпанным.
В сях давно околостандартным стал аналогичный ssize_t.
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]: Комплексные числа
От: T4r4sB Россия  
Дата: 27.01.22 06:09
Оценка:
Здравствуйте, vdimas, Вы писали:

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


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


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

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


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

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


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

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

Короче давай без самолюбования, без демонстрации скила в демагогии, без завуалированных наездов на оппонента (после которых я перехожу к прямым, да), без засирания философией и оффтопом, ок? Я считаю всё это тоже крайне некультурным поведением, странно что ты этого не замечаешь.
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[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[6]: Комплексные числа
От: Privalov  
Дата: 27.01.22 14:29
Оценка:
Здравствуйте, vdimas, Вы писали:

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


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

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

Ладно, допустим что virtual в английском языке означает фактический. Я по словарям не смотрел, но дупустим.
Но тогда почему одни функции в том же C++ определены с virtual, а другие — нет. Те функции, которые не virtual — они какие?
Так что все равно напрягает.
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>Ты сам задал тон общения с тобой.


Ты изначально взял снисходительный тон, при этом выдавая крайне сомнительные откровения. Адрес — не индекс.
Отредактировано 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}, ...

Ой, что-то ерунда получается.
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)


А еще можно таким способом сделать нецельночисленные индексы, разреженные индексы, бесконечные индексы для генераторов и т.п.
Re[9]: Комплексные числа
От: T4r4sB Россия  
Дата: 28.01.22 17:51
Оценка:
Здравствуйте, Miroff, Вы писали:

M>Практический смысл преизрядный: такому типу даже теоретически невозможно присвоить значение, выходящее за пределы диапазона.


Хм, и каким же образом это обеспечивается?
Вот давай
let index = a - b;

Какой механизм языка не даст мне даже теоретически сделать a<b?
А никакой.

Тогда что же будет вместо? А будут в лучшем случае рантаймовые проверки на КАЖДУЮ промежуточную операцию! Да, в таком случае они есть и для знаковых типов тоже, но всё что я получу на беззнаковых — программа упадёт при попытке вычислить промежуточный результат, а мне это нахрен не сдалось. Тогда какой в этом практический смысл? Что я на этом сэкономлю по сравнению с вариантом "посчитать всё в наиболее удобном для вычислений типе, который очень даже знаковый, а потом в самом конце проверить, но это валидный индекс"? Вместо проверки на каждой операции будет только одна проверка в конце, ну и хорошо.

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


О, давай введём индекс, который может быть только 0,1,3,42. И вот давай попытаемся что-то посчитать
if let Some(element) = element.get(a+2) ...

(get — это метод, который проверяет валидность индекса и возвращает либо элемент по индексу, либо None)
Но у нас так вышло, что даже теоретическая возможность вычислить 2+2 запрещена так любимым современными хипстерами "ОГРАНИЧЕНИЕМ НА УРОВНЕ СИСТЕМЫ ТИПОВ". (Ещё хипстер может добавить "Благодаря этому ограничению мы сумели выкинуть проверку из get и всегда возвращать элемент, тем самым мы ускорили get, мы такие классные") То есть прога завалится до попытки проверить валидность индекса. А какой толк тогда в этом ограничении, если оно обеспечивается только через проверки в рантайме, да ещё и дико усложняет примерно все операции, в который индекс это не просто уникальный ойдишник, но и число, над которым делается математика?
Отредактировано 28.01.2022 17:58 T4r4sB . Предыдущая версия .
Re[10]: Комплексные числа
От: Miroff Россия  
Дата: 28.01.22 18:41
Оценка:
Здравствуйте, T4r4sB, Вы писали:

TB>Здравствуйте, Miroff, Вы писали:


M>>Практический смысл преизрядный: такому типу даже теоретически невозможно присвоить значение, выходящее за пределы диапазона.


TB>Хм, и каким же образом это обеспечивается?


Системой типов. Твоя беда что ты до сих пор мыслишь на С++ тридцатилетней давности с его адресной арифметикой. Тебе на самом деле не нужна семантика a-b, а ту семанику, которая тебе на самом деле нужна можно выразить через типы.

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


TB>О, давай введём индекс, который может быть только 0,1,3,42. И вот давай попытаемся что-то посчитать

TB>
TB>if let Some(element) = element.get(a+2) ...
TB>


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

TB>Но у нас так вышло, что даже теоретическая возможность вычислить 2+2 запрещена так любимым современными хипстерами "ОГРАНИЧЕНИЕМ НА УРОВНЕ СИСТЕМЫ ТИПОВ". (Ещё хипстер может добавить "Благодаря этому ограничению мы сумели выкинуть проверку из get и всегда возвращать элемент, тем самым мы ускорили get, мы такие классные") То есть прога завалится до попытки проверить валидность индекса. А какой толк тогда в этом ограничении, если оно обеспечивается только через проверки в рантайме, да ещё и дико усложняет примерно все операции, в который индекс это не просто уникальный ойдишник, но и число, над которым делается математика?


В первую очередь это упрощает код избавляя его от миллиардов проверок на каждый чих чтобы на дай бог не выстрелить себе в ногу. В Си ты хотя бы получал сегфолт, а вот в питоне, где отрицательные индексы есть, ты вообще получишь некорректный результат и никогда об это не узнаешь. И вовсе не обязательно это делать в рантайме. Корректность алгоритмов можно и нужно доказывать в компайл тайме вынося в рантайм только те проверки, для которых вывод не дал однозначного результата.
Re[11]: Комплексные числа
От: T4r4sB Россия  
Дата: 28.01.22 19:20
Оценка:
Здравствуйте, Miroff, Вы писали:

M>Системой типов. Твоя беда что ты до сих пор мыслишь на С++ тридцатилетней давности с его адресной арифметикой. Тебе на самом деле не нужна семантика a-b, а ту семанику, которая тебе на самом деле нужна можно выразить через типы.


Видишь ли, я при работе использую std::vector 30-летней выдержки. А при программировании на Rust я использую вектор, основанный на идее 30-летный выдержки.

TB>>О, давай введём индекс, который может быть только 0,1,3,42. И вот давай попытаемся что-то посчитать


M>Если ты вводишь такой индекс, будь добр определи что такое для него операция плюс. Иначе не скомпилируется.


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

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


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

M>В Си ты хотя бы получал сегфолт,


На знаковых индексах я получал бы абсолютно валидную рабочую программу, обрабатывая индекс при помощи функции my_vector.is_index_valid(i), которая успешно принимала и отрицательные числа.

M>а вот в питоне, где отрицательные индексы есть, ты вообще получишь некорректный результат и никогда об это не узнаешь.


В Питоне лажа полная. Разумеется, отрицательный индекс должен считаться инвалидным.

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


А ещё надо писать красивые программы, которые никогда не глючат.
А в реальном мире есть миллион ситуаций, когда тебе блин НУЖНО вычитать индексы, или когда тебе НУЖНО знаковое смещение от индекса элемента. И постоянно помнить, что даже банальное "i<v.size()-1" таит в себе бомбу — это просто сложность, не обоснованная ни-чем, кроме хипстерских размахиваний руками.
Re[8]: Комплексные числа
От: VladiCh  
Дата: 31.01.22 08:25
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Здравствуйте, Privalov, Вы писали:


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


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

V>Перечислил не все оттенки, разумеется, вот пример, где по смыслу подходит наречие "почти":
V>

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

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

Угу, "практически" в смысле "не совсем армию, но почти".
"Фактически" — это немного другое, в нем нет необходимого оттенка того, что это не совсем то.
Re[9]: Комплексные числа
От: vdimas Россия  
Дата: 31.01.22 09:28
Оценка:
Здравствуйте, VladiCh, Вы писали:

VC>Угу, "практически" в смысле "не совсем армию, но почти".

VC>"Фактически" — это немного другое, в нем нет необходимого оттенка того, что это не совсем то.

Это в русском. ))
В английском virtual приобретает смысловой оттенок в зависимости от контекста.
Re[5]: Комплексные числа
От: vdimas Россия  
Дата: 31.01.22 09:38
Оценка:
Здравствуйте, VladiCh, Вы писали:

VC>Ну и "виртуальный" если подумать имеет тот же самый смысл с немного отличающимся оттенком.

VC>А вы тут придумали какую-то ересь.

Учите матчасть, как грится.

вирту-а́ль-ный

Синонимы

потенциальный
мысленный, воображаемый, нереальный
симулированный, эмулированный
эффективный


Понятно, что профессиональная деформация, что жаргонизмы IT въелись в кровь, но всё же...
Re[14]: Комплексные числа
От: vdimas Россия  
Дата: 31.01.22 10:05
Оценка:
Здравствуйте, T4r4sB, Вы писали:

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

V>> auto ptr = begin(vec);
V>> ptr++;
V>> auto x = ptr[-1];
TB>Ты сам себя выпорол. Никто так с векторами не работает.

ОК, продолжаем порку:

Итераторы произвольного доступа

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


Итераторы произвольного доступа удобны именно для относительной адресации.
Новомодная идиома ranges когда-то зародилась и выросла именно из такого обращения с итераторами, будучи обобщённой затем на произвольные итераторы.
В т.ч.:
https://en.cppreference.com/w/cpp/ranges/view_interface/operator_at

The default implementation of operator[] member function obtains the element at the specified offset relative to the beginning iterator, reusing the operator[] of the iterator type.



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

TB>Ты изначально взял снисходительный тон

На преподов в ВУЗ-е тоже набрасывался? ))
Re[15]: Комплексные числа
От: T4r4sB Россия  
Дата: 31.01.22 17:47
Оценка:
Здравствуйте, vdimas, Вы писали:

V>ОК, продолжаем порку:

V>[q]
V>Итераторы произвольного доступа

А это-то вообще к чему? XD
Re[9]: Комплексные числа
От: __kot2  
Дата: 01.02.22 00:13
Оценка:
Здравствуйте, LaptevVV, Вы писали:
LVV>1. Я читал все книжки Вирта еще в Советском Союзе...
LVV>2. И еще тогда понял, что он таки да — ОЧЕНЬ умный дядька.
а мне повезло на его лекции быть в универе где он рассказывал про дизайн Оберона и прикалывался над С++
однако, Оберон помер..
Re[10]: Комплексные числа
От: Privalov  
Дата: 01.02.22 12:16
Оценка:
Здравствуйте, VladiCh, Вы писали:

VC>Наоборот, здесь vdimas все запутал. Не virtual — обычная функция, а virtual — "почти функция". Почему так — ну потому что то что стоит за этой "функцией" четко не определено, зависит от VMT.

VC>То есть это не совсем функция, а некий редирект на функцию, я думаю в этом был изначальный смысл.

Дак я, собственно, об этом же. Виртуальной можно назвать функцию, которая определена где-то в интерфейсе, у которой нет тела. Но кто-то ее вызывает и получает результат. Что там на самом деле отрабатывает, неважно.
А к функции, которая и сама может вернуть результат, определение "виртуальная" не подходит. Она какая-нибудь перекрываемая.
Re[16]: Комплексные числа
От: vdimas Россия  
Дата: 02.02.22 18:24
Оценка:
Здравствуйте, T4r4sB, Вы писали:

V>>Итераторы произвольного доступа

TB>А это-то вообще к чему? XD

К еще одному утверждению, не соответствующему действительности:

Никто так с векторами не работает.


Только не с векторами, а с итераторами.
Итератор произвольного доступа можно не только от вектора получить, т.е. надо накручивать функциональность вокруг итератора, а не вектора, ес-но.

В общем, если бы с итераторами так не работали, не возникла бы библиотека ranges сначала в рамках Boost, затем в стандарте.
Она именно так и работает, по крайней мере для итераторов произвольного доступа, убирая последние отличия итераторов от указателей через систему хелперов, в т.ч. через хелперы, получающие итераторы от встроенных и библиотечных типов. В т.ч. через открытость такой системы, где к юзверским типам можно доопределять соотв. хелперы.
(с оговоркой, что для более ограниченных итераторов — в рамках их ограничений, ес-но)
Отредактировано 02.02.2022 18:28 vdimas . Предыдущая версия . Еще …
Отредактировано 02.02.2022 18:27 vdimas . Предыдущая версия .
Отредактировано 02.02.2022 18:26 vdimas . Предыдущая версия .
Re[5]: Комплексные числа
От: vdimas Россия  
Дата: 02.02.22 18:47
Оценка:
Здравствуйте, Marty, Вы писали:

M>Беззнаковые в C++ — размеры, обычно используют для этого size_t. В операторе []/at() тоже используется беззнаковый


Ну да, вектор гарантирует, что у него нет данных по отрицательному смещению, индекс vector::operator[] имеет тип size_type.

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


+1

Но в сигнатуре итератора вектора iterator::operator[] индекс имеет тип difference_type.
size_type        Unsigned integer type (usually std::size_t)
difference_type  Signed integer type (usually std::ptrdiff_t)
Re[6]: Комплексные числа
От: vdimas Россия  
Дата: 02.02.22 19:31
Оценка:
Здравствуйте, T4r4sB, Вы писали:

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


Здесь UB:
int32_t i = get_some_value();
uint64_t n = i; // (uint64_t)i; uint64_t(i)



TB>Вот я хочу перебрать элементы с конца

TB>
TB>for (auto i = vec.size() - 1; i >=0; --i)
TB>

TB>Ну я вот записал цикл самым естественным образом. И подорвался на мине.

Чтобы не подорваться:
for (auto const& e : ranges::view::reverse(vec))



TB>А ещё я хочу перебрать все элементы, кроме последнего


ranges::subrange
https://en.cppreference.com/w/cpp/ranges/subrange

Для общих случаев используются встроенные адаптеры диапазонов:
https://en.cppreference.com/w/cpp/ranges#Range_adaptor_objects

или пишутся свои для "красоты" или удобства повторного их использования.
(обрати внимание на синтаксис адаптеров в примерах)


TB>Ой, что-то ерунда получается.


Есть такое, но это в прошлом же.

Сейчас хелперы навроде std::ssize(vec) служат для гладкого сопряжения с адаптерами из ranges:
https://en.cppreference.com/w/cpp/iterator/size
(для перехода в мир знаковых индексов)
Отредактировано 02.02.2022 22:25 vdimas . Предыдущая версия .
Re[10]: Комплексные числа
От: vdimas Россия  
Дата: 02.02.22 19:36
Оценка:
Здравствуйте, VladiCh, Вы писали:

VC>Не virtual — обычная функция, а virtual — "почти функция". Почему так — ну потому что то что стоит за этой "функцией" четко не определено, зависит от VMT.

VC>То есть это не совсем функция, а некий редирект на функцию, я думаю в этом был изначальный смысл.

Потенциальных смыслов в английском здесь сразу несколько:
— подразумеваемая функция
— выбираемая по-факту функция

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

Для меня основное значение всегда было второе.

Вдогонку, pure virtual однозначно отсылает к первому.
Отредактировано 02.02.2022 19:41 vdimas . Предыдущая версия . Еще …
Отредактировано 02.02.2022 19:38 vdimas . Предыдущая версия .
Re[7]: Комплексные числа
От: T4r4sB Россия  
Дата: 02.02.22 19:47
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Здесь UB:

V>
V>int32_t i = get_some_value();
V>int64_t n = i; // (int64_t)i; int64_t(i)
V>


Каст знакового в беззнаковое однозначно определён.
И да, ты в курсе, чем отличается UB от ID?

V>
V>for (auto const& e : ranges::view::reverse(vec))
V>


V>ranges::subrange

V>https://en.cppreference.com/w/cpp/ranges/subrange

V>Для общих случаев используются встроенные адаптеры диапазонов:

V>https://en.cppreference.com/w/cpp/ranges#Range_adaptor_objects

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

V>Сейчас хелперы навроде std::ssize(vec) служат для гладкого сопряжения с адаптерами из ranges:


Да, я знаю, ssize это выход. Опомнились и осознали, когда уже Страуструп прямо сказал, что не надо использовать ансигнеды всуе.
Ждём когда Растаманы допрут до того же.
Re[2]: Комплексные числа
От: vdimas Россия  
Дата: 02.02.22 19:55
Оценка:
Здравствуйте, Shmj, Вы писали:

S>↑ — сложение.

S>↓ — вычитание.

Как у обычных векторов на 2D плоскости.


S>↑↑ — умножение.


В "привычной" алгебре при векторном умножении 2D векторов получаем перпендикулярный вектор в 3D.
В алгебре комплексных чисел эта операция складывает углы в полярной системе координат.


S>↓↓ — деление


сводится к умножению обоих частей дроби на комплексно-сопряжённый делитель.


S>↑↑↑ — возведение в степень.


Как и умножение, в полярной системе координат тривиально.
Re[4]: Комплексные числа
От: vdimas Россия  
Дата: 02.02.22 20:00
Оценка:
Здравствуйте, ksandro, Вы писали:

K>А значит это уже получается не совсем числа (или совсем не числа)...


гиперкомплексные, где обычные (двухкомпонентные) комплексные — частный случай.


K>над комплексными числами все операции сохраняют свои свойства.


Да.
Комплексные числа образуют алгебраически замкнутое поле.
Другие гиперкомплексные (большей размерности) — нет.
Re[8]: Комплексные числа
От: vdimas Россия  
Дата: 02.02.22 22:51
Оценка:
Здравствуйте, T4r4sB, Вы писали:

TB>Каст знакового в беззнаковое однозначно определён.


Зато обратный каст нет.
И вот у тебя знаковый тип-индекс, а под ним беззнаковое выражение...


TB>Ну понимаешь, да, можно применять крутые модные клёвые итераторы вместо отсталых пенсионерских винтажных индексов, правде не во всех случаях. Только всё это лишний слой абстракции


Для векторов, массивов, строк и т.д. слой бесплатный.


TB>который на самом деле был бы нахрен не нужен, если бы индексы и размеры были знаковые.


Знаковые размеры неудобны.
В дотнете сильно раздражают.

Знаковые индексы тоже не всегда удобны.


V>>Сейчас хелперы навроде std::ssize(vec) служат для гладкого сопряжения с адаптерами из ranges:

TB>Да, я знаю, ssize это выход. Опомнились и осознали, когда уже Страуструп прямо сказал, что не надо использовать ансигнеды всуе.
TB>Ждём когда Растаманы допрут до того же.

Тебе уже отвечали тут несколько раз — вектор не имеет данных по отрицательному смещению.
Зато итератор может иметь.

Ну да, для большого класса алгоритмов глубоко до фени подробности вектора, для этих алгоритмов и навертели ranges::view.
Re[7]: Комплексные числа
От: vdimas Россия  
Дата: 02.02.22 23:20
Оценка:
Здравствуйте, VladiCh, Вы писали:

VC>Жаргонизмы тут ни при чем. я говорю о том, как это слово реально используется вне IT контекста, и откуда взялся собственно смысл в IT-контексте.

VC>И о том что оно не переводится как "фактический" нигде

В переводах всегда используется жаргонизм "виртуальная", т.е. это уже термин, не требующий перевода.


VC>смысл его "похожий, но не совсем тот"


Смысл его — фактически выбираемая.

=================
Меня немного улыбает, что ты и Привалов считаете оттенки "подразумеваемый"/"возможный" и "фактический" противоположными.
Это близкие значения в случае, когда нечто "возможное" непременно будет однажды "фактическим", просто в некий момент еще неизвестно каким именно.

Т.е. в контексте IT у этих оттенков разный не смысл, а время действия. ))
В момент написания программы — "возможное".
В момент работы этой же программы — "фактическое".

Английское "virtual" просто удачно охватывает оба смысла.

А я обращал внимание, что в русском языке слово "виртуальный" имеет совсем другой оттенок, чем в английском.

В русском "виртуальный" означает, скорее, "надуманный".
Типа как "виртуальные частицы".
Этот термин в русском однозначно говорит, что никаких "виртуальных частиц" в реальности не существует.

Однако, в английском про виртуальные частицы довольно часто встречаются пояснения, что это никакие нафик не частицы, что это просто флуктуации или возмущения полей и т.д.
Потому что в английском оно же выглядит, скорее, как "возможные частицы".
И регулярно встречаются предложения придумать для этого понятия другой термин, т.е. в английском языке термин многими видится неудовлетворительным.
Re[8]: Комплексные числа
От: Privalov  
Дата: 03.02.22 07:42
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Меня немного улыбает, что ты и Привалов считаете оттенки "подразумеваемый"/"возможный" и "фактический" противоположными.


Загляни в словарь. Фактический — действительный, состоявшийся. Возможный — такой, который может произойти. Разницу объяснять надо?

V>Это близкие значения в случае, когда нечто "возможное" непременно будет однажды "фактическим", просто в некий момент еще неизвестно каким именно.


С какого перепугу возможное непременно станет фактическим?

V>В момент написания программы — "возможное".

V>В момент работы этой же программы — "фактическое".

В момент написания программы я знаю, что в определенном месте будет вызван метод. Мне известно, как он выглядит, но неизвестно, откуда он вызовется.Только при выполнении это станет ясно. То есть он за счет чего-то реального моделируется. Как и все виртуальное.

V>Английское "virtual" просто удачно охватывает оба смысла.


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

V>Типа как "виртуальные частицы".

Нам ближе виртуальные машины. Вот помню, на ЕС 1036 стояла у нас СВМ ЕС. На ней создавалась виртуальная машина с БОС 7.3 (дальнейшее ращвитие ОС ЕС).
Мне нужно выполнить на ней некое задание. Для этого сначала я запускаю ридер на устройство чтения с перфокарт. Если кто не знает, ридер (RDR) — это программа системного ввода. Да, так вот. Ридер ждет, когда ему придет пакет перфокарт.
А пакет этот в виде перфокарт не существует. Он лежит где-то на другой виртуальной машине с ПДО. Я как-то указываю ридеру, что этот пакет нужно прочитать. Деталей не помню, давно это было. Но ни перфокарт, ни устройства ввода физически не существует. Однако ридер спокойно отрабатывает, задание запускается и работает. И видит он пакет перфокарт как таковой. Он не знает, что пакет этот не существует. Как не знает, что и устройства ввода не существует.

И так все. Виртуальное устройство физически не существует. Оно как-то моделируется.
Ровно то же с виртуальными функциями. Но. В C++ то, что называется виртуальной функцией, может существовать физически. И значит, к такой функции термин "виртуальная" неприменим.
Отредактировано 03.02.2022 7:46 Privalov . Предыдущая версия .
Re[11]: Комплексные числа
От: __kot2  
Дата: 03.02.22 14:08
Оценка:
Здравствуйте, LaptevVV, Вы писали:
LVV>2. В 2018 или 2019 году в Россию на День Оберона (который ежегодно происходит в Москве и Орле) приехал Гуткнехт.
поискал кто это такой, гугл такие картинки интересные выдает

LVV>Рассказывал, что они там у себя придумали.

LVV>В ниши Оберон ушел — туда, где требуется надежность
интересно, не знал
Re[12]: Комплексные числа
От: LaptevVV Россия  
Дата: 03.02.22 16:32
Оценка:
LVV>>2. В 2018 или 2019 году в Россию на День Оберона (который ежегодно происходит в Москве и Орле) приехал Гуткнехт.
__>поискал кто это такой, гугл такие картинки интересные выдает
Гуткнехт — это соратник Вирта по проекту Оберон (см. сайт Project Oberon 2013)
Два мужика (одному лет 50, второму порядка овер 40) в свободное от работы время сварганили
а) Язык Оберон
б) компилятор
в) операционную систему на Обероне.
Эта система представляла собой рабочее место программиста.
Через несколько лет ученики Вирта вырезали из этой системы редактор и компилятор и создали IDE BlackBox Componen Builder
Клеменс Шиперски написал книгу Beyond OOP
За что его пригласили в Микрософт Ресёч.
Не знаю, работает ли сейчас.
Другой ученик Михаэль Франц — разработал виртуальную машину для Компонентного паскаля и защитил диссер у Вирта.
В википедии написано:

Его докторская диссертация, озаглавленная «Генерация кода на лету: ключ к переносимому программному обеспечению», предлагала сделать программное обеспечение переносимым среди различных целевых компьютерных архитектур путем использования компиляции на лету из сжатая промежуточная структура данных во время загрузки. Двумя годами позже были запущены язык программирования и система Java, которые приняли эту идею как мейнстрим, хотя и использовали термин «своевременная компиляция» вместо термина «компиляция на лету», который использовал Франц.

Только его там называют "американским" ученым, хотя родился он в Гамбурге, а учился в Швейцарии.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[9]: Комплексные числа
От: T4r4sB Россия  
Дата: 03.02.22 20:49
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Знаковые размеры неудобны.

V>В дотнете сильно раздражают.
V>Знаковые индексы тоже не всегда удобны.

Ну-ка, пример приведи.
То, как беззнаковые индексы превращают валидный код в инвалидный, я привёл уже.

V>Тебе уже отвечали тут несколько раз — вектор не имеет данных по отрицательному смещению.


Ичо. Это не значит, что индекс не может участвовать в выражениях, дающих отрицательный результат.
Re[10]: Комплексные числа
От: vdimas Россия  
Дата: 05.02.22 13:46
Оценка:
Здравствуйте, T4r4sB, Вы писали:

TB>То, как беззнаковые индексы превращают валидный код в инвалидный, я привёл уже.


Это глупый программист превращает, бо в стандарте оговорено каким образом знаковые сравниваются с беззнаковыми.


V>>Тебе уже отвечали тут несколько раз — вектор не имеет данных по отрицательному смещению.

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

Еще раз медленно — в случае дополнительного двоичного кода глубоко пофик, вся арифметика сохраняется с точностью до бит.

Ты не там проблему ищешь.
Плясать надо всегда от сценариев.
Где удобны беззнаковые — используем беззнаковые.
Наоборот — наоборот.

Но приводить одни сценарии для "доказательства" чего-то там относительно других — бессмыслица. ))
Re[9]: Комплексные числа
От: vdimas Россия  
Дата: 05.02.22 14:09
Оценка:
Здравствуйте, Privalov, Вы писали:

V>>Меня немного улыбает, что ты и Привалов считаете оттенки "подразумеваемый"/"возможный" и "фактический" противоположными.

P>Загляни в словарь. Фактический — действительный, состоявшийся. Возможный — такой, который может произойти. Разницу объяснять надо?

Мне?
Я вижу, что собеседники увлеклись и не обратили внимания, к чему именно относится прилагательное.

На пальцах:
Вот у нас чёрный ящик, в нём достоверно 3 яблока, но 3-х разных цветов, выбираем одно.
Так что именно здесь виртуальное? ))

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

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

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


V>>Английское "virtual" просто удачно охватывает оба смысла.

V>>В русском "виртуальный" означает, скорее, "надуманный".
V>>Типа как "виртуальные частицы".
P>Нам ближе виртуальные машины.

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


P>А пакет этот в виде перфокарт не существует. Он лежит где-то на другой виртуальной машине с ПДО. Я как-то указываю ридеру, что этот пакет нужно прочитать. Деталей не помню, давно это было. Но ни перфокарт, ни устройства ввода физически не существует. Однако ридер спокойно отрабатывает, задание запускается и работает.


Это и в современных виртуалках так.


P>В C++ то, что называется виртуальной функцией, может существовать физически. И значит, к такой функции термин "виртуальная" неприменим.


Просто термин.
В комплексном числе тоже никаких мнимых частей нет, есть математическая абстракция из пары вещественных чисел.
Отредактировано 15.02.2022 4:09 vdimas . Предыдущая версия . Еще …
Отредактировано 15.02.2022 4:08 vdimas . Предыдущая версия .
Re[11]: Комплексные числа
От: T4r4sB Россия  
Дата: 05.02.22 15:22
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Это глупый программист превращает, бо в стандарте оговорено каким образом знаковые сравниваются с беззнаковыми.


Ты пишешь как джун, который не понимает разницу между "запомнить правила" и "обходить все грабли", и который "я всегда всё контролирую в своём коде, в котором я уверен на 100%". Странно, что ты вообще пишешь на С++, писал бы на С, ведь это же так просто запомнить — у каждого маллока должен быть свой фри!

V>Еще раз медленно — в случае дополнительного двоичного кода глубоко пофик, вся арифметика сохраняется с точностью до бит.


Оператор сравнения по-разному работает, ничё?
Плюс есть новые языки, в которых есть проверка, что при вычитании случится "переполнение вниз".
Ах, да, тебе проверки не нужны.

V>Ты не там проблему ищешь.

V>Плясать надо всегда от сценариев.
V>Где удобны беззнаковые — используем беззнаковые.
V>Наоборот — наоборот.

Логично. Так вот, для индексов и размеров удобны знаковые. Это проверено и об этом даже Страуструп говорит на видосах.
Re[12]: Комплексные числа
От: vdimas Россия  
Дата: 09.02.22 19:24
Оценка:
Здравствуйте, T4r4sB, Вы писали:

V>>Это глупый программист превращает, бо в стандарте оговорено каким образом знаковые сравниваются с беззнаковыми.

TB>Ты пишешь как джун, который не понимает разницу между "запомнить правила" и "обходить все грабли"

Я отвечал на притянутые за уши примеры, бо обходить вектор принято через итераторы.
Re[13]: Комплексные числа
От: T4r4sB Россия  
Дата: 09.02.22 19:33
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Я отвечал на притянутые за уши примеры, бо обходить вектор принято через итераторы.


Это только если тебе вектор нужен только целиком, просто пройтись по элементам в строго заданном порядке — самый банальный сценарий. К сожалению, большинство "программистов" никаких сценариев, кроме базового, никогда не видело. Покажи, как ты итераторами обойдёшь все элементы, кроме последнего?
std::iterator_tools::without_last<std::vector<std::string>::iterator>

? Или как там? Зачем мне помнить всю эту срань, если индексы работали 50 лет?
Я так понимаю, арифметику над индексами тебе делать не приходилось?

И да, я всё ещё жду от тебя примера ситуации, в которой в сишарпе было неудобство со знаковыми индексами.
Re: Комплексные числа
От: student__  
Дата: 10.02.22 09:49
Оценка:
Раньше никаких видосиков не делали. Учили математику на двумерной доске и читали двумерные книги. Это способствовало развитию абстрактного мышления, потому что мозг сам напрягался, пытаясь найти нужное ментальное представление задачи.
Re[14]: Комплексные числа
От: vdimas Россия  
Дата: 10.02.22 12:23
Оценка:
Здравствуйте, T4r4sB, Вы писали:

TB>Покажи, как ты итераторами обойдёшь все элементы, кроме последнего?


По классике примерно так:
    vector<int> vec = { 1, 2, 3 };
    
    for(auto i = vec.begin(), e = vec.end() - 1; i < e; ++i)
        cout << *i << endl;



TB>Или как там?


Сейчас модно через range view, т.е. движение в сторону здравого смысла — отделение алгоритмов обхода коллекции от алгоритмов обработки элементов.


TB>Зачем мне помнить всю эту срань, если индексы работали 50 лет?


Итераторы появились вместе с векторами и сразу же через итераторы с вектором и работали.


TB>Я так понимаю, арифметику над индексами тебе делать не приходилось?


А потом опять будешь жаловаться? ))

Где требуется арифметика над индексами, там вектор обычно подходит плохо.
То размерность коллекции в единицы элементов, то требуется вставка/удаление из произвольных индексов.
Для обоих случаев есть более подходящие коллекции.


TB>И да, я всё ещё жду от тебя примера ситуации, в которой в сишарпе было неудобство со знаковыми индексами.


Арифметика сравнений проще в беззнаковом варианте.
Re[15]: Комплексные числа
От: T4r4sB Россия  
Дата: 10.02.22 12:50
Оценка:
Здравствуйте, vdimas, Вы писали:

V>
V>    vector<int> vec = { 1, 2, 3 };
    
V>    for(auto i = vec.begin(), e = vec.end() - 1; i < e; ++i)
V>        cout << *i << endl;
V>


Кажется, у нас тут UB) Причём такое же, как в цикле на беззнаковых индексах, оно тут на пустом векторе.
Крайне хреново, когда арифметика ограничивает тебя убогим диапазоном без запаса с обеих сторон, не так ли?
Кстати иногда таки нужен индекс внутри цикла. Само значение.

V>Итераторы появились вместе с векторами и сразу же через итераторы с вектором и работали.


Вектор это абстракция над массивами, массивы существовали задолго до векторов, и работали с ними через индексы.
Ну и до введения auto я чёто не помню любителей расписывать
(for std::vector<std::hash_table<std::string, std::vector<std::string> > >::iterator it = a.begin(); it < a.end(); ++it)


V>Где требуется арифметика над индексами, там вектор обычно подходит плохо.

V>То размерность коллекции в единицы элементов, то требуется вставка/удаление из произвольных индексов.
V>Для обоих случаев есть более подходящие коллекции.

Например?

V>Арифметика сравнений проще в беззнаковом варианте.


a<b? Вроде пишется одинаково...
Отредактировано 10.02.2022 12:53 T4r4sB . Предыдущая версия .
Re[16]: Комплексные числа
От: vdimas Россия  
Дата: 12.02.22 22:56
Оценка:
Здравствуйте, T4r4sB, Вы писали:

TB>Вектор это абстракция над массивами


Несвязанный набор слов.

Механизмом абстрагирования от типа контейнера является концепция итератора.
Адаптером конкретно массива под эту концепцию является тип std:array.

Помимо предоставление абстракции итератора, типы навроде std::array или новомодные ranges обладают еще одним важным преимуществом — не теряют информацию о своём размере при передаче в кач-ве параметров. Встроенные массивы же выхолащиваются до указателя (если только ф-ия не шаблонная, в которой размерность массива является параметром шаблона).


TB>Ну и до введения auto я чёто не помню любителей расписывать

TB>
TB>(for std::vector<std::hash_table<std::string, std::vector<std::string> > >::iterator it = a.begin(); it < a.end(); ++it)
TB>


А их и не было.
В реальных проектах оно выглядело примерно так:
(for some_container_t::iterator it = a.begin(); it < a.end(); ++it)

Не знал про typedef?


V>>Где требуется арифметика над индексами, там вектор обычно подходит плохо.

V>>То размерность коллекции в единицы элементов, то требуется вставка/удаление из произвольных индексов.
V>>Для обоих случаев есть более подходящие коллекции.
TB>Например?

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


V>>Арифметика сравнений проще в беззнаковом варианте.

TB>a<b? Вроде пишется одинаково...

В беззнаковом варианте на одно сравнение меньше.
Re[18]: Комплексные числа
От: vdimas Россия  
Дата: 13.02.22 21:00
Оценка:
Здравствуйте, T4r4sB, Вы писали:

V>>Несвязанный набор слов.

TB>Связанный, связанный.

Курить "абстрагирование".


V>>Механизмом абстрагирования от типа контейнера является концепция итератора.

TB>Только никто не пишет алгоритм, который универсален для векторов, листов и хеш-таблиц.

Этих алгоритмов и в стандартной библиотеке уже полно.
В Бусте еще больше.
И их именно так и пишут.


TB>Это не единственные примеры задач, где нужно обращение по индексу, причём индекс вычисляется.


Я на это уже отвечал — operator[] у итератора вектора, строки и прочих произвольного доступа имеет знаковый индекс.
И сдвиги самого итератора произвольного доступа так же дешевы, как оперирование указателями.
Вычисляй хоть обвычисляйся.

И сколько я не замерял — вычислять сразу указатель/итератор в цикле эффективнее, чем вычислять в том же цикле индекс, а потом по нему обращаться.

И да, оперирование итераторами более дешевое, чем ссылкой на std::vector<>, std::string и т.д. в случае передачи оных по ссылке.
Ты же видел сигнатуры стандартных алгоримов или алгоритмов Буста?
Такие сигнатуры не только абстрактны, но еще и эффективны, это ж плюсы, а не жабка какая-нить.

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

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


V>>В беззнаковом варианте на одно сравнение меньше.

TB>"a<b" пишется одинаково, и в асме число сравнений одинаковое.
TB>А если ты про (a>=0 && a<b) ну это твои проблемы, что ты не смог это выделить в функцию и написать это так, чтоб это скомпилилось в одно сравнение...

Оно коряво.
Сравнить:
if(a < b)

и
if(MyCoolComparer.IsLess(a, b))


Плюс для шарпа надо расписать комбинаторику сочетаний целочисленных типов в сигнатурах в конкретных типах.
Re[19]: Комплексные числа
От: T4r4sB Россия  
Дата: 13.02.22 22:14
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Этих алгоритмов и в стандартной библиотеке уже полно.

V>В Бусте еще больше.
V>И их именно так и пишут.

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

V>Я на это уже отвечал — operator[] у итератора вектора, строки и прочих произвольного доступа имеет знаковый индекс.


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

V>Оно коряво.

V>Сравнить:
V>
V>if(a < b)
V>

V>и
V>
V>if(MyCoolComparer.IsLess(a, b))
V>


Да, примерно так, только символов можно поменьше. Типа isBetween(a, 0, b);
Не вижу проблемы.

V>Плюс для шарпа надо расписать комбинаторику сочетаний целочисленных типов в сигнатурах в конкретных типах.


Не понял, поясни
Re[20]: Комплексные числа
От: vdimas Россия  
Дата: 14.02.22 14:07
Оценка:
Здравствуйте, T4r4sB, Вы писали:

TB>Никто не применяет [] к итератору, это тупо опасно, легко выскочить за диапазон.


На это я уже отвечал:
https://en.cppreference.com/w/cpp/ranges/view_interface/operator_at

Просто взгляни внимательней на описание.



TB>Да, примерно так, только символов можно поменьше. Типа isBetween(a, 0, b);


Пока что использование статических классов как неймспейсов особо не прижилось, кроме известных стандартных классов, типа Console.
И это правильно, ИМХО, т.к. из-за легаси прошлых лет не сложилась система абстрактных/шаблонных свободных ф-ий и не устоялось их "стандартное" именование, как в плюсах.
Во многом из-за того, что вычисления/сравнение и т.д. над типами-числами нельзя было описывать естественным образом через генерики.

Теперь стало можно, но это вот только что.
Теперь должно пройти много лет, чтобы новые практики стали мейнстримом, обрастя по дороге новыми соглашениями и прочими правилами хорошего тона.

Ну и, реализация для случая 0, b может быть самой дешевой, т.е. надо как-то иначе называть, типа MyCoolComparer.CheckIndex(index, size);


V>>Плюс для шарпа надо расписать комбинаторику сочетаний целочисленных типов в сигнатурах в конкретных типах.

TB>Не понял, поясни

Речь идёт о сравнении потенциально разных типов данных.
Соответственно, нужны сочетания сигнатур для знаковых/беззнаковых и для разной ширины бит, т.е. потребуется написать несколько перезагрузок ф-ии CheckIndex.

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

Это то, почему построить беззнаковую экосистему поверх навязанной знаковой гемморойно и вряд ли имеет смысл.
Зато если самому с 0-ля разработать под себя контейнеры, то всё выглядит вполне стройно.
Потому что вот так можно:
int[] arr = {1, 2, 3};
ulong i = 2;    // uint i
Console.WriteLine (arr[i]);


А тут ошибка компиляции, требуется явное приведение к знаковому:
List<int> arr = new List<int> () {1, 2, 3};
ulong i = 2;    // uint i
Console.WriteLine (arr[i]);


Понятно, что все приведенные контра относительно слабы и пахнут разве что небольшим геммороем, но зачем это для случая, скажем, когда я использую самописные контейнеры, выполненные как value-type, и оперирую в операциях чаще спанами, чем GC-ссылками на классы-контейнеры?
Плюс сам шарп представляет из себя такую экосистему, где можно и нужно избегать "синтаксического оверхеда" и прочего лишнего мусора/телодвижений в коде, иначе зачем он вообще? ))

Сегодня шарп даёт много для этого даже для случая расписывания собственной экосистемы эффективных контейнеров с 0-ля.
Например, даже если value-type контейнер необходимо передавать по ссылке, то последние версии шарпа и тут помогли:
void SomeOperation<T>(in vector<T> vec)


Затем при вызове указывать in не обязательно, в отличие от ref.
На всяк случай in означает read-only ссылку и, соответственно, я могу вызывать только readonly-методы контейнера.
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-8.0/readonly-instance-members

Что тоже привносит хоть какую-то строгость в код — я могу распространять по цепочке вызовов константность ссылочных аргументов, типа как в С++.
А необходимость при вызове модифицирующих ф-ий подставлять ref я вообще приветствую — в плюсах мне чего-то подобного не хватает.
Такие модифицирующие ф-ии редки и должны обращать на себя внимание программиста.

Одно пока мест неудобно — для value-типов нельзя определить конструктор копирования, поэтому в коде надо следить, чтобы ненароком не скопировать такой контейнер в обычную переменную. Хотя, и в плюсах копирование контейнера чаще указывает на ошибку, но в плюсах хоть можно наследоваться/агрегировать и в своём типе уже запретить оператор и конструктор копирования... Но зато теперь как в плюсах можно копировать ссылку на свои value-типы, сверху в пол-тыка пишется маленькая обвязка для реализации std.move (оно именно так у меня и называется), в общем, на данном этапе развития шарпа жить уже хоть как-то можно. ))
Отредактировано 15.02.2022 4:03 vdimas . Предыдущая версия . Еще …
Отредактировано 15.02.2022 4:01 vdimas . Предыдущая версия .
Отредактировано 14.02.2022 14:12 vdimas . Предыдущая версия .
Отредактировано 14.02.2022 14:10 vdimas . Предыдущая версия .
Re[4]: Комплексные числа
От: удусекшл  
Дата: 14.02.22 14:13
Оценка:
Здравствуйте, T4r4sB, Вы писали:

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


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


Кто о чем, а вшивыйT4r4sB про индексы в C++
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.