![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Обсуждаю статью
voidbent-а (он же Вова Фролов) "General policy pattern".
Она относится к class metaprogramming, на основе C++.
Идея в том, чтобы в некоей библиотеке сложить все классы compile-time policy в один и какие выгоды это даёт.
Спор в комментах.
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
Она относится к class metaprogramming, на основе C++.
Идея в том, чтобы в некоей библиотеке сложить все классы compile-time policy в один и какие выгоды это даёт.
Спор в комментах.
Tags:
(no subject)
16/5/06 03:23 (UTC)Условное наклонение - это слабый аргумент.
Я не понял, к чему это?
--
void
(no subject)
16/5/06 03:24 (UTC)Я не припоминаю случаев, когда бы у меня было более двух классов-полиси на класс.
Если исходить из этого аргумента, то это очень, ну очень сильно сужает область применимости идеи.
И Бог с ним, будет надо - укажу дефолтный полиси явно.
(no subject)
16/5/06 03:51 (UTC)И потом автор библиотеки не сможет поменять какой из аллокаторов например считать дефалтовым.
Это первая шутка в песне.
16/5/06 04:02 (UTC)Но это проблема настолько редкая, что ею можно пренебречь. И решать её быстрым способом - например, написал в release notes "а теперь используйте пожалуйста такой-то аллокатор". Или банальным #ifdef.
(no subject)
16/5/06 04:41 (UTC)Эта проблема редкая и ей можно принебречь только тогда когда полиси у нас мало. Например всего одна как в stl-е. Александреску обосновывает то что Policy - это хорошо, потому что мы не хардкодим решения, а ГП ориентированн на то что бы как можно больше решений не хардкодить т.е. вводить как можно больше полиси.
Поэтому это проблема не редкая в контексте ГП.
---
void
(no subject)
29/10/06 06:45 (UTC)(no subject)
30/10/06 07:10 (UTC)(no subject)
16/5/06 03:27 (UTC)> Я не понял к чему это?
Условное наклонение - это слово "если". Покажите мне пример, в котором реально нужно добавлять к 10 полисям 11-ю.
(no subject)
16/5/06 03:28 (UTC)Потому что сложность библиотеки с каждой новой полиси растёт экспоненциально. Даже Александреску нигде больше 4-х полиси не использует. А в случае с ГП мы можем все аспекты библиотеки смело выносить в полиси.
--
void
И вопрос
16/5/06 03:57 (UTC)А сложность написания? А переносимость?
Re: И вопрос
16/5/06 04:49 (UTC)Например стандарт С++ говорит что std::basic_string может иметь ref-counted implementation. Это говорит о том что мы можем использовать std::string в многопоточности только если конкретная реализация STL-я гарантирует что std::string не будет ref-counted. А почему не дать возможность пользователю самому управлять этим аспектом?
Какая библиотека переносимее, в которой пользователь может управлять абсолютно всем или в которой пользователь может управлять только выделением памяти?
Кстати в stl-е из за этого и сделали всего одну полиси, потому что в модели когда все полиси передаються отдельным параметром структурная сложность библиотеки растёт экспоненциально.
Re: И вопрос
16/5/06 04:53 (UTC)Позиция алексанреску и Loki : Это не правильно. Решения нельзя хардокить. Надо любые спорные аспекты выносить в policy.
Позиция моя и ГП : Надо любые аспекты (а не только спорные) выносить в полиси. Есть способ наращивать полиси линейно.
(no subject)
16/5/06 03:33 (UTC)В stl-е кроме аллокаторов неплохо было-бы сделать в виде полиси многопоточность, безопасность итераторов, ref-counted управление содержимым для контейнеров.
--
void
(no subject)
16/5/06 03:55 (UTC)Подозреваю, что проще будет взять другую реализацию или другую бибилиотеку, чем написать или даже просто использовать STL с такими полиси.
(no subject)
16/5/06 04:57 (UTC)А вот в Loki - это да! Там сообщения ещё по более cryptic чем в stl-е.
(no subject)
16/5/06 04:59 (UTC)сорри! Я хотел написать std::vector
(no subject)
16/5/06 05:00 (UTC)Я имел в виду std::vector[singalen_policy] только вместо квадратных скобок угловые.
(no subject)
16/5/06 10:18 (UTC)< и > спасут отца русской демократии, ага :)