Re[3]: Templates
От: so5team https://stiffstream.com
Дата: 04.07.18 19:06
Оценка:
Здравствуйте, Erop, Вы писали:

E>Попробуешь сам?


Лучше посмотреть, как шибко умные не зная контекста будут изобретать велосипед там, где простое, понятное и эффективное решение пишется с ходу в пару строчек.
Re[4]: Templates
От: Erop Россия  
Дата: 04.07.18 19:15
Оценка: +1
Здравствуйте, so5team, Вы писали:

S>Лучше посмотреть, как шибко умные не зная контекста будут изобретать велосипед там, где простое, понятное и эффективное решение пишется с ходу в пару строчек.


Ну так "шибко умные" это умеют, а у тебя, как раз, и знание контекста есть и тебе интересно, как без шаблонов сделать...

В частности есть такой вопрос по контексту, зачем вообще нужен result_t? Почему он сразу не вариант из удачного результата и неудачного?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[5]: Templates
От: so5team https://stiffstream.com
Дата: 04.07.18 19:55
Оценка:
Здравствуйте, Erop, Вы писали:

E>Ну так "шибко умные" это умеют


На словах все умеют.

E>В частности есть такой вопрос по контексту, зачем вообще нужен result_t?


Вы ошиблись, в приведенном примере нет сущностей с именем result_t.

E> Почему он сразу не вариант из удачного результата и неудачного?


Там и есть вариант из удачного и неудачного. Вот прям так иностранными буквами и написано: std::variant<successful_result_t, failed_result_t>.
Re[6]: Templates
От: Erop Россия  
Дата: 04.07.18 20:27
Оценка:
Здравствуйте, so5team, Вы писали:

S>Вы ошиблись, в приведенном примере нет сущностей с именем result_t.

Ну там у тебя много разных сущностей, и в вариантах ещё добавили. у тебя оно reply_t называлось.
Собственно вопрос чем reply от result отличается концептуально? И зачем их таки два разных?

E>> Почему он сразу не вариант из удачного результата и неудачного?


S>Там и есть вариант из удачного и неудачного. Вот прям так иностранными буквами и написано: std::variant<successful_result_t, failed_result_t>.


Там ещё много фсякого понаписано
Впрочем, как я понял, ты и так всё знаешь, к обсуждению не готов, так что зачем спрашивал у кого-то

Вы вместе с вашими матерыми C++ разработчиками вместо этого предлагаете что?

я не понимаю...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[7]: Templates
От: so5team https://stiffstream.com
Дата: 04.07.18 20:40
Оценка:
Здравствуйте, Erop, Вы писали:

E>Собственно вопрос чем reply от result отличается концептуально? И зачем их таки два разных?


result -- это результат обработки данных, reply -- это контейнер для переноса этого результата из одного рабочего потока в другой, вместе с результатом переносится дополнительная информация.

E>Впрочем, как я понял


Это вряд ли.

E>так что зачем спрашивал у кого-то

Вы вместе с вашими матерыми C++ разработчиками вместо этого предлагаете что?

я не понимаю...


Да вот интересно посмотреть на решения от матерых программистов, застрявших в конце 1980-х. Но вряд ли доведется увидеть. Пока только пустые разговоры.
Re[8]: Templates
От: Erop Россия  
Дата: 04.07.18 21:39
Оценка: +1
Здравствуйте, so5team, Вы писали:

S>Да вот интересно посмотреть на решения от матерых программистов, застрявших в конце 1980-х. Но вряд ли доведется увидеть. Пока только пустые разговоры.


Ну вы хамите побольше
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re: Templates
От: Barbar1an Украина  
Дата: 04.07.18 23:16
Оценка:
Здравствуйте, smeeld, Вы писали:

