TGViewer
Channel Public Channel
C++ Moscow

C++ Moscow

@cppmoscow_info

Информационный канал московского сообщества программистов на C++

Чат: @cppmoscow_chat
Бот обратной связи: @cppmoscow_bot
Организатор: @eoanermine
Subscribers
448
Photos
6
Videos
0
Links
66

Showing posts older than #81 · Back to latest

Older Posts 19 shown
Post #80 635
#meetup

Митап стартует уже сегодня в 15:20
(именно в 15:20, не в 14:30, как написано в LeaderID) и мы ждём всех: как онлайн-участников, так и тех, кто успел зарегистрироваться для посещения оффлайн!

15:20–18:00, Малый Конюшковский переулок, д. 2 (1 этаж)

Все дальнейшие обновления касательно нашей встречи будут публиковаться в комментариях к этой записи.
Так что заходите в наш чат, чтобы ничего не пропустить!
  • 🔥 7
Post #78 683
#meetup

Так как наш митап пройдет уже в это воскресенье, мы делимся подробностями для всех, зарегистрировавшихся на него для посещения оффлайн!

C++ Moscow №2 пройдет 19 ноября (Вс) с 15:20 до 18:00 на площадке Точки кипения (Малый Конюшковский переулок, 2), добраться до которой проще всего по Таганско-Краснопресненской (фиолетовой) или Кольцевой (коричневой) линии: до Баррикадной или Краснопресненской соответственно (см. прикрепленные фотографии).
Парковки рядом с площадкой присутствуют, но только платные (от 380 рублей за час и выше).
На самой площадке будет доступен гардероб, кулеры с водой и уборные

Ждём вас на C++ Moscow №2!
Если остались вопросы, не стесняйтесь, спрашивайте, с удовольствием ответим на них в комментариях!
  • 🔥 9
  • 👍 1
Post #77 679
C++ Moscow #meetup ⠀Наш митап состоится уже через 4 недели, 19 ноября (Вс) с 15:20 до 18:00 по адресу Москва, Малый Конюшковский переулок, д. 2 (оффлайн + онлайн трансляция докладов), и мы готовы огласить список запланированных активностей: 1. Доклад: Корутины и Qt.…
#meetup

Наше последнее напоминание 😉

C++ Moscow №2 пройдет уже на этой неделе, и если вы собираетесь посетить его очно и ещё не зарегистрировались — самое время это сделать, иначе вы не сможете попасть на митап.

Если же вы планируете участвовать онлайн — регистрироваться не нужно, трансляция пройдет на нашем YouTube канале.
  • 🔥 9
Post #76 775
#resources #books #optimization

Optimizing software in C++. An optimization guide for Windows, Linux, and Mac platforms (Agner Fog)

Один из наиболее исчерпывающих трудов, посвященных оптимизации программ на C++, рассматривающий как общие вопросы: что вообще в типичном приложении больше всего жрёт? Так и более частные (не исчерпывающиеся приведенными далее): во сколько на самом деле нам обходится использование различных конструкций C++? Какие компиляторы какие оптимизации умеют делать и как мы можем помочь им лучше соптимизировать наш код?
Как мы можем оптимизировать доступ к памяти? Как писать код так, чтобы он мог автоматически векторизоваться компилятором?

При этом автор самостоятельно знакомит читателя (ожидая от него лишь хорошее понимание C++) со всем необходимым понятийным аппаратом: как работает предсказатель ветвлений, как в процессорах организованы кэши — всё это объясняется очень доступно, так что Optimizing software in C++ можно порекомендовать всем: если вам не безразличен performance ваших программ — в этой книге вы точно найдете что-то новое и полезное

Скачать
  • 🔥 14
Post #75 585
#quiz #explanation #cpp23

Конечно, это очень странный код и писать подобное в проде недопустимо. Но если говорить о его нормативном статусе, то тут есть нюансы.

