Pull to refresh
108
52.6
Send message

Кому интересно, Лента Мёбиуса, составленная из 17 бутылок Кляйна:
https://www.youtube.com/watch?v=f-Pe1ZMJEXk

В современном C++ советуют использовать везде где можно string_view вместо const char*. Но и с ним возможен прострел ноги.

void Foo(std::string_view s)
{
  std::printf("s is %s", s.data());
}

Автор, приводи ассемблерный листинг с -O2. Так гораздо более понятно - всё лишнее удалено.

_Z5div10h:
        mov     edx, -51
        mov     eax, edi
        mul     dl
        shr     ax, 11
        ret

Автор всё же несколько лукавит. Box shadow используются только для отрисовки, а трассировка лучей - просто код на JS. Хотя и такое весьма забавно.

Кстати, это ещё и хороший пример того, насколько JS отстаёт в производительности от нативного кода. Типичные примеры трассировки лучей в сцене с небольшим количеством примитивов работают заметно шустрее, чем в этом демо. А уж если заиспользовать GPU (как на shadertoy), то скорость будет ещё на порядки выше.

10 минут назад в своём проекте на основе кодовой базы clang менял один файлик. Перекомпиляция заняла считанные секунды.
Компиляторы как раз хорошо оптимизируются в сторону сокращения цикла изменил/скомпилировал/запустил - как раз для убыстрения отладки. Ну если это не Rust конечно, где компиляция весьма медленная (хотя и там с этим борются).

Касательно компиляции условий в нативный код: можно ведь и вручную для целей отладки вставить код проверки и поставить точку остановки внутрь if(condition){}. Плюсы - это работает быстро и даже с самым простым отладчиком, который не умеет в сложные выражения. Минусы - это не работает, когда необходимая проверка зависит от конкретных условий выполнения, например, от адреса какой-то переменной.

Без всяких DosBOX он может работать только в 32-битной Windows. В 64-битных уже нет, т. к. оттуда убрали NTVDM, который по сути был прослойкой совместимости для Dos.

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

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

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

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

        char randomChar {
            std::time ts;
            std::getCurrentTime(&ts);
            if(std::randNext == 0) std::randNext = ts.mseconds;
            ts.mseconds = ts.mseconds * 1103515245 + 12345 * std::randNext;
            std::randNext = std::randNext * 103515245 + 12345;
        } => (cast(char*)ts.&mseconds)[0]

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

Вот чтобы избежать такой проблемы был изобретён подход ECS. В нём компоненты разнородных объектов хранятся последовательно, что улучшает кеш-локальность при выполнении алгоритмов с перебором определённых компонентов.

На счёт смешанных вычислений float/double: а зачем вообще нужен double в играх? Его точность для них как правило избыточна. Так что лучше его сознательно нигде не применять, а случаи вида *= 2.0 отлавливать предупреждениями компилятора с рассматриванием предупреждений как ошибок.

Проблема в том, что сложилась культура безответственного менеджмента. Им всё сходит с рук, и даже в случае провала они получают золотой парашют. Штрафы - один из возможных путей борьбы с этой культурой безответственности.

Чтобы не было проблем у непомерным увеличением затрат на разработку, можно ввести какую-нибудь сертификацию процессов. Тогда если сертификат был, но что-то всё же случилось, штрафов не последует.

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

На счёт тригонометрических функций: видел в свежих версиях clang оптимизацию, когда они вычисляются во время компиляции, если аргументы - constexpr значения.

Главное, чтобы к моменту спуска МКС с неё успели снять несчастных космонавтов, что прилетели туда на корабле Starliner и уже больше месяца как не могут вернуться.

А есть информация, какие там конкретно системы стоят на кораблях? Какой там функционал?
Насколько он критичен для боеготовности?

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

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

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

А действительно ли есть проблема с удержанием состояния квантового компьютера от внешних помех на долгое время? Разве все вычисления не проводятся за гораздо более короткое время, чем ожидаемая частота прилёта внешних частиц? Если это так, то можно запустить вычисление и считать уже обычной схемой его результат, а для надёжности - несколько раз повторить и выбрать результат, который сходится.

Я правильно понимаю, что у них в критически-важных конструкциях нашлись дефекты и их придётся изготавливать заново? Если да, то спрашивается, как так? Понятно же, что элементы очень рискованные, почему сразу тогда не было запасных деталей? "Эффективные менеджеры" опять сэкономили? Чисто экономически изготовить все элементы в двух экземплярах вышло бы не так уж дорого, ибо там основные затраты на проектирование, а не изготовление.

Это ещё что, видел использование HashTable для хранения всего двух значений - баланса двух игровых валют в одной мобильной игре.

1
23 ...

Information

Rating
105-th
Registered
Activity