S>Заметил, что у большинства практикующих C++ достаточно негативное отношение к шаблонам в CPP. Речь идёт не о использовании std или boost, которые состоят из таковых процентов на 80, а о написании кода с активным применением параметризации функций и типов. Это многими считается чуть ли не признаком недостатка квалификации, типа матёрый плюсовик всегда найдёт способ расписать без создания параметризованных типов, и вообще найдёт способ писать на C++ как можно проще. Это вообще что такое? Если принять это мнение за справедливое, то получается, что std и boost писали джуны несмышлённые и не знающие как просто писать на CPP?


да всё там нормально, нужно просто меру знать и не параметризировать всё подряд

у меня в коде шабюлоны тока в контейнерах , эвентах и обвертках над сложными типами для устранения постоянных кастов и всё, и этого достаотчное
Я изъездил эту страну вдоль и поперек, общался с умнейшими людьми и я могу вам ручаться в том, что обработка данных является лишь причудой, мода на которую продержится не более года. (с) Эксперт, авторитет и профессионал из 1957 г.
Re[9]: Templates
От: so5team https://stiffstream.com
Дата: 05.07.18 05:00
Оценка: +1 -2
Здравствуйте, Erop, Вы писали:

S>>Да вот интересно посмотреть на решения от матерых программистов, застрявших в конце 1980-х. Но вряд ли доведется увидеть. Пока только пустые разговоры.


E>Ну вы хамите побольше


Для человека, который начинал с таким апломбом:

Это всего лишь означает, что ты не умеешь контролировать их "расползание" по коду...

и

Это, кстати, хорошее упражнение...Попробуешь сам?

у вас оказалась на удивление тонкая душевная организация.

А ведь результат разговора был предсказан точно: никакого кода. Только пустые разговоры вокруг стиля общения.

Это ведь вы когда-то рассказывали про мегабиблиотеку, которая многократно лучше STL, но которую никто не увидел и даже не узнал, на каких принципах она работает? Так что в вашем случае все предсказуемо.
Re[7]: Templates
От: night beast СССР  
Дата: 05.07.18 05:42
Оценка: +1
Здравствуйте, Erop, Вы писали:

E>Там ещё много фсякого понаписано

E>Впрочем, как я понял, ты и так всё знаешь, к обсуждению не готов, так что зачем спрашивал у кого-то

Вы вместе с вашими матерыми C++ разработчиками вместо этого предлагаете что?

я не понимаю...


если ты не готов предоставить код, который можно обсудить, то зачем было влезать?
Re[8]: Templates
От: chaotic-kotik  
Дата: 05.07.18 06:33
Оценка: +1
Здравствуйте, night beast, Вы писали:


NB>если ты не готов предоставить код, который можно обсудить, то зачем было влезать?


мой вариант он проигнорировал, так что, делаем выводы

ну и этот пример нельзя считать advanced применением шаблонов, идиоматичный perfect forwarding, ничего страшного и непонятного
Re[6]: Templates
От: chaotic-kotik  
Дата: 05.07.18 06:43
Оценка:
Здравствуйте, AlexGin, Вы писали:

AG>Фичи языка — это твои друзья, а НЕ враги!

AG>Кстати, открою тебе маленький секрет — применение конструкции if constexpr из набора C++17 —
AG>позволяет работать с шаблонами удобнее, чем раньше!!!
AG>Вот простой пример:
AG>
AG>template <typename C>
AG>void print (const C &c)
AG>{
AG>    if constexpr (std::is_same_v<C, std::vector<int>>) {
AG>        cout << "vector<int>: ";
AG>    }

AG>    if constexpr (std::is_same_v<C, std::list<int>>) {
AG>        cout << "list<int>:   ";
AG>    }

AG>    if constexpr (std::is_same_v<C, std::deque<int>>) {
AG>        cout << "deque<int>:  ";
AG>    }

AG>    for (auto i : c)
AG>    {
AG>        cout << i << ", ";
AG>    }
AG>    cout << '\n';
AG>}
AG>

