Проблема не в системе сборки как таковой, мне не трудно скопом добавить все исходники из /src/ в свою систему сборки. Источник проблем — запутанная, сложная, непонятная конфигурация с кучей макросов и/или условным включением файлов.
Так что да, мой выбор №1 — header-only библиотека, а №2 — отказ от библиотеки с нетривиальной сборкой.
Чем неудачный? Этот код нарушает правила языка С++, это не код валидной программы на С++. Пример очень жизненный и правильный, мне всё время приходится держать это в уме и иногда писать более сложный и чуть менее оптимальный код, чтоб не нарушать это правило.
Насколько я понимаю, обращения с р как со структурой — чтение и запись полей — невалидны, потому что эта структура никогда не была сконструирована (не вызвался конструктор, the lifetime of an object has not started). Поэтому такие обращения невалидны, и если компилятор может быть уверен, что конструирования не было, он вправе выкинуть эти обращения вообще, или предположить, что значения полей имеют константное значение, удобное для оптимизации, или предположить, что этот код вообще никогда не может быть фактически вызван, или сгенерировать UD2… Вариантов много, и они вызывают разное непонятное и непредсказуемое поведение.
Как я себе представляю, модули более замкнутные, их побочные эффекты и влияние на остальной код минимизировано, интерфейс более очевиден, кишки реализации не торчат наружу. Разве это не сделает библиотеки более модульными, а значит, удобными в использовании?
Ranges — просто библиотека, хоть и классная, могла бы появиться ещё в 11. Поправьте, если ошибаюсь.
Concepts — отлично для шаблонного кода, но не позволяет делаеть ничего нового, чего нельзя было бы раньше. Тоже поправьте, если что.
Модули — поверю, когда увижу, что подключение новых 3rdparty библиотек перестало быть болью в голове и заднице :)
Корутины — прикольно, но специфично, запутанная фича для написания запутанного кода с неочевидным control flow. И, помню, в предыдущих TS недоставало реализации каких-то классов, когда компиляторы уже поддерживали корутины. В С++20 всё нужное будет из коробки?
Насчёт оптимизации и отлаженности готовых инструментов полностью согласен, но вот именно отлаживать сами bash скрипты порой очень непросто, и всегда весьма неприятно.
Windows 7 была хороша на своё время, но Windows 10 намного удобнее во многих мелочах. И непонятно, зачем эти отсылки к вашему предполагаемому авторитету, и как знание фреймворков даёт вам право за всех остальных решать, как из версий Windows лучшая. Чистая демагогия.
Только потому, что иметь своё мнение, которое можешь обосновать, и не бояться называть идиотов идиотами, сейчас называется «быть токсичным».
Далеко не во всём согласен с Линусом, не разделяю его идеологию и некоторые технические решения, но уважаю как разработчика и как человека за нетерпимость к буллшиту. Нужно больше таких людей, не только в ИТ, а везде.
Про врожденное качество не верю. Грамотность — показатель интеллекта и памяти. Если человек пишет неграмотно, у него либо проблемы с логикой и/или памятью, либо ему пофиг. И то, и другое характеризует его с негативной стороны.
Лично я из своего опыта общения с разными людьми могу сделать вывод, что слова путаются у тех людей, у которых такие же путаные мысли.
Хех. Я тоже очень долго чинил своё приложение под Андроид 9, а потом под 10. Месяц, наверное. Там много нововведений, которые могут сильно сломать приложение (заставить существенно переделывать большие порции кода).
Не помню, уже сколько там науки (скорее всего, маловато), но мне дико понравился фильм Upgrade, советую всем любителям Sci-Fi.
И ещё экранизацию реальных событий "Аполлон 13".
ИМХО абсолютно не интуитивно.
В школе научился собирать кубик 3х3 по статьям из «Науки и жизни», собрал по бумажке такое количество раз, что случайно всё выучил (цели такой не ставил). ПОтом забросил, всё забыл. Недавно захотелось вспомнить — и не получается, очень сложно идёт.
Так вот: единственное понятное и интуитивное объяснение принципа сборки кубика я увидел всего неделю назад вот здесь:
VS Code — отличная IDE для того, что в ней работает. Но вот когда понадобилось просто собрать все.срр файлы в папке и запустить на них указанный мной кастомный С++ компилятор с кастомными параметрами, я это в Code настроить не смог. Удалось только в Qt Creator, и то только через дурацкий CMake + ninja. А по этой статье, наверное, получилось бы как я хотел — напрямую, без лишнего хлама.
И это даже грустно, что экспоненциальный рост производительности железа (а с ним — и требовательности софта) уже в прошлом.
У меня, кстати, явно больше 40% ёмкости батареи осталось, больше похоже на 75%. Может, потому, что она довольно большая (4000 мА*ч), а пользуюсь я не очень активно. Раньше заряжал раз в 6-7 дней, сейчас раз в 4-6 :)
Нынешним смартфоном пользуюсь 4 года с лишком, из возможных причин для замены вижу только NFC, и, возможно, quick charge. Притом, что он даже в момент покупки в 2015 был бюджетным.
Так что да, мой выбор №1 — header-only библиотека, а №2 — отказ от библиотеки с нетривиальной сборкой.
Concepts — отлично для шаблонного кода, но не позволяет делаеть ничего нового, чего нельзя было бы раньше. Тоже поправьте, если что.
Модули — поверю, когда увижу, что подключение новых 3rdparty библиотек перестало быть болью в голове и заднице :)
Корутины — прикольно, но специфично, запутанная фича для написания запутанного кода с неочевидным control flow. И, помню, в предыдущих TS недоставало реализации каких-то классов, когда компиляторы уже поддерживали корутины. В С++20 всё нужное будет из коробки?
Далеко не во всём согласен с Линусом, не разделяю его идеологию и некоторые технические решения, но уважаю как разработчика и как человека за нетерпимость к буллшиту. Нужно больше таких людей, не только в ИТ, а везде.
Лично я из своего опыта общения с разными людьми могу сделать вывод, что слова путаются у тех людей, у которых такие же путаные мысли.
И ещё экранизацию реальных событий "Аполлон 13".
В школе научился собирать кубик 3х3 по статьям из «Науки и жизни», собрал по бумажке такое количество раз, что случайно всё выучил (цели такой не ставил). ПОтом забросил, всё забыл. Недавно захотелось вспомнить — и не получается, очень сложно идёт.
Так вот: единственное понятное и интуитивное объяснение принципа сборки кубика я увидел всего неделю назад вот здесь:
У меня, кстати, явно больше 40% ёмкости батареи осталось, больше похоже на 75%. Может, потому, что она довольно большая (4000 мА*ч), а пользуюсь я не очень активно. Раньше заряжал раз в 6-7 дней, сейчас раз в 4-6 :)