четвер, 27 лютого 2020 р.

Entity Component System (ECS)

Все мы неоднократно слышали о чудесах объектно-ориентированного программирования (ООП), позволяющих контролировать сложность программ, которые мы разрабатываем. Объект реального мира сопоставляется объекту какого-либо класса в коде. Вспомним, к примеру, хрестоматийный пример с Animal, Dog, Cat и т.д.

Но оказывается, игровая индустрия уже давно ушла от ООП в сторону Data Oriented Design (DOD), дизайна программ основанного на данных. Вот главные причины:

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

Эти и многие другие проблемы ООП в играх рассматривает Кэтрин Вэст (Catherine West) в своем выступлении Using Rust For Game Development на RustConf 2018.

Кэтрин, как апологет языка Rust, показывает, как использование устаревшего антипаттерна SuperObject в этом языке ведет к бесконечной борьбе с borrow-checker'ом. "Сдавшись", Кэтрин постепенно начинает логично модифицировать архитектуру игры так, что в итоге приходит к Entity Component System (ECS), пожалуй, самой знаменитой реализации концепции Data Oriented/Driven Design, в которую Rust вписывается чуть более, чем полностью. В результате получается гибкая и более производительная система сущностей и компонентов, которые могут быть без труда сериализованы на диск или в сеть.

Кстати, есть более длинная, но и более интересная версия доклада в виде поста с кодом в блоге Кэтрин

неділя, 15 вересня 2019 р.

Что нового в C++ 20 и какие изменения ожидают язык в будущем?

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

После C++ 17 это будет шестая редакция стандарта. Программирование на C++ включает в себя множество возможностей, от простейшего «С с классами» до написания кода наивысшего уровня.

О том, что нового ждёт разработчиков на C++, можно почитать в оригинале статьи.

C++20 IS FEATURE COMPLETE; HERE’S WHAT CHANGES ARE COMING

пʼятниця, 12 жовтня 2018 р.

REST is not RPC

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

понеділок, 10 вересня 2018 р.

Browsh

Нашел интересную штуку: текстовый браузер, который может работать в терминале и поддерживает HTML5, CSS3, JS, видео и WebGL.

неділя, 12 серпня 2018 р.

Книга по x86 ассемблеру

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

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

Неплохое введение по ассемблеру можно найти в книге А. Столярова "Программирование на языке ассемблера NASM"

Книга бесплатная. Рекомендую, если вы совсем "чайник".

пʼятниця, 4 травня 2018 р.

Git в качестве создателя отчетов

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

git log --author="author_name" --after="1 week ago" --oneline

субота, 10 березня 2018 р.

Мягкое введение в машинное обучение

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

HyperComments for Blogger

comments powered by HyperComments