singalen: (portrait)
[personal profile] singalen
Обсуждаю статью [livejournal.com profile] voidbent-а (он же Вова Фролов) "General policy pattern".
Она относится к class metaprogramming, на основе C++.
Идея в том, чтобы в некоей библиотеке сложить все классы compile-time policy в один и какие выгоды это даёт.
Спор в комментах.

(no subject)

16/5/06 03:23 (UTC)
Posted by (Anonymous)
Дефалтовые значения плохо работают когда у тебя куча полиси используеться. Например 10 а ты хочешь переопределить только 3-ю. Плюс дефалтовые значения не работают для template template параметров.

Условное наклонение - это слабый аргумент.
Я не понял, к чему это?
--
void

(no subject)

16/5/06 03:51 (UTC)
Posted by (Anonymous)
И Бог с ним, будет надо - укажу дефолтный полиси явно

И потом автор библиотеки не сможет поменять какой из аллокаторов например считать дефалтовым.

(no subject)

16/5/06 04:41 (UTC)
Posted by (Anonymous)
Но это проблема настолько редкая, что ею можно пренебречь.

Эта проблема редкая и ей можно принебречь только тогда когда полиси у нас мало. Например всего одна как в stl-е. Александреску обосновывает то что Policy - это хорошо, потому что мы не хардкодим решения, а ГП ориентированн на то что бы как можно больше решений не хардкодить т.е. вводить как можно больше полиси.

Поэтому это проблема не редкая в контексте ГП.

---
void

(no subject)

29/10/06 06:45 (UTC)
Posted by [identity profile] nponeccop.livejournal.com
И в контексте Generic Programming, которое тоже ГП.

(no subject)

16/5/06 03:28 (UTC)
Posted by (Anonymous)
Я не припоминаю случаев, когда бы у меня было более двух классов-полиси на класс.

Потому что сложность библиотеки с каждой новой полиси растёт экспоненциально. Даже Александреску нигде больше 4-х полиси не использует. А в случае с ГП мы можем все аспекты библиотеки смело выносить в полиси.
--
void

Re: И вопрос

16/5/06 04:49 (UTC)
Posted by (Anonymous)
Сложность написания библиотеки с каждой полиси в ГП как я уже и говорил растёт линейно. Т.е. полиси можно наращивать итеративно. Библиотеку будет использовать легко, и она будет переносимой (не только с платформы на платформу, но и из контекста в контекст).

Например стандарт С++ говорит что std::basic_string может иметь ref-counted implementation. Это говорит о том что мы можем использовать std::string в многопоточности только если конкретная реализация STL-я гарантирует что std::string не будет ref-counted. А почему не дать возможность пользователю самому управлять этим аспектом?

Какая библиотека переносимее, в которой пользователь может управлять абсолютно всем или в которой пользователь может управлять только выделением памяти?

Кстати в stl-е из за этого и сделали всего одну полиси, потому что в модели когда все полиси передаються отдельным параметром структурная сложность библиотеки растёт экспоненциально.

Re: И вопрос

16/5/06 04:53 (UTC)
Posted by (Anonymous)
Позиция stl-я и комитета стандартизации: Всё, чего я не знаю, нету. Например нету многопоточности. Но мы многопоточность имели в виду.

Позиция алексанреску и Loki : Это не правильно. Решения нельзя хардокить. Надо любые спорные аспекты выносить в policy.

Позиция моя и ГП : Надо любые аспекты (а не только спорные) выносить в полиси. Есть способ наращивать полиси линейно.

(no subject)

16/5/06 03:33 (UTC)
Posted by (Anonymous)
Условное наклонение - это слово "если". Покажите мне пример, в котором реально нужно добавлять к 10 полисям 11-ю.

В stl-е кроме аллокаторов неплохо было-бы сделать в виде полиси многопоточность, безопасность итераторов, ref-counted управление содержимым для контейнеров.
--
void

(no subject)

16/5/06 04:57 (UTC)
Posted by (Anonymous)
Кстати наоборот :) Это сильная сторона ГП а не слабая. Вместо cryptic имён классов ты будешь видеть что-то типа: std::vector

А вот в Loki - это да! Там сообщения ещё по более cryptic чем в stl-е.

(no subject)

16/5/06 04:59 (UTC)
Posted by (Anonymous)
std::vector

сорри! Я хотел написать std::vector

(no subject)

16/5/06 05:00 (UTC)
Posted by (Anonymous)
Блог жрёт угловые скобки! я так не играю!

Я имел в виду std::vector[singalen_policy] только вместо квадратных скобок угловые.

(no subject)

16/5/06 10:18 (UTC)
Posted by [identity profile] alf-kadett.livejournal.com
Фокус: std::vector<singalen_policy>

&lt; и &gt; спасут отца русской демократии, ага :)

March 2023

S M T W T F S
   1234
567891011
12131415161718
19202122232425
262728293031 

Page Summary

Page generated 1/8/25 06:09

Expand Cut Tags

No cut tags