Библиотека C/C++ разработчика | cpp, boost, qt
19.9K subscribers
1.88K photos
55 videos
16 files
4.09K links
Все самое полезное для плюсовика и сишника в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/d6cd2932

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17
Download Telegram
Кто еще считает, что C++ следует разделить на два языка? «C++ Classic» для системного программирования и «C++ Modern» для всего остального?

Ваши мнения пишите в комментариях 👇

Библиотека C/C++ разработчика #междусобойчик
😁19🤔5💯1
Если догадался что загадано, пишите ответ в комментах 👇

Библиотека C/C++ разработчика #memes #междусобойчик
🎉3
📱 Кроссплатформенная разработка: что предпочитаете?

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

А) Нативные решения для каждой платформы
Б) Фреймворки типа Qt/wxWidgets
В) Веб-технологии (Electron и подобные)
Г) Flutter/React Native для мобильных
Д) Другой подход

✍️ Расскажите о своем опыте с выбранным подходом. С какими проблемами столкнулись? Что порекомендуете новичкам?

Библиотека C/C++ разработчика #междусобойчик
👍5
🔎 Может среди нас есть любители кроссвордов?

👋 Привет, кодеры. Сегодня у нас небольшой челлендж для C++ разработчиков.

Разгадай наш тематический кроссворд и проверь, насколько хорошо ты знаешь любимый язык программирования! 🤓

По горизонтали:
1. Контейнер типа «ключ-значение»
3. Тип данных для хранения текста
4. Пользовательский тип данных, объединяющий разные переменные

По вертикали:
2. Способность объектов с одинаковым интерфейсом иметь различную реализацию

P.S. Слова на английском языке

Библиотека C/C++ разработчика #междусобойчик
🥱7👍3🔥1
🙀 Айти индустрию штормит или куда податься программисту?

В связи с последними новостями из мира разработки, а именно тем что сейчас происходят массовые увольнения по всему миру решили обсудить с нашей аудиторией данный вопрос.


👀 Что происходит на рынке?

Крупные техногиганты объявляют о сокращениях: Meta, Amazon, Google, Microsoft и десятки других компаний расстаются с тысячами сотрудников. Причины разные — экономическая неопределенность, переоценка приоритетов после пандемии, избыточное найм в период бума.


🥹 Но есть и хорошие новости:

🔹 Спрос на опытных разработчиков остается высоким — увольняют в основном джуниоров и мидлов
🔹Растут новые ниши: ML, кибербезопасность, блокчейн, зеленые технологии
🔹Удаленная работа открыла глобальный рынок — можно работать на компании из любой точки мира
🔹 Стартапы активно нанимают — пока гиганты сокращают, малый бизнес ищет таланты


🤓 Куда двигаться программисту в 2025?

Прокачивать soft skills — в условиях конкуренции важно уметь общаться и работать в команде
Изучать ИИ-инструменты — ChatGPT, GitHub Copilot и аналоги становятся must-have
Диверсифицировать навыки — fullstack, DevOps, аналитика данных ценятся выше узких специалистов
Строить личный бренд — блог, GitHub, выступления помогают выделиться среди кандидатов
Рассматривать нетех сферы — банки, ретейл, медицина тоже нуждаются в программистах


😇 Главное — не паниковать!

IT остается одной из самых перспективных отраслей. Кризис — это возможность переосмыслить карьеру и выйти на новый уровень.

А что думаете вы? Чувствуете ли влияние кризиса на себе? Поделитесь в комментария. 👇

P.S. Напоминаем, вы можете спросить сообщество библиотеки  C++ разработчика и не только! Самые интересные вопросы обязательно опубликуем.

Библиотека C/C++ разработчика #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👏2😁2👍1
😈 Как правильно обрабатывать ошибки?

Как правило разработчики делятся на два типа, те кто поддерживают исключения и те кто за ручную обработку ошибок.

