Pull to refresh
42
0

User

Send message
движок к игре Quantum Break был написан на D

Не совсем: движок игры написан на C++, а D использовался вместо скриптового языка для быстрого прототипирования: код на D компилировался в DLL, и можно было вносить изменения, даже не перезапуская игру.

Но честно говоря, они сделали большую бяку, когда задепрекейтили c-style arrays (

Я когда свой небольшой проект портировал, то просто прошёлся по объявлениям массивов регвыром.


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

А в D целые представляются всегда как дополнение до двух?

Уолтер не видит смысла поддерживать что-то другое.

D гарантирует, что если вы скопируете в него сишный код, то он либо будет работать точно так же, как и в C, либо не скомпилируется вообще. Так что если вы оставите char *name,*text;, ничего плохого не случится: компилятор просто укажет вам на ошибку.

Классы с полиморфизмом есть в полноценном D. В Better C только структуры. Они не поддерживают наследование, но могут содержать методы, конструкторы и деструкторы. Есть любопытная техника, которая позволяет реализовать полиморфизм без наследования: alias this.


struct A {
    int x = 42;
}
struct B {
    A a;
    alias a this; // Теперь B позволяет обращаться к членам A как к своим собственным.
}
B b;
assert(b.x == 42);

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

В D, как я понял, если не делаешь инициализацию сам, то структура сама инициализируется нулями

Не нулями. Агрегатные типы инициализируются значениями по умолчанию для их полей — для double, например, это NaN, а не ноль. Можно указывать свои значения по умолчанию:


struct S { int x = 42; }
S s;
assert(s.x == 42);

При этом любую инициализацию всегда можно отключить:


struct S { int x = 42; }
S s = void;
// Теперь s.x равно бог весть чему.

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


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

Компилятор умеет оптимизировать лишние инициализации.

https://dlang.org/spec/expression.html#equality_expressions


У типов с плавающей точкой +0.0 И -0.0 считаются равными, NaN и NaN считаются неравными. Равенство структур проверяется по равенству всех членов, если не перегружен оператор сравнения.

Это просто перевод.

По умолчанию все проверки убираются из релизной версии кода, кроме функций, помеченных атрибутом @safe. Но также есть опция компилятора -boundscheck, которая позволяет настроить желаемое поведение.

Это не лень каких-то разработчиков, а требования рынка. Время, которое вы тратите на ручное управление памятью — это время, которое вы могли потратить на разработку новых фич. Поэтому и имеем то, что имеем.


С другой стороны, так ли это плохо? Мы можем сколько угодно смеяться над программами на Электроне, но я боюсь, что мире, в котором был бы только C — это мир, в котором бы просто не было многих программ, которыми мы каждый день пользуемся.


И потом, если для вас превыше всего производительность, то для кого-то на первом месте безопасность и корректность кода. И для них C — корень всех зол, а языки, выполняющиеся в виртуальной машине, — послание с небес.

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

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


For example, all fun games share the quality that they change who the player is as the game progresses —that is, by the time you are done, you are a different person than you were when you started, even though that “difference” may just be the fact that you are better at pressing a particular combination of buttons

Сам игрок меняется, а не персонаж!
Большое спасибо, теперь я знаю, что книги в переводе «Питера» покупать ни в коем случае нельзя.

Оперу он уже таким образом убил, сейчас убивает IE, а потом настанет черёд и Файрфокса.

их проект вдохновил другие компании на разработку браузеров: Opera, Safari, Edge, Brave.

Ничего, что Опера старше Огнелиса на восемь лет?

«Идеальный читатель „Поминок по Финнегану“ в конечном счете развлекается не меньше, чем читатель Каролины Инверницио. Ровно столько же. Но по-своему». — Умберто Эко, Заметки на полях «Имени розы»

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

Все достижения экспериментальной психологии поставлены под сомнение недавно вскрывшимся кризисом воспроизводимости. Эффект Зейгарник, как и многие другие «открытия», не был толком подтверждён. Что не мешает различным продавцам «секретов успеха» о нём рассказывать.

И с монохромным сглаживанием тогда уж.

Почему-то люди отказываются понять, в чём на самом деле состоит причина пробок. Причина в том, что легковой автомобиль — ужасно неэффективное средство передвижения. Никакой автопилот этого не изменит: сама идея использовать огромную железную коробку для перемещения одной человеческой тушки ущербна.
Space required to transport 60 people by car, bas, and bicycle

Спасибо, для меня это открытие, что доторрентный файлообмен не только всё ещё существует, но и может выручить, когда торрент бессилен.
У меня несколько лет висела торрент-раздача никому не нужной игры для PS2, скачанная на 99,9%. Не хватало всего одного фрагмента в 1 МБ в одной из частей многотомного архива, и ни один пир с полной раздачей так и не объявился. Попробую, что ли, воспользоваться дедовскими методами, хотя бы из спортивного интереса.


Скрытый текст
Буквально на днях захотелось пересмотреть «Дарью», прочитал про Restoration Project, откопал раздачу на каком-то агрегатора и внезапно в графе «автор раздачи» обнаружил знакомый ник.
P.P.S. Еще один специалист по мобильной ИБ, Justin Case, сказал, что он знает уязвимость, которой подвержены все современные процессоры Qualcomm, но раскрывать её детали он не будет.

Видимо, бережёт лазейку на всякий случай.

Information

Rating
Does not participate
Registered
Activity