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

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

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

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

РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17
Download Telegram
🎵 Readability checks — код для людей

Категория readability-*, в линтере clang-tidy, следит за стилем, именованием и общей читаемостью. Как code review, но автоматический.


🍴 Пример naming conventions:

// Плохо:
class myClass { // нарушение стиля
int M_Data; // венгерская нотация
void DO_SOMETHING(); // UPPERCASE для функций
};

// Хорошо:
class MyClass { // PascalCase для классов
int m_data; // единый стиль
void doSomething(); // camelCase для методов
};



✏️ Конфигурация naming:

CheckOptions:
- key: readability-identifier-naming.ClassCase
value: CamelCase
- key: readability-identifier-naming.PrivateMemberPrefix
value: m_
- key: readability-identifier-naming.FunctionCase
value: camelBack
- key: readability-identifier-naming.ConstantCase
value: UPPER_CASE
- key: readability-identifier-naming.NamespaceCase
value: lower_case



🥳 Другие проверки:

// 1. Magic numbers
const int SIZE = 100; //
int arr[100]; // magic number

// 2. Complex условия
if (a && b || c && !d && (e || f)) { //
}

bool condition = a && b || c && !d && (e || f);
if (condition) { // Выносим в переменную
}

// 3. Длинные функции
void process() {
// 200 lines of code //
}
// readability-function-size предупредит

// 4. Implicit conversions
int x = 3.14; //
int x = static_cast<int>(3.14); //



‼️ Популярные проверки:

Checks: >
readability-identifier-naming,
readability-magic-numbers,
readability-function-size,
readability-simplify-boolean-expr,
readability-else-after-return,
readability-braces-around-statements,
readability-implicit-bool-conversion


💡 Best practice: Договорись о naming convention в команде и зафиксируй в .clang-tidy.


🐤 Какой naming convention у тебя?


🔹 Курс «Алгоритмы и структуры данных»
🔹 Получить консультацию менеджера
🔹 Сайт Академии () 🔹Сайт Proglib


Библиотека C/C++ разработчика

#константная_правильность
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥72👍1
🔥 На рынке сейчас математика — снова король: AI растёт быстрее, чем вузы успевают обновлять программы. Мы же перестраиваем курс под индустрию мгновенно.

Хочешь наконец разобраться в математике для DS, а не гуглить «что такое градиент» перед собесом?

Новый курс «Математика для разработки AI-моделей» — это 8 недель плотной подготовки, свежая программа и только актуальные темы, которые реально нужны в ML.

Что в курсе:

→ линал, производные, градиенты, вероятности, статистика;
→ практика на Python и 3 большие ДЗ;
→ живые вебинары + разбор ваших вопросов;
→ финальный мини-проект, который можно положить в портфолио;
→ доступ к материалам и чат с экспертами.

Для старта нужны только школьная математика и базовый Python.

🎁 Бонусы ноября:

— скидка 40% до 30 ноября;
— «Базовая математика» в подарок при оплате;
→ бесплатный тест уровня математики.

👉 Записывайся на курс
😁1
⚙️ Auto-fix может сломать код

Clang-Tidy умеет автоматически исправлять найденные проблемы через флаг --fix. Звучит заманчиво, но это мина замедленного действия.

Инструмент может заменить raw pointer на smart pointer, но не учтёт семантику владения в вашей кодовой базе. Или «исправит» цикл, изменив логику работы программы.

Auto-fix хорош для механических изменений: замена NULL на nullptr, добавление override, форматирование. Для сложных рефакторингов — только manual review каждого изменения.

Золотое правило: запускайте --fix на отдельной ветке, прогоняйте все тесты, делайте code review автоматических изменений.

😏 А вы доверяете автоматическим исправлениям или проверяете каждое изменение вручную?

🔹 Курс «Алгоритмы и структуры данных»
🔹 Получить консультацию менеджера
🔹 Сайт Академии🔹Сайт Proglib

Библиотека C/C++ разработчика

#междусобойчик
👍71
🐸 Подборка вакансий для C++-разработчиков за неделю

C++ разработчик (Trading / Low Latency) — от 500 000 ₽ Удалёнка, гибрид (Москва)

C++ разработчик в Ads Core — Удалёнка

Разработчик инфраструктуры (Алиса) — от 220 000 и до 490 000 ₽ Гибрид (Москва)

Разработчик C++ / Rust (SDN dataplane, DPDK/DOCA API) — Удалёнка, гибрид (Москва)

C++ Developer Senior — от 254 000 и до 315 000 ₽ Удалёнка


🤌 Бонусы для подписчиков:
Скидка 40% на все курсы Академии
Розыгрыш Apple MacBook
Бесплатный тест на знание математики


Библиотека C/C++ разработчика
😁1
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 Хочешь строить свои AI-модели, а не просто запускать чужие?

Proglib.academy открывает курс «Математика для разработки AI-моделей» — программу, которая превращает понимание ML из «черного ящика» в осознанную инженерную работу.