AG>Архитектура кода — только выигрывает от применения современных возможностей языков программирования.
AG>Так, применение приведенного выше метода, позволит тебе забыть о трудно-понимаемом SFINAE

абсолютно синтетический пример, при этом а) все типы, которые ф-я поддерживают должны перечисляться внутри и б) std::vector<int, myalloc> уже не пройдет, я уже молчу про std::array
ну и я бы запилил такое на typeid::name и abi::__cxa_demangle (для gcc, clang)
Re[7]: Templates
От: niXman Ниоткуда https://github.com/niXman
Дата: 05.07.18 06:54
Оценка: +2
Здравствуйте, chaotic-kotik, Вы писали:

CK>ну и я бы запилил такое на typeid::name и abi::__cxa_demangle (для gcc, clang)


ужос
яваскриптщики в восторге =)
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[9]: Templates
От: so5team https://stiffstream.com
Дата: 05.07.18 07:05
Оценка:
Здравствуйте, chaotic-kotik, Вы писали:

CK>мой вариант он проигнорировал, так что, делаем выводы


А разве был какой-то вариант? Передача std::variant прямо в конструктор reply -- это так себе выбор. Поскольку хранение result-а именно в виде variant -- это, по сути, деталь реализации reply_t. Не есть хорошо, что эта деталь уже торчит наружу. Но прибивать к ней гвоздями еще и конструктор reply... Кому как, короче говоря.

CK>ну и этот пример нельзя считать advanced применением шаблонов, идиоматичный perfect forwarding, ничего страшного и непонятного


Этот пример достаточно компактен и понятен. Как раз то, что нужно для ленивого обсуждения на форуме. И то, даже аналог этого простого случая никто вменяемо не без шаблонов переписать не смог (ну нельзя же вот это
Автор: alpha21264
Дата: 04.07.18
воспринимать всерьез).

Можно было бы, конечно, какой-нибудь хардкор на публику вынести. Но тут ведь думать гораздо больше придется. В форумных войнах желание подумать у кого-нибудь -- это ну очень редкий зверь.
Re[7]: Templates
От: AlexGin Беларусь  
Дата: 05.07.18 07:39
Оценка:
Здравствуйте, chaotic-kotik, Вы писали:

CK>абсолютно синтетический пример, при этом а) все типы, которые ф-я поддерживают должны перечисляться внутри

Это совсем не обязательно: просто не будет аннотации к типу, а основной цикл всё равно — работать будет.

CK>б) std::vector<int, myalloc> уже не пройдет, я уже молчу про std::array

Я деже не припомню, когда я такое последний раз применял
Ну и это можно дополнить, если так уж хочется.

CK>ну и я бы запилил такое на typeid::name и abi::__cxa_demangle (для gcc, clang)

Дело вкуса

P.S. Несмотря на то, что пример действительно носит оттенок "синтетики", он позволяет скептикам (типа ТС), немного приоткрыть для себя C++17.
Отредактировано 05.07.2018 7:41 AlexGin . Предыдущая версия .
Re[9]: Templates
От: night beast СССР  
Дата: 05.07.18 07:40
Оценка:
Здравствуйте, chaotic-kotik, Вы писали:

NB>>если ты не готов предоставить код, который можно обсудить, то зачем было влезать?

CK>мой вариант он проигнорировал, так что, делаем выводы

и чем замена ссылки на вариант лучше исходного кода? (кроме добавления лишнего мува)
Отредактировано 05.07.2018 7:41 night beast . Предыдущая версия .
Re[3]: Box2D
От: Qbit86 Кипр
Дата: 05.07.18 08:33
Оценка: +3
Здравствуйте, smeeld, Вы писали:

S>Я то как раз за, если случается писать на С++ то ухожу в шаблоны сразу, без них код на С++ нелаконичен и убог, откровенно говоря. В треде упоминались те, кто против, кто желает писать на C++ как на Си, так как писать на С++ без шаблонов-это и означает писать на Си. Кстати, многие из противников в треде уже отметились, почитайте их доводы против параметризации и обобщений, типа это выпендрёшь м нечитабельно.