🎯 Exception team:
• Чистый код без проверок на каждом шаге
• RAII + exceptions = идеальное сочетание
• Стандартный C++ подход
• Exception safety гарантии

📋 Error codes army:

• Предсказуемая производительность
• Нет hidden control flow
• Embedded-friendly
std::expected в C++23 спасет мир

GOOGLE STYLE: Exceptions запрещены, только error codes!

РЕАЛЬНОСТЬ: В высоко нагруженных приложениях exceptions = смерть, в обычном коде — удобство.

А ты из какого лагеря? И сколько раз ловил std::bad_alloc в production?

Библиотека C/C++ разработчика #междусобойчик
😁7
❤️ Деньги vs Любимая работа

Болезненная тема: высокая зарплата в нелюбимой сфере vs любимая работа за копейки 😰


Пути развития:

HFT/Trading: высокая зарплата, но адский стресс и legacy код
GameDev: творчество, но crunch и нестабильность
Enterprise банки: скучно, но стабильно
Open Source: мало платят или вообще бесплатно

Можно уйти из большой компании с хорошим доходом и делать игры. Жить на сбережения, потом выпустить хит в Steam и зарабатывать больше банкира, но это путь через ад😈

С другой стороны, можно сидеть я в корпорации, поддерживая легаси-код. Зарплата хорошая, но каждый день — страдание. Шанс выгорания близок к 100%🔥

Если ты не готов страдать за код — ты в неправильной профессии. Но страдать от плохого кода или от низкой зарплаты?

Опрос: Что выберешь в карьере C++ разработчика?

🔥 Высокую зарплату
❤️ Любимую работу
🤔 Компромисс (средняя зарплата + интерес)
🌚 Сначала деньги, потом любовь

Библиотека C/C++ разработчика #междусобойчик
🤔27🔥18🌚98👍1
Что мы загадали в ребусе ?

Угадай слово и напиши в комментариях 👇


Библиотека C/C++ разработчика #междусобойчик
🤩2
⚠️ Debugging: инструменты для поиска багов

Для C++ инструменты помогающие находить и исправлять ошибки имеют такое же значение, как и само написание кода. Сама же отладка превращается в искусство, которое призвано заставить код работать не только быстро, но и выполнять возложенные на него задачи.

Делимся арсеналом инструментов для разных типов багов.

Memory issues:

• Valgrind (Linux/Mac) — поиск утечек и ошибок доступа
• AddressSanitizer (-fsanitize=address) — встроенный в GCC/Clang
• Dr. Memory (Windows)

Performance:

• gprof — профайлинг CPU
• perf (Linux) — системное профилирование
• Intel VTune — продвинутое профилирование

Thread issues:

• ThreadSanitizer (-fsanitize=thread)
• Helgrind (Valgrind tool)

Static analysis:

• clang-static-analyzer
• PVS-Studio
• PC-lint Plus

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

🔍 Какие инструменты для отладки используете чаще всего? Есть любимые фишки?

Библиотека C/C++ разработчика #междусобойчик
6👾5
⌨️ Tabs vs Spaces: Эпическая битва

Silicon Valley не врал: вопрос tabs vs spaces действительно может разрушить команду 😄


Но давайте честно: в 2025 году спорить про это — все равно что обсуждать, какой редактор лучше, Vim или Emacs. Есть clang-format, есть .editorconfig, проблема решена.

НО! Есть нюанс для C++. Когда ты смотришь на сложный template код с nested типами, правильные отступы — это не просто эстетика, это читаемость, но это не точно:

// С табами (размер 4):
template<typename T>
→ requires std::integral<T>
→ → && (!std::same_as<T, bool>)
constexpr auto process(T value) noexcept {
→ return value * 2;
}


// С пробелами:
template<typename T>
requires std::integral<T>
&& (!std::same_as<T, bool>)
constexpr auto process(T value) noexcept {
return value * 2;
}