📌 Почему без математики в AI никуда:

→ Чтобы пройти собеседование. Это первый фильтр: линал, матстат, оптимизация — спрашивают везде.
→ Чтобы понимать процесс изнутри. Инженер AI должен понимать, почему и как работает модель, а не просто жать fit().

🎓 Что будет на курсе:

→ 3 практических задания на Python + финальный проект с разбором от специалистов;
→ программа обновлена в ноябре 2025;
→ за 2 месяца пройдёшь весь фундамент, нужный для работы с моделями;
→ преподаватели — гуру математики, методисты и исследователи из ВШЭ и индустрии.

🎁 Бонусы ноября:

— 40% скидка;
— получаешь курс «Школьная математика» в подарок;
— короткий тест и узнать свой уровень.

🔗 Подробнее о курсе
1😁1
📰 Свеженькое из мира C++

Подготовили подборку самых интересных материалов за неделю о разных аспектах программирования и интересных проектах в мире C++.

😎 Полезное:

Перестаньте ждать, пока вас найдут — полезные советы по поиску работы
Как защитить себя от увольнения — способы избежать преждевременного увольнения
Inline static в классах — альтернативный способ инициализации static переменных появившийся в C++17
Типичные ошибки со structured bindings — список наиболее популярных ошибок при использовании structured bindings
Как zip итерирует несколько ranges одновременно без накладных расходов? — практический пример использования функции zip
Readability checks — пример использования clang-tidy для отслеживания правильного именования классов, методов и переменных

🤌 Бонусы для подписчиков:
Скидка 40% на все курсы Академии
Розыгрыш Apple MacBook
Бесплатный тест на знание математики

Библиотека C/C++ разработчика

#свежак
3👍1
⚙️ ObjectBox: встраиваемая БД для C/C++, которая реально быстрая

Если вы устали от SQLite и ищете что-то более производительное для мобильных приложений или IoT-устройств — взгляните на ObjectBox.

📕 Что это за зверь?

Объектно-ориентированная встраиваемая база данных с открытым исходным кодом. Написана на C, но имеет отличные биндинги для C++.

Почему это интересно:

On-device векторная БД — управление векторными данными и быстрый vector search из коробки
Минимальные ресурсы — бинарник всего ~1 МБ, идеально для IoT-шлюзов, микроконтроллеров, ECU
Встроенные связи — отношения между объектами работают нативно
Статическая типизация — проверки и оптимизации на этапе компиляции
Автоматические миграции схемы — никаких update-скриптов
ObjectBox Sync — синхронизация данных между устройствами и серверами

👉 GitHub

🤌 Бонусы для подписчиков:
Скидка 40% на все курсы Академии
Розыгрыш Apple MacBook
Бесплатный тест на знание математики

Библиотека C/C++ разработчика

#буст
👍3❤‍🔥2🥰1
🍪 Чем ranges::iota отличается от std::iota под капотом?

C++20 принёс std::ranges::iota, который выглядит как улучшенная версия старого std::iota. Но это не просто API-обёртка — механизм работы совершенно другой.

✏️ std::iota — eager алгоритм:
std::iota(v.begin(), v.end(), 0);


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

✏️ ranges::iota — ленивая view:
auto view = std::views::iota(0, 10);


Возвращает view — лёгкий объект, который генерирует значения по требованию.

Внутри это просто два поля:

struct iota_view {
T current_;
T bound_;

T operator*() const { return current_; }
void operator++() { ++current_; }
};


Никакого выделения памяти! View не хранит элементы, он вычисляет их при обращении. Это O(1) по памяти против O(N) для std::iota.

💡 Композиция views:

auto result = views::iota(0, 100) 
| views::filter([](int x) { return x % 2 == 0; })
| views::take(10);


Компилятор inline'ит всю цепочку в один проход. Нет промежуточных контейнеров, нет лишних аллокаций. Просто счётчик и предикат.

❗️Практический вывод: если вам нужен материализованный контейнер — std::iota. Если цепочка преобразований — ranges::iota. Разные инструменты для разных задач.

❗️Ranges — это не замена алгоритмов, это другая парадигма.


🔹 Курс «Алгоритмы и структуры данных»
🔹 Получить консультацию менеджера
🔹 Сайт Академии🔹Сайт Proglib

Библиотека C/C++ разработчика

#под_капотом
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62
📘 4 декабря стартует набор на курс «Математика для разработки AI-моделей»

Если вы работаете с моделями или хотите перейти в DS/ML, декабрь — идеальный момент закрыть фундаментальные пробелы.

На курсе вы разберёте ключевые разделы, которые лежат в основе современных AI-моделей: линейная алгебра, анализ, оптимизация, математический анализ, вероятности, статистика. Всё через практику в Python.

В программе живые занятия с экспертами AI-индустрии (SberAI, ВШЭ, WB&Russ), разбор реальных задач, квизы и финальный проект.

