Возникло желание почитать чего-нибудь нового (книгу, если конкретнее) про архитектуру и дизайн C++ приложений. Звучит довольно обобщенно, но последнее дельное что я читал на этот счет было Александреску, "Дизайн современных приложений на C++", которую, конечно, можно и наверное нужно перечитать, но может что-то посвежее вышло?
В качестве уточнения: я НЕ говорю ни про CppCoreGuidelines, ни про Effective * C++, которые больше про сам язык, нежели про дизайн. А хочется именно про дизайн. И The Architecture of Open Source Applications тоже не то, так как там больше про высокоуровневый дизайн без привязки к языку.
Re: Архитектура и дизайн современных C++ приложений
Здравствуйте, kaa.python, Вы писали:
KP>Возникло желание почитать чего-нибудь нового (книгу, если конкретнее) про архитектуру и дизайн C++ приложений. Звучит довольно обобщенно, но последнее дельное что я читал на этот счет было Александреску, "Дизайн современных приложений на C++", которую, конечно, можно и наверное нужно перечитать, но может что-то посвежее вышло?
KP>В качестве уточнения: я НЕ говорю ни про CppCoreGuidelines, ни про Effective * C++, которые больше про сам язык, нежели про дизайн. А хочется именно про дизайн. И The Architecture of Open Source Applications тоже не то, так как там больше про высокоуровневый дизайн без привязки к языку.
А чем должен отличатся дизайн С++ приложения от C# или Java приложения, если не учитывать особенности языка, платформы, UI библиотек?
Re: Архитектура и дизайн современных C++ приложений
Здравствуйте, Homunculus, Вы писали:
H>А разве не зависит от фреймворка? H>Например, приложение на Qt. C++? C++. Но например те же сигнал-слоты могут офигенно повлиять на архитектуру.
Qt — это отдельный мир и по нему свои руководства, что правильно и ожидаемо. Я же говорю про сам C++, в так сказать безфреймворковой его ипостаси. И, да, если убрать базирующиеся на Qt решения, то все остальные дизайн-решения будут более-менее подчиняться во многом схожим принципам и парадигмам. Так что нечто обобщенное типа "Дизайн современных приложений на C++" вполне возможно и сейчас.
Re[3]: Архитектура и дизайн современных C++ приложений
Здравствуйте, kaa.python, Вы писали:
H>>А разве не зависит от фреймворка? H>>Например, приложение на Qt. C++? C++. Но например те же сигнал-слоты могут офигенно повлиять на архитектуру.
KP>Qt — это отдельный мир и по нему свои руководства, что правильно и ожидаемо. Я же говорю про сам C++, в так сказать безфреймворковой его ипостаси.
А такая вообще существует? Что-то у меня сильнейшие сомнения.
KP> И, да, если убрать базирующиеся на Qt решения, то все остальные дизайн-решения будут более-менее подчиняться во многом схожим принципам и парадигмам. Так что нечто обобщенное типа "Дизайн современных приложений на C++" вполне возможно и сейчас.
С чего такой вывод?
То, что я вижу — что >90% зависимость от задачи и среды запуска. Среда это и платформа (Unix/Windows/Embedded/etc.), и режим запуска (простой десктоп/игра/демон/...), и множество других факторов.
The God is real, unless declared integer.
Re[4]: Архитектура и дизайн современных C++ приложений
Насколько я понимаю, это обновленная Large-Scale C++ Software Design, выросшая до 2-х томника. Честно говоря, не читал ее, как и не осилил до конца оригинал. Как-то много воды и очевидных вещей было там, насколько я помню.
Re[2]: Архитектура и дизайн современных C++ приложений
Здравствуйте, PM, Вы писали:
PM>Не так давно вышла arge-Scale C++ Volume I: Process and Architecture by John Lakos
PM>Насколько я понимаю, это обновленная Large-Scale C++ Software Design, выросшая до 2-х томника. Честно говоря, не читал ее, как и не осилил до конца оригинал. Как-то много воды и очевидных вещей было там, насколько я помню.
О, это тот перец что написал "C++ Network Programming"! Спасибо, может быть эта книга и хорошо зайдет
Re[2]: Архитектура и дизайн современных C++ приложений
Здравствуйте, LaptevVV, Вы писали:
LVV>Ну вот прям про архитектуру нет, но мне понравились книжки федора Пикуса и Ивана Чукича. LVV>У Пикуса обнаружил перегрузку лябд, а Чукич — это вообще функциональное программирование на С++. LVV>1. Пикус: https://www.labirint.ru/books/714256/ LVV>2. Чукич: https://www.labirint.ru/books/735552/
Функциональное программирование на C++ — это дикая идея которой не место за пределами академических кругов. Даже модные, как бы функциональные ranges это та ещё засада.
Re: Архитектура и дизайн современных C++ приложений
Здравствуйте, kaa.python, Вы писали:
KP>можно и наверное нужно перечитать, но может что-то посвежее вышло?
Кмк, наверное тебе самом пора что-нибудь написать.
Sic luceat lux!
Re[3]: Архитектура и дизайн современных C++ приложений
KP>Функциональное программирование на C++ — это дикая идея которой не место за пределами академических кругов. Даже модные, как бы функциональные ranges это та ещё засада.
Не согласен.
Напротив, С++20 очень даже позволяет функциональщикам ваять на С++.
Книжку почитай.
Я читал много чего. Эта книжка как-то свежим ветром показалась.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: Архитектура и дизайн современных C++ приложений
Здравствуйте, reversecode, Вы писали:
R>полистал старую версию, 16 года кажется — вода R>стянул полистал 19 года, та же вода
Значит мне не одному так показалось. И от выступлений John Lakos у меня примерно то же самое — говорит много, а информации как-то новой не узнаешь.
R>ощущение что эта книга нужна для деградирующих синьоров что бы с умным видом дискутировать на собеседованиях
Каждый деградирует в меру своих способностей. Не представляю что можно спрашивать на собеседованиях из той книги. Когда следует использовать угловые скобки а когда кавычки в #include директивах? Можно ли использовать только заголовочные файлы без .cpp? Хранить тесты рядом с реализацией или в отдельном каталоге tests? Собирать монолитный кусок из статических библиотек или разбивать подсистемы по динамическим библиотекам?
По-моему, у сеньора, который видел некоторое дерьмо в проектах, любой ответ на собеседовании должен начинаться с "это зависит от ..."
Re[2]: Архитектура и дизайн современных C++ приложений
Здравствуйте, reversecode, Вы писали:
R>стягиваете любой большой опенсорс проект R>и изучаете так что бы на зубок как войну и мир R>и дизайн и архитектура все одном
Можно парочку примеров, или место где "и дизайн и архитектура все в одном", например в OpenSSL?
p.s. Ядро Linux не предлагать — жизни не хватит его изучить на зубок.
Re[3]: Архитектура и дизайн современных C++ приложений
представим, приходите вы на собеседование
а вам — ну ка дизайн и архитектуру опенссл расскажите
а вы — ой ну там %?%?%?%, я вот умную книжку читал...
вам — то есть 99% в мире используют ее, даже с других языков врапперы над опенссл а вы что то имеете против ? до свидания!
умение делать хорошо и правильно выводится из знания о том что такое плохо и не правильно
и согласен, опенссл не есть идеал архитектуры и дизайна
Re[4]: Архитектура и дизайн современных C++ приложений
в разных компаниях по разному воспринимается слово синьор
в некоторых это тот кто может писать на бумажке компилируемый безглючный код
в других это ментор который будет надзирателем и перед мержем в основную ветку высматривать неявные программные и архитектурые ляпы
итд
я сопоставляю вопрос тс его хотелки
и понял как синьор — архитектор
вот и представляем как вы к примеру приходите на собеседование в клаудфаер
и вам с порога — что вы знаете про опенссл ?
а вы — да какая то ?(*?(**?: либа
они — а расскажите нам как работает dtls
вы — да че там рассказывать вон рфц и +100500 либ на гит хабе
они — а как бы вы задизайнили и архитектурно построили свой аналог опенссл ?
вы — да кучу интерфейсов С++ налепил, и разложил это по хидер файликам, а файлики раскидал по отдельным каталогам, а каталоги поиемновал именами интерфесов
это ж удобно?! как в яве +100500 деревовидных вложений
они — спасибо! вы превосходный программист! желаем вам удачной карьеры! мы с вами свяжемся!
пип пип пип пип......
Re[2]: Архитектура и дизайн современных C++ приложений
Здравствуйте, Kernan, Вы писали:
KP>>можно и наверное нужно перечитать, но может что-то посвежее вышло? K>Кмк, наверное тебе самом пора что-нибудь написать.
Думаю что на пенсии. У меня пока что упорства только на выступления на митапах хватает. Там сильно меньше затрат энергии, а отдача высокая