Re[6]: Си с классами vs C++
От: alpha21264 СССР  
Дата: 13.07.18 08:21
Оценка: +1
Здравствуйте, smeeld, Вы писали:

S>А потом бегут на кывт с вопросами почему прога на С++ работает медленее чем прога на python.


И кого сейчас это волнует?
Реально тормозит 1% программного кода. Вот его и надо оптимизировать.
А остальное пишется как проще/надёжнее.

Течёт вода Кубань-реки куда велят большевики.
Re[7]: Си с классами vs C++
От: smeeld  
Дата: 13.07.18 08:41
Оценка:
Здравствуйте, alpha21264, Вы писали:

A>И кого сейчас это волнует?

A>Реально тормозит 1% программного кода. Вот его и надо оптимизировать.
A>А остальное пишется как проще/надёжнее.

Что значит "1% тормозит"? Если ты закинул работу с std::string, обеспечивающими успешно копирования туда-сюда одного и того же на ровном месте (и не только std::string, много у чего из STL та же проблема), в асинхронный хендлер (код который вызывается в потоке хендлера) сетевого демона, то эта функция просто сразу же вылетает в топ в профилировщике при задании демону высокой нагрузки. Недавно возился с apache trafficserver, он написан на Си с классами с редкими вкраплениями использования параметризации типов, но нигде нет ни малейшего использования штук из STL в коде ядра демона (это 98% всего TS), всё своё, оптимизированное по-максимому.
Re[4]: Си с классами vs C++
От: Mr.Delphist  
Дата: 13.07.18 10:47
Оценка:
Здравствуйте, AlexGin, Вы писали:

