LINUX.ORG.RU

Приведите доводы использовать выходные параметры у функций

 , , чистый код


0

5

Серьезно. В той же OpenCV ехал выходной параметр через выходной параметр. В итоге: непонятно, что же именно функция возвращает, надо объявлять все «возвращаемые значения» заранее. Есть риск при этом ошибиться с типом, ибо функция при компиляции может молча проглотить предполагаемый тип, а уже на этапе выполнения сказать «Нет, хозяин, не могу». Впрочем, такой подход еще много где видел. Зачем и почему?

Ответ на: комментарий от qulinxao3

последовательность бит

это счетное множество (конечное - на существующих цифровых/дискретных вычислительных машинах).

R, который континуум, нельзя посчитать.

А мощность суммы/произведения конечных множеств всегда больше исходных множеств (за некоторыми исключениями). Придется сторонними каналами передавать недостающие элементы.

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

anonymous
()
Ответ на: комментарий от anonymous

зависит от протокола -

битовые могут быть именами трансцендентых

опят же битовое может быть ключём к внешнему хранилищу спутаных точек

квантовые системы не отрицают цвм :)

qulinxao3 ★★
()
Ответ на: комментарий от qulinxao3

битовые могут быть именами трансцендентых

Это отображение. Артефакты вылезут. Равенства не будет. Будет только приближение. Хорошо, если можно будет хоть ка-то оценить степень приближения.

anonymous
()
Ответ на: комментарий от anonymous

Колыбель для кошки

.

ключ(символ) не обязательно value

достаточно в рецепте использовать сущность по ключу - всё как всегда

цвм круты ибо дошли до 4Ггц - ща(ужо как лет 30 всё более ширше) широкобазят системы с распределёнными параметрами

не факт что квантовые вычисления вообще реальны - но если реальны ими уже пользуются :_)

qulinxao3 ★★
()
Ответ на: комментарий от qulinxao3

Уродливая Вселенная. Как поиски красоты заводят …

Не читал, но …

Красота - это артефакт деятельности ЦНС человека. Вселенная не человек. Как человек относится к нечеловекам (чужим (человекам))? Правильно, или уничтожает (срывает красивый цветок, который засохнет и станет некрасивым), или избегает.

anonymous
()
Ответ на: комментарий от AntonI

Вы хотите что бы я вам сейчас здесь в одном сообщении озвучил стандарты разработки HPC кодов и аргументацию почему эти стандарты именно такие?!

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

Kroz ★★★★★
()
Ответ на: комментарий от Kroz

В HPC первые две буквы это High Performance. Хотя нынешняя реализация исключений конечно ушла далеко вперёд, тем не менее специалисты утверждают что поддержка исключений затрудняет оптимизацию кода и рекомендуют везде где возможно втыкать noexecpt

Кроме того по дизайну исключения к нам не очень вписываются - если где то что то пошло не так обычно выводится стек и вызывается abort

AntonI ★★★★★
()
Ответ на: комментарий от AntonI

Втыкать везде noexcept?! А вы в курсе, что это может привести к потере скорости.

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

С другой стороны, чтобы нормально, т.е. без глупого проседания скорости работала семантика move, нужен noexcept для вызова конструкторов перемещения. Здесь noexcept крайне желателен, иначе при включенных исключениях получим дополнительное копирование объектов перед вызовом таких конструкторов. Ох, уж этот бедный конструктор для std::map!

После этого, конечно, хочется взвыть, повесить портрет любимого Страуструпа на кольцо для игры в darts, или просто перейти программировать на rust…

anonymous
()
Ответ на: комментарий от LongLiveUbuntu

pair, tuple… а через пару месяцев вспоминай что оно возвращает по сигнатуре int,int,bool,SomeType,int, да даже просто int,int. Удел pair и tuple пожалуй только метапрограммирование на шаблонах. В остальных случаях, код чаще становится write-only.

hatred ★★★
()
Ответ на: комментарий от LongLiveUbuntu

Кстати, по предметной области, а откуда берутся коэффициенты типа cameraMatrix и distCoeffs? А то есть картинка, на которой есть искажения от линзы, хотелось бы научиться убирать оные автоматически. Думаю, если запросить, то будет информация и по параметрам линзы/камеры, расстоянию фото, но хз, что вообще спрашивать)

hatred ★★★
()
Ответ на: комментарий от hatred

Смотри, есть такая методика: берешь шахматную доску, черно-белую, и фотографируешь с разных сторон. Сверху, снизу, с боков, прямо, не менее 12 снимков. Желательно и с разной дистанции. Потом эти снимки читаешь и подсовываешь по очереди функции findChessBoardCorners. Там очень важно посчитать количество внутренних клеток доски, иначе функция не сработает.

LongLiveUbuntu ★★★★★
() автор топика
Ответ на: комментарий от hatred

Ну и? У тебя по факту выходной параметр по указателю, а в коде выглядит как будто это возвращаемое значение. Очевидная попытка запутать программиста, который будет это читать. В Си такие подставы не принято делать, это только для С++ норма.

firkax ★★★★★
()
Ответ на: комментарий от firkax

C это так же делает как и C++.

И где там указатель? Все так же, как если бы просто структуру на стеке определил.

hatred ★★★
()
Последнее исправление: hatred (всего исправлений: 1)
Ответ на: комментарий от LongLiveUbuntu

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

Вроде отработало на ура, тьфу, тьфу, тьфу.

hatred ★★★
()
Последнее исправление: hatred (всего исправлений: 1)
Ответ на: комментарий от hatred

Да, он это делает так же, но если в идеологию С++ это вписывается, то в идеологию Си - не очень.

Все так же, как если бы просто структуру на стеке определил.

Да нет. https://godbolt.org/z/h3E56djxj

В первом аргументе (EDI) передаётся указатель на место куда записывать return value, во втором (ESI) - формальный первый аргумент.

firkax ★★★★★
()