Сообщение Re[22]: Исповедь C++ника от 26.12.2020 10:50
Изменено 26.12.2020 10:54 Артём
Re[22]: Исповедь C++ника
Здравствуйте, so5team, Вы писали:
S>Я про случай с небольшим количеством подписчиков говорил с самого начала: http://rsdn.org/forum/job/7911770.1
Небольное количество подписчиков яйца выеденного не стоит. Можете их хоть квадратично перебирать
S>>>Вы заявили следующее (http://rsdn.org/forum/job/7907304.1):
Тё>>Реалтайм бывает soft и hard. Soft вообще похрен на чём делать, а для hard плюсы не подходят (если не рассматривать C с классами).
S>Т.е. когда вас прижали к стенке вашей же цитатой, то вы переобуваетесь и признаете, что речь таки шла про рилтайм. ЧТД.
Признаю диванное поражение от более умелого бойца.
S>>>Тёмчик, давайте говорить о примере от B0FEE664. В котором под T можно подразумевать только std::pair<OnPress, void*>. Если вы хотите ввести в обсуждение еще что-то, то потрудитесь это описать, чтобы люди понимали, о чем речь.
Тё>>Почему у вас onpress в типе? Почему у вас void*? Вы что, про статическую типизацию не слыхали?
S>Это не у меня. Это у человека, который написал пример, приведенный B0FEE664. А тому человеку, возможно (и скорее всего) нужно было в качестве callback-ов использовать чисто сишные функции. А это может потребоваться по разным причинам, начиная от использования легаси-кода и заканчивая интеграцией C++ного кода и кода на каком-нибудь Lua или Python (из которых наружу торчат C-шные интерфейсы).
Про интеграцию с чужим API — почитайте про https://en.wikipedia.org/wiki/Visitor_pattern
S>>>Т.е. вы для хранения списка подписок предлагаете хранить еще и специальный sentinel node?
Тё>>Я не "предлагаю" — это оптимизация связного списка для упрощения его операций, почитайте, учиться ведь всегда полезно.
S>Так ведь я не про упрощение, а про связанные с этим расходы.
Вот и подумайте про сокращение "C" в формуле C*O(...).
S>>>Подписчик.
Тё>>Ну вот ваш подписчик должен хранить интерфейс для отписки. Может хранить пачку таких подписок в списке, и отписываться в деструкторе, например.
S>Или он просто хранит у себя указатель на Button и вызывает RemoveOnButtonPress в нужных ему местах.
Блиииин ну это же рафинированный говнокод.
S>>>На словах все герои. Только вот если у вас отписка работает через поиск (по указателю на callback или по какому-то уникальному Id), то она оказывается более устойчивой к подобным ошибкам.
Тё>>Т.е. вы смирились с фактом, что в вашем говнокоде нет определённости, придёт отписка дважды, или вообще не придёт. И поэтому вы городите тормозной кривой код, оправдывая это порно "локальным кэшем".
S>Мой говнокод, в отличии от вашего идеального, свободно лежит в открытом доступе. И любой желающий может посмотреть и сделать выводы. В отличии от.
Я не обсуждал в этой ветке ваш репозиторий. Сконцентрируйтесь.
Тё>>Возвращается ссылка на интерфейс Subscription. Это может быть наследник от Node имплементирующий Subscription. О каком каком копировании вы поёте?
S>Тёмчик, мы же про C++ говорим, здесь вы не можете вернуть "интерфейс". Вам нужно возвращать либо экземпляр конкретного класса (и тогда сталкиваться с проблемой копирования экземпляров), либо возвращать (умный) указатель на реализацию интерфейса со всеми вытекающими для этого последствиями.
https://en.cppreference.com/w/cpp/language/abstract_class
S>Я про случай с небольшим количеством подписчиков говорил с самого начала: http://rsdn.org/forum/job/7911770.1
Автор: so5team
Дата: 24.12.20
Дата: 24.12.20
Небольное количество подписчиков яйца выеденного не стоит. Можете их хоть квадратично перебирать
S>>>Вы заявили следующее (http://rsdn.org/forum/job/7907304.1):
Автор: Тёмчик
Дата: 17.12.20
Дата: 17.12.20
Тё>>Реалтайм бывает soft и hard. Soft вообще похрен на чём делать, а для hard плюсы не подходят (если не рассматривать C с классами).
S>Т.е. когда вас прижали к стенке вашей же цитатой, то вы переобуваетесь и признаете, что речь таки шла про рилтайм. ЧТД.
Признаю диванное поражение от более умелого бойца.
S>>>Тёмчик, давайте говорить о примере от B0FEE664. В котором под T можно подразумевать только std::pair<OnPress, void*>. Если вы хотите ввести в обсуждение еще что-то, то потрудитесь это описать, чтобы люди понимали, о чем речь.
Тё>>Почему у вас onpress в типе? Почему у вас void*? Вы что, про статическую типизацию не слыхали?
S>Это не у меня. Это у человека, который написал пример, приведенный B0FEE664. А тому человеку, возможно (и скорее всего) нужно было в качестве callback-ов использовать чисто сишные функции. А это может потребоваться по разным причинам, начиная от использования легаси-кода и заканчивая интеграцией C++ного кода и кода на каком-нибудь Lua или Python (из которых наружу торчат C-шные интерфейсы).
Про интеграцию с чужим API — почитайте про https://en.wikipedia.org/wiki/Visitor_pattern
S>>>Т.е. вы для хранения списка подписок предлагаете хранить еще и специальный sentinel node?
Тё>>Я не "предлагаю" — это оптимизация связного списка для упрощения его операций, почитайте, учиться ведь всегда полезно.
S>Так ведь я не про упрощение, а про связанные с этим расходы.
Вот и подумайте про сокращение "C" в формуле C*O(...).
S>>>Подписчик.
Тё>>Ну вот ваш подписчик должен хранить интерфейс для отписки. Может хранить пачку таких подписок в списке, и отписываться в деструкторе, например.
S>Или он просто хранит у себя указатель на Button и вызывает RemoveOnButtonPress в нужных ему местах.
Блиииин ну это же рафинированный говнокод.
S>>>На словах все герои. Только вот если у вас отписка работает через поиск (по указателю на callback или по какому-то уникальному Id), то она оказывается более устойчивой к подобным ошибкам.
Тё>>Т.е. вы смирились с фактом, что в вашем говнокоде нет определённости, придёт отписка дважды, или вообще не придёт. И поэтому вы городите тормозной кривой код, оправдывая это порно "локальным кэшем".
S>Мой говнокод, в отличии от вашего идеального, свободно лежит в открытом доступе. И любой желающий может посмотреть и сделать выводы. В отличии от.
Я не обсуждал в этой ветке ваш репозиторий. Сконцентрируйтесь.
Тё>>Возвращается ссылка на интерфейс Subscription. Это может быть наследник от Node имплементирующий Subscription. О каком каком копировании вы поёте?
S>Тёмчик, мы же про C++ говорим, здесь вы не можете вернуть "интерфейс". Вам нужно возвращать либо экземпляр конкретного класса (и тогда сталкиваться с проблемой копирования экземпляров), либо возвращать (умный) указатель на реализацию интерфейса со всеми вытекающими для этого последствиями.
https://en.cppreference.com/w/cpp/language/abstract_class
Re[22]: Исповедь C++ника
Здравствуйте, so5team, Вы писали:
S>Я про случай с небольшим количеством подписчиков говорил с самого начала: http://rsdn.org/forum/job/7911770.1
Небольное количество подписчиков яйца выеденного не стоит. Можете их хоть квадратично перебирать
S>>>Вы заявили следующее (http://rsdn.org/forum/job/7907304.1):
Тё>>Реалтайм бывает soft и hard. Soft вообще похрен на чём делать, а для hard плюсы не подходят (если не рассматривать C с классами).
S>Т.е. когда вас прижали к стенке вашей же цитатой, то вы переобуваетесь и признаете, что речь таки шла про рилтайм. ЧТД.
Признаю диванное поражение от более умелого бойца.
S>>>Тёмчик, давайте говорить о примере от B0FEE664. В котором под T можно подразумевать только std::pair<OnPress, void*>. Если вы хотите ввести в обсуждение еще что-то, то потрудитесь это описать, чтобы люди понимали, о чем речь.
Тё>>Почему у вас onpress в типе? Почему у вас void*? Вы что, про статическую типизацию не слыхали?
S>Это не у меня. Это у человека, который написал пример, приведенный B0FEE664. А тому человеку, возможно (и скорее всего) нужно было в качестве callback-ов использовать чисто сишные функции. А это может потребоваться по разным причинам, начиная от использования легаси-кода и заканчивая интеграцией C++ного кода и кода на каком-нибудь Lua или Python (из которых наружу торчат C-шные интерфейсы).
Про интеграцию с чужим API — почитайте про https://en.wikipedia.org/wiki/Visitor_pattern
S>>>Т.е. вы для хранения списка подписок предлагаете хранить еще и специальный sentinel node?
Тё>>Я не "предлагаю" — это оптимизация связного списка для упрощения его операций, почитайте, учиться ведь всегда полезно.
S>Так ведь я не про упрощение, а про связанные с этим расходы.
Вот и подумайте про сокращение "C" в формуле C*O(...). Никто вам в C++ не помешает разместить sentinel node в поле цикличного списка по значению.
S>>>Подписчик.
Тё>>Ну вот ваш подписчик должен хранить интерфейс для отписки. Может хранить пачку таких подписок в списке, и отписываться в деструкторе, например.
S>Или он просто хранит у себя указатель на Button и вызывает RemoveOnButtonPress в нужных ему местах.
Блиииин ну это же рафинированный говнокод.
S>>>На словах все герои. Только вот если у вас отписка работает через поиск (по указателю на callback или по какому-то уникальному Id), то она оказывается более устойчивой к подобным ошибкам.
Тё>>Т.е. вы смирились с фактом, что в вашем говнокоде нет определённости, придёт отписка дважды, или вообще не придёт. И поэтому вы городите тормозной кривой код, оправдывая это порно "локальным кэшем".
S>Мой говнокод, в отличии от вашего идеального, свободно лежит в открытом доступе. И любой желающий может посмотреть и сделать выводы. В отличии от.
Я не обсуждал в этой ветке ваш репозиторий. Сконцентрируйтесь.
Тё>>Возвращается ссылка на интерфейс Subscription. Это может быть наследник от Node имплементирующий Subscription. О каком каком копировании вы поёте?
S>Тёмчик, мы же про C++ говорим, здесь вы не можете вернуть "интерфейс". Вам нужно возвращать либо экземпляр конкретного класса (и тогда сталкиваться с проблемой копирования экземпляров), либо возвращать (умный) указатель на реализацию интерфейса со всеми вытекающими для этого последствиями.
https://en.cppreference.com/w/cpp/language/abstract_class
S>Я про случай с небольшим количеством подписчиков говорил с самого начала: http://rsdn.org/forum/job/7911770.1
Автор: so5team
Дата: 24.12.20
Дата: 24.12.20
Небольное количество подписчиков яйца выеденного не стоит. Можете их хоть квадратично перебирать
S>>>Вы заявили следующее (http://rsdn.org/forum/job/7907304.1):
Автор: Тёмчик
Дата: 17.12.20
Дата: 17.12.20
Тё>>Реалтайм бывает soft и hard. Soft вообще похрен на чём делать, а для hard плюсы не подходят (если не рассматривать C с классами).
S>Т.е. когда вас прижали к стенке вашей же цитатой, то вы переобуваетесь и признаете, что речь таки шла про рилтайм. ЧТД.
Признаю диванное поражение от более умелого бойца.
S>>>Тёмчик, давайте говорить о примере от B0FEE664. В котором под T можно подразумевать только std::pair<OnPress, void*>. Если вы хотите ввести в обсуждение еще что-то, то потрудитесь это описать, чтобы люди понимали, о чем речь.
Тё>>Почему у вас onpress в типе? Почему у вас void*? Вы что, про статическую типизацию не слыхали?
S>Это не у меня. Это у человека, который написал пример, приведенный B0FEE664. А тому человеку, возможно (и скорее всего) нужно было в качестве callback-ов использовать чисто сишные функции. А это может потребоваться по разным причинам, начиная от использования легаси-кода и заканчивая интеграцией C++ного кода и кода на каком-нибудь Lua или Python (из которых наружу торчат C-шные интерфейсы).
Про интеграцию с чужим API — почитайте про https://en.wikipedia.org/wiki/Visitor_pattern
S>>>Т.е. вы для хранения списка подписок предлагаете хранить еще и специальный sentinel node?
Тё>>Я не "предлагаю" — это оптимизация связного списка для упрощения его операций, почитайте, учиться ведь всегда полезно.
S>Так ведь я не про упрощение, а про связанные с этим расходы.
Вот и подумайте про сокращение "C" в формуле C*O(...). Никто вам в C++ не помешает разместить sentinel node в поле цикличного списка по значению.
S>>>Подписчик.
Тё>>Ну вот ваш подписчик должен хранить интерфейс для отписки. Может хранить пачку таких подписок в списке, и отписываться в деструкторе, например.
S>Или он просто хранит у себя указатель на Button и вызывает RemoveOnButtonPress в нужных ему местах.
Блиииин ну это же рафинированный говнокод.
S>>>На словах все герои. Только вот если у вас отписка работает через поиск (по указателю на callback или по какому-то уникальному Id), то она оказывается более устойчивой к подобным ошибкам.
Тё>>Т.е. вы смирились с фактом, что в вашем говнокоде нет определённости, придёт отписка дважды, или вообще не придёт. И поэтому вы городите тормозной кривой код, оправдывая это порно "локальным кэшем".
S>Мой говнокод, в отличии от вашего идеального, свободно лежит в открытом доступе. И любой желающий может посмотреть и сделать выводы. В отличии от.
Я не обсуждал в этой ветке ваш репозиторий. Сконцентрируйтесь.
Тё>>Возвращается ссылка на интерфейс Subscription. Это может быть наследник от Node имплементирующий Subscription. О каком каком копировании вы поёте?
S>Тёмчик, мы же про C++ говорим, здесь вы не можете вернуть "интерфейс". Вам нужно возвращать либо экземпляр конкретного класса (и тогда сталкиваться с проблемой копирования экземпляров), либо возвращать (умный) указатель на реализацию интерфейса со всеми вытекающими для этого последствиями.
https://en.cppreference.com/w/cpp/language/abstract_class