В C++20 этот код корректен: согласно [
class.temporary#6], время жизни std::vector<int>{42, 17, 13}, являющегося временным объектов, продлевается до конца цикла for, так что мы можем безопасно по нему итерироваться. Временный же объект std::scoped_lock{m} создается и сразу уничтожается: для него не применимо ни одно из правил продления жизни.

В C++23 же существующее поведение было изменено:
P2644R1 добавил в стандарт следующий пункт:

> There are three four contexts in which temporaries are destroyed at a different point than the end of the full-expression. ...

> The fourth context is when a temporary object other than a function parameter object is created in the for-range-initializer of a range-based for statement. If such a temporary object would otherwise be destroyed at the end of the for-range-initializer full-expression, the object persists for the lifetime of the reference initialized by the for-range-initializer.

То есть, теперь времена жизни всех (за незначительными исключениями) объектов, созданных в инициализаторе range-based for, продлеваются до конца цикла. Так что если рассматривать приведенный выше код: мы создаем временный объект
std::scoped_lock{m}, чье время жизни продлевается до конца цикла; после чего создаем временный объект std::vector<int>{42, 17, 13}, время жизни которого продлевается так же; и дальше в цикле на первой же итерации создаем новый объект std::scoped_lock guard{m}, захватывающий мьютекс, который уже был захвачен предыдущим std::scoped_lock — и тем самым получаем состояние взаимной блокировки (deadlock), которое стандартом определяется как неопределенное поведение.
  • ❤ 3
  • 👍 3
  • 🔥 1
Post #72 584
#quiz

Корректен ли код, приведенный ниже? Делитесь своими мыслями в комментариях! Правильный ответ и его объяснение будут опубликованы в 18:00 по Москве.

void f()
{
std::mutex m;
for (int x : static_cast<void>(std::scoped_lock{m}), std::vector<int>{42, 17, 13})
{
std::scoped_lock guard{m};
}
}
  • 🔥 5
Post #71 592
#meetup

Наш второй митап состоится уже чуть меньше чем через две недели, 19 ноября (Вс) с 15:20 до 18:00 по адресу Москва, Малый Конюшковский переулок, д. 2 (оффлайн + онлайн трансляция докладов)

Запланированные активности:
1. Доклад: Корутины и Qt. Библиотека QCoro
2. Доклад: ООП в Clickhouse
3. Конкурс по мотивам C++ Quiz

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

Регистрируйтесь и приходите на наш митап, будет классно!
Leader-ID Встреча московского сообщества программистов на C++ Бесплатные мероприятия и коворкинги в вашем городе. Leader-ID помогает работать, учиться и находить единомышленников.
  • 🔥 5
  • ❤ 2
Post #70 504
#conferences

Бувально на днях стали известны даты и началась продажа билетов на C++ Russia 2024, крупнейшую российскую конференцию для C++ разработчиков. Ее онлайн часть пройдет 15 мая, а оффлайн (с трансляцией докладов) 22-23 мая в Москве. Темы докладов пока что неизвестны: прием заявок на них был только открыт, но покупку билетов лучше не откладывать — мало того, что они не из дешевых, так и каждый месяц дорожают, причем довольно существенно. И хорошо, если вам их сможет оплатить работодатель, но если это не вариант — с промокодом CPPRussiaAttendeePV вы можете купить билет со скидкой 25%.

А были ли вы на какой-нибудь из прошлых конференций C++ Russia, и планируете ли посетить C++ Russia 2024?
  • 👍 9
  • 🔥 4
  • 😐 1
Post #69 587
#resources #education #courses

Плюсовиками не рождаются, плюсовиками становятся. И наше сообщество радо помочь всем в этом становлении нашей новой рубрикой: учебные материалы (#education).

C++ базовый курс, MIPT, 2021-2022 (Константин Владимиров)

Если с чего и начинать — то с одного из самых популярных и объективно лучших русскоязычных базовых курсов по C++. Он не рассчитан на абсолютных новичков: предполагается начальное понимание C, но очень хорошо структурирован: изложение методично идет от таких базовых понятий как указатели и ссылки до метапрограммирования, constexpr функций и концептов (кроме того, в курсе есть отдельные лекции, посвященные OpenGL, Vulkan, LLVM); глубок и блестяще, интересно и нескучно изложен.
Так что он может быть полезен не только начинающим, но и всем желающим освежить память и структурировать свое понимание плюсов.

Список ссылок: канал, плейлист (youtube), слайды
  • 🔥 8
  • 👍 4
  • 🤡 3
  • ❤ 1
Post #68 513
#digest

Подборка самых интересных новостей и материалов из мира C++ за последние две недели (16 октября – 29 октября 2023)

Читать далее на Хабре
  • 🔥 5
Post #67 573
#cpp23 #clang

Хорошие новости! В clang 18 наконец-то реализовали P0847R7 Deducing this. Однако пока что только в экспериментальном режиме: макрос __cpp_explicit_this_parameter в этом версии установлен не был

Что это нововведение нам даёт? Если раньше мы хотели реализовать один метод с четырьмя разными ref-квалификаторами, то нам приходилось так или иначе писать практически один и тот же код четырежды. (см. пикрелейтед)

Теперь же мы можем избежать необходимости подобного дублирования, подчинив для этого привычный механизм выведения типов:

template <typename Self>
constexpr auto&& value(this Self&& self) {
if (!self.has_value()) {
throw bad_optional_access();
}
return forward<Self>(self).m_value;
}

Более подробно про deducing this в статье по ссылке
  • 🔥 7
  • 👍 2
Post #66 548
#proposals #resources

Возвращаясь к интересным новостям: недавно комитет по стандартизации C++ опубликовал предложенные за последний месяц пропозалы.

Из наиболее примечательного:
1. Продолжение работы над std::hive: был обновлен раздел, касающийся constexpr; внесено множество изменений в описание асимптотической сложности операций.
2. С учётом всех замечаний LEWG был обновлен P0876 fiber_context - fibers without scheduler, прокладывающий более широкий путь в наше светлое корутинное будущее: в частности, предлагающий базовые абстракции для реализации stackful корутин.
3. Виктор Зверович, известный продвижением std::format в стандарт, всё не находит покой, и теперь предлагает аналогичные безопасные функции, испольщующие все прелести constexpr, но для разбора строк:

if (auto result = std::scan<std::string, int>("answer = 42", "{} = {}")) {
const auto& [key, value] = result->values();
// key == "answer", value == 42
}

И дальше, более коротким, но далеко не исчерпывающим списком: Contracts for C++ (ставящий высокую цель наконец-то ввести в язык аннотации контрактов); A New Approach For Compiling C++ (захватывающий дух бенчмарками, показавшими увеличение скорости компиляции на 25–40%); optional<T&> (намеренное заделать ранее намеренно оставленную брешь), Reflection for C++26 (упрощающий рефлексию максимально, чтобы у нее был шанс пройти в C++26), Low-Level Integer Arithmetic (предлагающий не влекущие UB библиотечные функции для выполнения базовых арифметических операций) и UFCS (описывающий единый синтаксис вызовов функций и методов)

А какие из этих пропозалов кажутся наиболее интересными вам? Или каких полезных фич, по вашему мнению, в этом списке не хватает? Присоединяйтесь к обсуждению в комментариях!
  • 🔥 10
Post #64 809
#meetup

⠀
Наш митап состоится уже через 4 недели, 19 ноября (Вс) с 15:20 до 18:00 по адресу Москва, Малый Конюшковский переулок, д. 2 (оффлайн + онлайн трансляция докладов), и мы готовы огласить список запланированных активностей:

1. Доклад: Корутины и Qt. Библиотека QCoro
2. Доклад: ООП в ClickHouse
3. Конкурс по мотивам C++ Quiz

И, конечно, вас будут ждать вкусные напитки и интересное общение 😉
Если вы планируете посетить мероприятие оффлайн, то вам необходимо зарегистрироваться на него по ссылке, иначе вы не сможете на него попасть.

Остались вопросы? Пишите в комментарии, на все ответим!
Leader-ID С++ Moscow №2 Бесплатные мероприятия и коворкинги в вашем городе. Leader-ID помогает работать, учиться и находить единомышленников.
  • 🔥 9
  • 👍 2
Post #62 648
Finally!

В CMake (3.28+) наконец-то реализовали поддержку модулей!

Кроме новейшего CMake вам также потребуются новейшие компиляторы: msvc 14.34+, clang 16+, gcc 14+

Подробнее по ссылке
  • 🔥 10
Post #61 696
ООП в ClickHouse

Паттерны проектирования. О них все слышали, их все используют (надеемся). А давайте посмотрим на них в реальном проекте? Как они помогают понизить связанность компонентов и реализовать принцип SOLID? Как помогают разобраться в незнакомом коде?

В докладе мы разберём использование объектно-ориентированных паттернов не в простом веб-приложении, а в СУБД. Это один из самых известных C++ проектов с открытым исходным кодом — ClickHouse
  • 🔥 9
Post #60 595
Ровно месяц остался до нашей встречи! И мы не можем не представить оставшийся запланированный доклад:  Дмитрий Косенко расскажет и покажет, как паттерны проектирования применяются в реальном коде. На примере ClickHouse!
  • 🔥 9
Post #59 555
#digest

Подборка самых интересных новостей и материалов из мира C++
за последние две недели (2 октября – 15 октября 2023)

Читать далее на Хабре
  • ❤‍🔥 6
  • ❤ 3
  • 👍 1
  • 🔥 1
Post #58 492
Корутины и Qt. Библиотека QCoro

Qt появился уже почти 30 лет назад. Хотя фреймворк и сейчас поддерживается и получает крупные обновления как от разработчиков, так и от комьюнити, его событийно-ориентированная система заставляет нас использовать вереницы коллбеков или множество вложенных лямбд и на сегодняшний день выглядит достаточно громоздко в сравнении с другими языками и даже библиотеками C++ (привет, userver).

Библиотека QCoro призвана привнести возможности корутин в событийную систему Qt и позволить избежать описания лишнего кода, одноразовых функций и логики перекладывания данных из метода в метод.

Библиотека не ломает обратную совместимость. Все старые классы, по типу QNetworkManager, QFuture или классов IO-системы полностью совместимы с QCoro. Достаточно лишь заменить QObject::connect с коллбеком на co_await и узреть магию.

При этом библиотека надёжна и признана мировым сообществом. Например, она входит в официальные репозитории (extra) для Manjaro Linux, а значит, проходит несколько этапов проверок прежде, чем попасть в эти репозитории.
  • 🔥 9
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →