Не совсем эквивалент... Наверное, если запретить базовым классам в плюсах иметь данные, то будет похоже. А вообще, согласен. Наследование нужно только тогда, когда оно, действительно, упрощает жизнь именно в контексте конкретной задачи. Хорошая задача на наследование: стоит ли квадрат наследовать от прямоугольника. С одной стороны, квадрат, действительно является прямоугольником, и, казалось бы, что может пойти не так?) Но, если в нашем контексте мы ожидаем, что для абстракции "прямоугольник", увеличение одной стороны пропорционально увеличивает площадь, то для квадрата это не сработает. В данном контексте нарушится LSP. Поэтому не нужно слепо руководствоваться внутренними ощущениями или сторонними фактами, продумывая архитектуру. Надо смотреть насколько то или иное решение стыкуется с конкретной задачей.
Насчёт кроссплатформенной сборки - не пробовал. Цель была скорее в том, чтобы показать, что Rust не так страшен, как его малюют и на нём легко и приятно писать мини-игры. Если найду время - попробую собрать и запустить в WASM. Отпишусь в комментарии.
В процитированной строке время учитывается. Для вычисления позиции скорость умножается на время (elapsed_time).
Для отладки шейдеров существуют различные инструменты. Одни из них созданы под конкретного производителя GPU: NVIDIA Nsight, Radeon Developer Tool Suite. Другие универсальны: RenderDoc.
Про возможность просмотра значений локальных переменных шейдеров я не слышал. Возможно, такое доступно в каких-нибудь эмуляторах. Обычно, отладка производится на уровне просмотра входных и выходных данных шейдера.
Как верно отмечено, шейдер запускается одновременно на сотнях-тысячах процессоров GPU. Это работает по принципу SIMD.
Статья попалась в поиске по слову «rust».
Прочитав название, решил, что 6 поводов перейти на go — стандартные рекламные лозунги. А причина этого не делать — существование Rust.
С первым был близок. Со вторым промахнулся)
Добавлю в ближайшее время.
В статье я стараюсь объяснить, зачем мы инкапсулируем данные. Возможно, действительно, стоило это подкрепить примером.
Переключение между реализациями (полиморфизм) - тема слудующей статьи. Эта и так получилась довольно объёмной.
Готово. Теперь есть короткое описание того, как, в данном случае, используется механизм обработки ошибок в Rust.
Да, я планировал, если статья окажется полезной, продолжить в том же духе. Возможно, развивая далее приложение для заметок.
Действительно. Я даже продумал текст на эту тему, а добавить забыл(
Добавлю сейчас.
Не совсем эквивалент... Наверное, если запретить базовым классам в плюсах иметь данные, то будет похоже.
А вообще, согласен. Наследование нужно только тогда, когда оно, действительно, упрощает жизнь именно в контексте конкретной задачи. Хорошая задача на наследование: стоит ли квадрат наследовать от прямоугольника.
С одной стороны, квадрат, действительно является прямоугольником, и, казалось бы, что может пойти не так?) Но, если в нашем контексте мы ожидаем, что для абстракции "прямоугольник", увеличение одной стороны пропорционально увеличивает площадь, то для квадрата это не сработает. В данном контексте нарушится LSP. Поэтому не нужно слепо руководствоваться внутренними ощущениями или сторонними фактами, продумывая архитектуру. Надо смотреть насколько то или иное решение стыкуется с конкретной задачей.
Хм... Действительно. Спасибо за замечание. Поправлю.
Насчёт кроссплатформенной сборки - не пробовал. Цель была скорее в том, чтобы показать, что Rust не так страшен, как его малюют и на нём легко и приятно писать мини-игры. Если найду время - попробую собрать и запустить в WASM. Отпишусь в комментарии.
В процитированной строке время учитывается. Для вычисления позиции скорость умножается на время (
elapsed_time
).Для отладки шейдеров существуют различные инструменты. Одни из них созданы под конкретного производителя GPU: NVIDIA Nsight, Radeon Developer Tool Suite. Другие универсальны: RenderDoc.
Про возможность просмотра значений локальных переменных шейдеров я не слышал. Возможно, такое доступно в каких-нибудь эмуляторах. Обычно, отладка производится на уровне просмотра входных и выходных данных шейдера.
Как верно отмечено, шейдер запускается одновременно на сотнях-тысячах процессоров GPU. Это работает по принципу SIMD.
Спасибо за положительный отзыв о содержании статьи. Что касается формы... Приложу дополнительные усилия для проверки.
Прочитав название, решил, что 6 поводов перейти на go — стандартные рекламные лозунги. А причина этого не делать — существование Rust.
С первым был близок. Со вторым промахнулся)