Подобное со стороны любителей Джавы можно услышать. Мол, почему вы вместо того, чтобы делом заниматься, пишете адаптеры абстрактных фабрик для декорации билдеров стратегий? А они тебе: да ты просто не осилил, так получается всё гибко и идиоматично.

Есть такой мужик, Erin Catto. Он создал самый популярный в мире движок 2D-физики. На С++. Чтобы создать качественную симуляцию, надо разбираться в том, как организовать детект коллизий, солвер контактов и констрейнтов, вычислительно устойчивую интеграцию, etc. Можно ли его назвать неквалифицированным программистом? А между тем там не то что шаблонов, там даже RAII толком нет, голый Си с классами и прости господи сырыми указателями, плюс-минус использование std::vector'а какого-нибудь. Зато движок легко читать и понимать, и можно не приходя в сознание портировать на любой JavaScript.

Вот, что автор пишет по этому поводу:

Why don't you use this awesome C++ feature?

Box2D is designed to be portable, so I try to keep the C++ usage simple. Also, I don't use the STL (except sort) or other libraries to keep the dependencies low. I keep template usage low and don't use name spaces. Remember, just because a C++ feature exists, that doesn't mean you need to use it.

The many ports of Box2D to other languages platforms shows that this strategy has been successful.


Писать с шаблонами любой горазд; я когда на C++ программировал, любил это делать. Но положа руку на сердце: если надо быстро въехать в кодобазу, гораздо приятнее, если там логика написана на if'ах, а не на std::enable_if'ах.
Глаза у меня добрые, но рубашка — смирительная!
Re[10]: Templates
От: alpha21264 СССР  
Дата: 05.07.18 08:47
Оценка: +1
Здравствуйте, so5team, Вы писали:

S>Этот пример достаточно компактен и понятен. Как раз то, что нужно для ленивого обсуждения на форуме. И то, даже аналог этого простого случая никто вменяемо не без шаблонов переписать не смог (ну нельзя же вот это
Автор: alpha21264
Дата: 04.07.18
воспринимать всерьез).


Эттто почему? Рвёт твои шаблоны (не темплейты)? Хотя темплейты тоже наверное рвёт.

Течёт вода Кубань-реки куда велят большевики.
Re[11]: Templates
От: so5team https://stiffstream.com
Дата: 05.07.18 08:55
Оценка:
Здравствуйте, alpha21264, Вы писали:

A>Эттто почему?


Потому что это троллинг. Причем троллинг так себе. Как и шутки, впрочем.
Re[4]: Box2D
От: so5team https://stiffstream.com
Дата: 05.07.18 08:59
Оценка:
Здравствуйте, Qbit86, Вы писали:

Q>Есть такой мужик, Erin Catto. Он создал самый популярный в мире движок 2D-физики...


Как-то вы издалека зашли. Нужно было бы сразу с Линуса Торвальдса, который еще в начале 90-х выбрал чистый C вместо C++ для своего ядра. Судя по успеху результата, выбор был более чем оправданным.
Re[12]: Templates
От: alpha21264 СССР  
Дата: 05.07.18 09:20
Оценка: +1
Здравствуйте, so5team, Вы писали:

A>>Эттто почему?


S>Потому что это троллинг. Причем троллинг так себе. Как и шутки, впрочем.


Эк тебя корёжит!
Это не тролинг.
Давай рассказывай, почему в данном случае нельзя обойтись одним битом вместо всех наворотов.

PS.
Не, я всё понимаю.
Потому что автор первоначального кода на шаблонах будет выглядеть извращенцем.
Но мы же на rsdn, поэтому давай, попытайся придумать технический, а не психический ответ.

Течёт вода Кубань-реки куда велят большевики.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.