Здравствуйте, Went, Вы писали:
W>Да, со списками как раз все просто. Но, вот, представим себе пулю, которая каждый кадр смещается на 1 мм, и таких кадров 1000 в секунду. Каждый кадр создавать новую пулю?
Если кому-то хватило ума засунуть координаты в пулю, то, конечно, в рамках функционального подхода придется клонировать пулю, что бы поменять координату. Но в рендеринге обычно ровно наоборот. Пуля/елка одна, а координат миллион. W> Конечно, тут можно сказать, что положение пули не переменная, а иммутабельная функция от времени, но это же упрощенный случай. В реальном мире у каждого объекта десятки быстро изменяющихся свойств и влияют на эти свойства десятки других быстро изменяющихся свойств, и записать поведение, например, 1000 сталкивающихся в колбе атомов газа в виде функции уже нереально. Утопия какая-то, по-моему.
Свойства "объекта" меняются не просто так, а по законам, которые можно записывать функциями. Имея такую запись, нет нужды обновлять свойства "объекта" каждый момент времени, т.к. в любой из них его свойства можно вычислить. Повторюсь, если не запихивать координату в пулю/атом, то может оказаться что не нужно ее быстро-быстро менять.
Однако, моделирование столкновений частиц с помощью ООП (да и ФП, что говорить) — то еще садо-мазо и оверхед. Такие вещи делают на Си/Фортранах, объекты там обычно избыточны.