🌐 Формат: онлайн + доступ к записям

🎁 Бонусы: курс «Школьная математика» в подарок, бесплатный тест по математике

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

👉 Записаться на курс
3😁3
😎 Visual Studio: мамонт, который всё ещё актуален

Microsoft Visual Studio часто критикуют за «тяжеловесность», но она остаётся золотым стандартом для Windows-разработки на C++. Тем более недавно вышло большое обновление 😄

Главные преимуществы Visual Studio:

• IntelliSense и хороший отладчик
Возможность отлаживать многопоточный код с визуализацией состояния потоков, и много чего, что работает из коробки
• Community Edition бесплатна для индивидуальных разработчиков и небольших команд

✍️ Минусы:

IDE занимает десятки гигабайт
медленно запускается
работа на Linux требует костылей

Для enterprise-проектов под Windows с интеграцией в экосистему Microsoft альтернатив практически нет.

Используете ли вы Visual Studio в 2025 году, или перешли на что-то более современное?

🔹 Курс «Алгоритмы и структуры данных»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹Сайт Proglib

Библиотека C/C++ разработчика

#междусобойчик
👍5😁4
🎓 Сколько на самом деле стоит твой диплом? Считаем разницу в зарплатах джунов с вышкой и без

В этой статье я разберу, как образование (вуз или его отсутствие) влияет на карьеру в российской IT-индустрии. Несмотря на расхожее мнение, что айтишники могут построить успешную карьеру без диплома, статистика и практика показывают: диплом все же играет роль — особенно на старте. Я расскажу, в каких случаях сильный бренд университета действительно бустит карьеру, а где решающим фактором остаются опыт, проекты и навыки.

👉 Статья

🔹Курс «Алгоритмы и структуры данных»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹Сайт Proglib

Библиотека C/C++ разработчика

#свежак
🥱4😁1
🍪 Зачем нужен std::out_ptr, если есть &ptr?

Многие С++ разработчики передают &smart_ptr в C API, думая, что это безопасно. Спойлер: это undefined behavior, который может молча сломать ваш код.

👁 Проблема на уровне памяти

std::unique_ptr<T> — это не просто T*. Внутри он хранит указатель + deleter. Когда вы пишете CreateObject(&my_ptr), C функция записывает адрес напрямую в память smart pointer, минуя деструктор старого объекта.

unique_ptr<Obj> ptr = make_unique<Obj>(); // ptr владеет объектом
CreateObject(&ptr); // UB! Старый объект утёк


🍿 Как работает out_ptr

std::out_ptr(ptr) создаёт временный proxy-объект. Он:

• Вызывает ptr.reset() при создании (освобождает старый ресурс)
• Предоставляет адрес внутреннего T** для C функции
• При уничтожении передаёт владение обратно в smart pointer

auto ptr = make_unique<Obj>();
CreateObject(std::out_ptr(ptr)); // Безопасно!


💡 Под капотом proxy хранит два указателя: временный T* для C API и ссылку на исходный smart pointer. Деструктор proxy вызывает ptr.reset(temp_ptr).

❗️Практика: всегда используйте out_ptr для output-параметров в C API.

🔹Курс «Алгоритмы и структуры данных»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹Сайт Proglib

Библиотека C/C++ разработчика

#под_капотом
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍4🔥2
Под капотом любого AI — C++ и Математика

Тензоры, матрицы, оптимизация вычислений — это родная стихия для C++ разработчика. Если вы хотите писать движки для нейросетей или работать в R&D, курс «Математика для разработки AI-моделей» — ваш следующий шаг.

Старт: Завтра.
Цена: 28 200 ₽.

Освежите знания вуза и примените их к современным задачам.

👉 Ссылка на регистрацию

Бонус:
Бесплатный тест
😁41
😎 Ranges в C++20: 3 материала, которые заставят забыть про итераторы

Ranges в C++20 — это «конвейер STL»: берёте контейнер, навешиваете filter | transform | take и получаете читаемый, ленивый и безопасный пайплайн вместо вложенных циклов и временных векторов. ​

Вместо ручного std::transform/std::copy_if и контроля lifetime — цепочки std::views::filter | std::views::transform, как в bash, но type-safe и без лишних аллокаций. ​

✍️ Материалы:

C++20 Ranges in Practice — Tristan Brindle — пошаговый рефакторинг императивного кода с циклами в понятные pipelines std::views::filter | transform | take плюс разбор сгенерированного кода и стоимости абстракций

New Algorithms in C++23 — развитие идеи: новые range‑алгоритмы, паттерны компоновки ranges::views и взгляд на C++ как язык обработки данных

Introduction to C++20 Ranges and Composability — введение в C++ Ranges и обсуждение существующих возможностей библиотеки

Пробовали ranges в production? Какие задачи решились элегантнее всего?

🔹Курс «Алгоритмы и структуры данных»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹Сайт Proglib

Библиотека C/C++ разработчика

#линкер_рекомендует
👍1