ArtReal's readme
personal unreality:  точка пушистости

Движкостроение и оптимизация

23.03.08 12:56 ◇ keywords: xblog

Есть такая хорошая штука — функционально-стоимостный анализ (ФСА). Позволяет оптимизировать различные штуковины. Весьма эффективно оптимизировать.

Так вот, в движкостроении есть два подхода: универсальный и специализированный.
Универсальный движок позволяет реализовать на своей базе почти любую задачу/функциональность. Плюс, позволяет подключать дополнительные плагины, реализующие ту функциональность, которая изначально даже не была заложена в движок. Но, платой за универсальность является большой объем движка, сильная прожорливость в отношении ресурсов и, как следствие, медлительность.
В противоположность универсальному, специализированный движок «заточен» под вполне конкретные задачи, монолитен и быстр. Зато расширение функциональности реализуется только вставками нужного кода в код движка — а это для рядового потребителя (по понятным причинам) затруднительно.

Золотая середина? Ну, она как бы есть, но. Этот вариант оказывается самым худшим вариантом — мало того, что функциональность куцая, так еще и тормозит. [самое интересное, что такой вариант все-таки пользуется популярностью, 80% движков — это попытка найти золотую середину]

И вот тут мы возвращается к ФСА. Идея вот в чем: берем универсальный движок, настраиваем/наращиваем функциональность до нужной — а потом оптимизируем его в специализированный (быстрый, монолитный). Правда, при попытке добавить (или изменить) функциональность придется оптимизировать заново… но не каждый же день это потребуется.

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

Но это будет потом, а пока остается разрабатывать архитектуру специализированного движка так, чтобы потом было удобно вставлять «дополнительный» код.

 [ link ] +1