Исторический факт: Bjarne Stroustrup использует пробелы. Это же закрывает спор? 😉


😈 А что используешь ты?

🔥 Tabs (настоящий программист)
❤️ Spaces (как в Google Style Guide)
🤔 Что настроил IDE (мне все равно)
🌚 Вообще без отступов (хардкор)

Библиотека C/C++ разработчика #междусобойчик
53🔥36🤔6🌚1
Загадка: Я рождаюсь без имени, живу без тела, умираю без памяти. Меня нельзя позвать, но я всегда прихожу. Что я такое?

😼 Ответ пиши в комментариях.

Библиотека C/C++ разработчика #междусобойчик
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 Многопоточность в C++: почему std::thread до сих пор популярнее coroutines?

C++20 дал нам coroutines, но посмотрите на любой проект — везде std::thread и std::async. Совпадение? Не думаю!


Жесткая правда:

std::thread — понятно, работает везде
std::async — удобно для простых задач
🤷 coroutines — мощно, но никто не понимает как

Реальный кейс: переписывал сетевой сервер с threads на coroutines. Результат? -30% производительности, +200% времени на отладку.

Непопулярное мнение: Coroutines в C++20 — это недоделанная фича. В Rust и Go сделали лучше.

// 2025 год, а мы все еще пишем:
std::thread t([]{
// do work
});
t.join();


👇 А что думаете вы? Какой подход используешь в продакшене? Что выбираешь для новых проектов?

🔥 std::thread (надежно и понятно)
👏 std::async (просто и элегантно)
❤️ coroutines (будущее уже здесь)
👾 thread pool библиотеки (практично)

Библиотека C/C++ разработчика #междусобойчик
🔥30👾10👏63🥱1
💬 Истории подписчиков: Google Test vs Catch2 vs собственный framework

Недавно один из читателей поделился своей историей — возможно, она откликнется и вам:

Работаю над embedded системой на C++, нужно покрыть тестами критичный код. Использую Google Test уже два года, но начинаю сомневаться в выборе. Фреймворк тяжелый, долго компилируется, плюс не всегда удобно для embedded разработки.

Попробовал Catch2 — понравилось! Header-only, быстрая компиляция, красивые assertion'ы. Но есть проблема: на некоторых микроконтроллерах не хватает памяти для всех template instantiation'ов.

Коллега использует doctest — еще более легковесный, но менее функциональный. Много чего нету. Есть еще Boost.Test, но это еще одна зависимость.

Думаю о том, чтобы написать минималистичный тест фреймворк именно под embedded. Но боюсь, что это будет изобретение велосипеда по новой, и потрачу время на то, что уже решено.


🤔 А вы какой фреймворк используете в своих проектах?

Библиотека C/C++ разработчика #междусобойчик
❤‍🔥43🔥2🤩1
Загадка: Я не член семьи, но мне доверяют семейные секреты. Я могу войти в дом без стука. Кто я?

😼 Ответ пишите в комментариях.

Библиотека C/C++ разработчика #междусобойчик
3
🚀 C++17: structured bindings

Structured bindings в C++17 — это не просто красивый синтаксис, это читаемость кода на новом уровне!


// Старый способ (до C++17)
std::map<std::string, int> counts;
for (auto it = counts.begin(); it != counts.end(); ++it) {
std::cout << it->first << ": " << it->second << std::endl;
}

// C++17 structured bindings
for (const auto& [key, value] : counts) {
std::cout << key << ": " << value << std::endl;
}

// Работает с парами, tuple, массивами
auto [x, y, z] = std::make_tuple(1, 2.5f, "hello");
auto [min, max] = std::minmax({5, 2, 8, 1, 9});



Код стал намного читаемее. Особенно полезно при работе с контейнерами пар и функциями, возвращающими несколько значений.


🧠 Используете ли вы structured bindings? В каких случаях они наиболее полезны?

Библиотека C/C++ разработчика #междусобойчик
👍11🔥9