AG>Без настоящей рефлексии, как в .NET языках (тот же C#) — очень сомневаюсь что это в полной мере возможно...

Рефлексия — это всё же run-time (когда программа уже написана), а шаблоны — чистый compile-time. Обе вещи полезны, но работают в совершенно разных областях.
Re[5]: Си с классами vs C++
От: vopl Россия  
Дата: 13.07.18 11:04
Оценка: 3 (1)
Здравствуйте, Mr.Delphist, Вы писали:

MD>Рефлексия — это всё же run-time (когда программа уже написана), а шаблоны — чистый compile-time. Обе вещи полезны, но работают в совершенно разных областях.


Оригинальный смысл рефлексии — это когда программа сама себя наблюдает и модифицирует. Run-time или compile-time — зависит от того, что за программа подразумевается. В C++ идет нацеливание на compile-time и эдакую "мета-программу"

C++ CoreHard Winter 2017: Василий Немков. Reflection в C++ и коты
Re[8]: Си с классами vs C++
От: alpha21264 СССР  
Дата: 13.07.18 13:07
Оценка:
Здравствуйте, smeeld, Вы писали:

S>Здравствуйте, alpha21264, Вы писали:


A>>И кого сейчас это волнует?

A>>Реально тормозит 1% программного кода. Вот его и надо оптимизировать.
A>>А остальное пишется как проще/надёжнее.

S>Что значит "1% тормозит"? Если ты закинул работу с std::string, обеспечивающими успешно копирования туда-сюда одного и того же на ровном месте (и не только std::string, много у чего из STL та же проблема), в асинхронный хендлер (код который вызывается в потоке хендлера) сетевого демона, то эта функция просто сразу же вылетает в топ в профилировщике при задании демону высокой нагрузки. Недавно возился с apache trafficserver, он написан на Си с классами с редкими вкраплениями использования параметризации типов, но нигде нет ни малейшего использования штук из STL в коде ядра демона (это 98% всего TS), всё своё, оптимизированное по-максимому.


Ну вот примерно это и означает.
Есть места, которые надо оптимизировать, а есть места, которые не надо.
Тех, которые надо, в среднем 1%. Во всех остальных делаем как проще.

Ты же хотел "шаблоны и прочие возможности языка"? Ну вот они.
В данном случае STL. Ты што, против STL? Ну ты и ретроград!

Течёт вода Кубань-реки куда велят большевики.
Re[13]: Си с классами vs C++
От: cures Россия cures.narod.ru
Дата: 13.07.18 13:12
Оценка:
Здравствуйте, Ops, Вы писали:

Ops>Это религия. На мой взгляд, MIT-BSD самые удобные лицензии, но у красноглазиков от них подгорает.


Удобные, для копирастов
Прочитайте, под ней можно софтину перелицензировать, плюс даётся разрешение позволять пользователям модифицированной софтины делать с ней то же самое. То есть, по умолчанию у них такого права не будет.
Re[8]: Си с классами vs C++
От: cures Россия cures.narod.ru
Дата: 13.07.18 13:31
Оценка:
Здравствуйте, smeeld, Вы писали:

S>Что значит "1% тормозит"?


Это значит, что остальные 99% не тормозят

S>Если ты закинул работу с std::string, обеспечивающими успешно копирования туда-сюда одного и того же на ровном месте (и не только std::string, много у чего из STL та же проблема),


"На ровном месте" никто ничего никуда не копирует. Максимальная возможная неприятность, которая и обсуждается, — следят, чтобы никто не прошёл неинициализированным. Копировать обратно в тот же буфер, или же в буфер новый — по времени стоит практически одинаково.

S>в асинхронный хендлер (код который вызывается в потоке хендлера) сетевого демона,


С демонами аккуратнее надо быть.

S>то эта функция просто сразу же вылетает в топ в профилировщике при задании демону высокой нагрузки.


Нагрузка не должна особо поменяться. Может чуть подрасти расход памяти. Или Вы не умеете их готовить.

S> Недавно возился с apache trafficserver, он написан на Си с классами с редкими вкраплениями использования параметризации типов, но нигде нет ни малейшего использования штук из STL в коде ядра демона (это 98% всего TS), всё своё, оптимизированное по-максимому.


Из того, что какая-то софтина написана на Ц с классами и работает быстро, никак не следует, что на крестах она работала бы медленней. Но в целом, я верю, что apache вылизывали по максимуму, дожимая даже не самые горячие места. Альфа же, совершенно справедливо, говорит, что в обычном повседневном программировании такое редко требуется. Гораздо важнее сделать код надёжным, повторно используемым и сопровождаемым. Simple is better than complex. Beautiful is better than ugly.
И Питон Вы таки не к месту упомянули, нет в том коде потери производительности на два с лишним порядка ни в одном из вариантов.
Re[9]: Си с классами vs C++
От: smeeld  
Дата: 13.07.18 13:34
Оценка:
Здравствуйте, alpha21264, Вы писали:

A>Ты же хотел "шаблоны и прочие возможности языка"? Ну вот они.

A>В данном случае STL. Ты што, против STL? Ну ты и ретроград!

Похоже. Вы не совсе мопоняли. STL-это либа. Вообще говоря выступаю за параметризацию сущностей в целях обобщения и абстрагирования используя для этого шаблоны С++ (не штуки из STL) как средство. Почему-то под понятием шаблонов C++ часто понимается использование каких-то библиотек, которые входят в стандарт и которые предоставляют параметризованные сущности. С какого перепугу?
Re[14]: Си с классами vs C++
От: alex_public  
Дата: 13.07.18 17:54
Оценка: +1 -1
Здравствуйте, cures, Вы писали:

Ops>>Это религия. На мой взгляд, MIT-BSD самые удобные лицензии, но у красноглазиков от них подгорает.

C>Удобные, для копирастов
C>Прочитайте, под ней можно софтину перелицензировать, плюс даётся разрешение позволять пользователям модифицированной софтины делать с ней то же самое. То есть, по умолчанию у них такого права не будет.

Да, это как раз и есть настоящие свободные лицензии. В отличие от всякой вирусной мерзости типа GPL, которые не имеют вообще никакого отношения к свободе.
Re[15]: Си с классами vs C++
От: cures Россия cures.narod.ru
Дата: 13.07.18 17:59
Оценка: +1
Здравствуйте, alex_public, Вы писали:

_>Да, это как раз и есть настоящие свободные лицензии. В отличие от всякой вирусной мерзости типа GPL, которые не имеют вообще никакого отношения к свободе.


Ага, не дают со "свободных" дурачков бабла настричь!
Re[14]: Си с классами vs C++
От: Ops Россия  
Дата: 14.07.18 11:26
Оценка:
Здравствуйте, cures, Вы писали:

C>Удобные, для копирастов


Нет, удобные для пользователей, использующих код. Как копирасты могут что-то предъявить к такому коду, или нажиться на нем — вообще непонятно.

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


Это ж здорово. Я могу с кодом делать что хочу, и ни перед кем ни отчитываться, в отличие от богомерзкой GPL, которая мало того, что ограничивает использование, так еще и прилипает намертво к любому коду, который заденет.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re: Си с классами vs C++
От: fk0 Россия https://fk0.name
Дата: 15.07.18 11:15
Оценка: 6 (1) +2
Здравствуйте, sergey2b, Вы писали:

S>объясните плиз чем Си с классами отличаеться от C++\


Подразумевается, что C++ это не только объектно-ориентированное программирование. Но и какие-то элементы метапрограммирования на шаблонах, возможности по перегрузке функций и операторов, пространства имён, argument dependent lookup в частности, исключения, полиморфизм, какой-то syntax sugar и современного C++ типа lambda-выражений. В середине-конце 90-х и начале 2000-х выпускалось много книг рассматривающих C++ именно в разрезе OO, мол это единственная парадигма и серебрянная пуля, видимо отсюда и пошёл C с классами, от Turbo-C++, первых версий MSVC, да и поддержка C++ в них была далеко не на высоте, в gcc времён 3.3.3 тоже. Собственно в начале 2000-х все возможности C++ и использовать толком не было возможности, так что C с классами скорей старая школа, кто учился в начале 2000-х.
Re[2]: Си с классами vs C++
От: fk0 Россия https://fk0.name
Дата: 15.07.18 11:26
Оценка:
Здравствуйте, MasterZiv, Вы писали:

>>объясните плиз чем Си с классами отличаеться от C++\

S>>те когда это еще Си с классами, а вот после этого стал уже С++

MZ>Говнокод на С++, написанный С-шником -- это "С с классами".

MZ>Коды возврата вместо исключений.
MZ>Возврат значений через указатель на результат в параметре.

Это удел фортранщиков. У них там in и out переменные. Благо передаются все по ссылке.

А как правильно? В нормальных языках (перл, tcl, питон) можно вернуть список. В C++ до введения auto и tuple делать было нечего.

MZ>Указатели на коллбэки вместо полиморфизма.


Не соглашусь в общем случае. О полиморфизма как раз зло, он вынуждает вместо легковесного класса адаптера городить тот самый C с классами. Да, коллбэк как функция -- зло. Но интефейсный класс не сильно меньшее зло. Что мешало оставить некий функтор, в который ляжет лямбда или std::function адаптирующая вызов к реальному классу, если он там вообще есть и нужен.

MZ>Макросы вместо шаблонов.


Макросы не заменяют шаблоны и наборот. Можно пытаться изобразить шаблон из макроса (но для него ж элементарно не написать специализации для разных типов, например). Часто макросы пишутся вместо отсутствущих вложенных функций (которые есть в паскале и gcc без ++).
Re[2]: Си с классами vs C++
От: sergey2b ЮАР  
Дата: 15.07.18 12:01
Оценка:
Здравствуйте, fk0, Вы писали:


fk0> Подразумевается, что C++ это не только объектно-ориентированное программирование. Но и какие-то элементы метапрограммирования на шаблонах, возможности по перегрузке функций и операторов, пространства имён, argument dependent lookup в частности, исключения, полиморфизм, какой-то syntax sugar и современного C++ типа lambda-выражений. В середине-конце 90-х и начале 2000-х выпускалось много книг рассматривающих C++ именно в разрезе OO, мол это единственная парадигма и серебрянная пуля, видимо отсюда и пошёл C с классами, от Turbo-C++, первых версий MSVC, да и поддержка C++ в них была далеко не на высоте, в gcc времён 3.3.3 тоже. Собственно в начале 2000-х все возможности C++ и использовать толком не было возможности, так что C с классами скорей старая школа, кто учился в начале 2000-х.



про операторы, шаблоны для функций min max и namespace вопрсов нет
где можно например использовать остальное в

большой колекции однотипных объектов
web server
сканирование файлов

топик был создан с целю понять что можно использовать из нового в текущем проекте
Re[3]: Си с классами vs C++
От: so5team https://stiffstream.com
Дата: 16.07.18 06:57
Оценка: 6 (1)
Здравствуйте, sergey2b, Вы писали:

S>где можно например использовать остальное в


S>web server


В web server: Трехэтажные C++ные шаблоны в реализации встраиваемого асинхронного HTTP-сервера с человеческим лицом.
Re[4]: Си с классами vs C++
От: wl. Россия  
Дата: 16.07.18 14:19
Оценка:
Здравствуйте, so5team, Вы писали:

S>Здравствуйте, sergey2b, Вы писали:


S>>где можно например использовать остальное в


S>В web server: Трехэтажные C++ные шаблоны в реализации встраиваемого асинхронного HTTP-сервера с человеческим лицом.


Увидел в Ninendo Switch SDK такие конструкции (это еще не самая длинная):

nn::sf::cmif::client::CmifDomainProxyClientCoreProcessor<nn::sf::hipc::client::Hipc2ClientSessionManagedProxyKindBase<nn::sf::hipc::client::Hipc2ProxyKindBase<(nn::sf::hipc::detail::MessageType)4>>, nn::sf::cmif::detail::CoreMethodInfo<std::__1::tuple<nn::sf::cmif::detail::BufferArgumentInfo<0, 26, 224ul>, nn::sf::cmif::detail::InRawArgumentInfo<16ul, 8ul, 0l>>, 16ul, 0ul, false>, std::__1::tuple<nn::sf::cmif::detail::BufferArgumentInfo<0, 26, 224ul>, nn::sf::cmif::detail::InRawArgumentInfo<16ul, 8ul, 0l>>>::Process(nn::sf::cmif::client::CmifDomainClientMessage<nn::sf::hipc::client::Hipc2ClientSessionManagedProxyKindBase<nn::sf::hipc::client::Hipc2ProxyKindBase<(nn::sf::hipc::detail::MessageType)4>>>::ProxyBaseObject *, nn::sf::cmif::client::BufferClientArgumentType, nn::sf::cmif::client::InRawClientArgumentType<16ul, 8ul, void>, unsigned int)

Вот уж кого действительно покусал Александреску
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.