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

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

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

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

РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17
Download Telegram
📰 Свеженькое из мира C++

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

😎 Интересное:

Чем ranges::iota отличается от std::iota под капотом? — описание, в чём разница разных алгоритмов iota из STL
Сколько на самом деле стоит твой диплом? — статья о том так ли нужен диплом в IT
Зачем нужен std::out_ptr, если есть &ptr? — полезная функция, особенно для работы с C API
Ranges в C++20: 3 материала, которые заставят забыть про итераторы — материалы для погружения в ranges
Интеграция с системами сборки — статья объясняющая, почему правильная интеграция системы сборки критична для работы модулей и что должны делать build-системы
ObjectBox — встраиваемая БД для C/C++

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

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

#свежак
👍3
🐧🍎 Ставим Fedora на MacBook Pro 2019 с чипом T2 и не ломаем систему на первом же обновлении

Чип T2 в MacBook — это защита Apple от всего неродного, включая Linux. Но есть способ обойти все ловушки и получить Fedora с рабочим Wi-Fi, звуком и даже Touch Bar. Главное — знать правильную последовательность действий. Показываю на своём примере.

👉 Читать статью

🔸 Курс «Основы IT для непрограммистов»
🔸 Получить консультацию менеджера
🔸 Сайт Академии 🔸 Сайт Proglib

🐸 Библиотека мобильного разработчика

#MadeInProglib
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🤔3
Математика — база для high-performance ML

Пока другие учат высокоуровневые API, C++ разработчики часто сталкиваются с необходимостью реализации алгоритмов на низком уровне для производительности. Здесь без понимания математического аппарата далеко не уедешь.

Мы перезапустили курс «Математика для разработки AI-моделей». Добавили живые вебинары для глубокого погружения в тему.

Статус группы:

— поток уже стартовал;

— прошел один вебинар;

второй состоится сегодня, 9 декабря.

Вы ещё успеваете присоединиться и разобраться, как математические концепции ложатся на код.

Курс поможет:

— понимать математику, стоящую за современными AI-моделями;

— читать и реализовывать научные статьи (papers);

— уверенно чувствовать себя в ML-инжиниринге.

Регистрация и программа
😁1
📕 Симулятор: От MOS6502 к x86

💡В статье автор делится своим годовым путём эволюции симулятора от простого MOS6502 через Intel 8080 к полноценному x86, раскрывая все технические нюансы и архитектурные решения.

❗️ Ключевые моменты статьи:

• элегантное решение проблемы «спаренных» регистров через union и макросы
• реализация сложной системы декодирования инструкций x86 с mod|reg|R/M байтом
• архитектура I/O через Memory-mapped и Port-mapped подходы

Основной фокус — практические проблемы перехода от простых 8-битных процессоров к архитектуре x86 и способы их решения через шаблоны C++ и продуманную систему обработки инструкций.

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

Вы узнаете, что даже отказ от сложного решения (tick-система) может быть правильным архитектурным выбором, а правильное использование union, шаблонов и указателей на функции позволяет построить элегантную и расширяемую систему эмуляции.

👉 Статья

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

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

#свежак
💯4👍1🤩1
This media is not supported in your browser
VIEW IN TELEGRAM
От первой строчки кода — до миллионов запросов в секунду.

В VK бэкендеры решают задачи, которые действительно меняют цифровой ландшафт. Узнайте об их принципах работы и драгоценных победах. По ссылке — истории из первых рук и вакансии для тех, кто не боится вызовов.
😁1
🤖🔎 15 AI-инструментов для поиска работы в IT за рубежом

В далеком 2023 году я уже делала подборку AI-инструментов, помогающих в поиске работы. В тот список я в основном включила конструкторы резюме и генераторы сопроводительных писем. Но ведь поиск работы не ограничивается только составлением резюме и cover letter — тем более сейчас, в условиях высококонкурентной среды и рынка работодателей. Поэтому я решила углубиться в эту тему и найти как можно больше разных инструментов, которые призваны оптимизировать поиск работы и позволят качественнее подготовиться к собеседованию.

👉 Статья

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

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

#свежак
😁3
Forwarded from Библиотека программиста | программирование, кодинг, разработка
Летим зимовать ✈️

Когда холодает, айтишники пакуют чемоданы, а мы разыгрываем ваучер на 50 000 рублей в Островке.

Поехать к морю или остаться среди снежных пейзажей — выбирайте сами!

Чтобы участвовать, нужно оставить любую реакцию под этим постом и подписаться на каналы ниже:

😎 Типичный программист
🐸 Библиотека программиста
🟢 Ostrovok! Tech

Теперь осталось нажать на кнопку участия под этим постом и вы в игре!

Итоги подведём 12 декабря. Победителя выберем с помощью бота. Подробнее с правилами можно ознакомиться здесь.

Всем удачи!

Участников: 111
Призовых мест: 1
Дата розыгрыша: 19:00, 12.12.2025 MSK (3 дня)
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩2😁1
🍪 Короткий синтаксис concepts: что компилятор делает с auto?

void foo(Sortable auto x) — это синтаксический сахар. Компилятор разворачивает его в полноценный шаблон с constraint.


⚡️ Трансформация

// Пишешь:
void foo(Sortable auto x);

// Компилятор видит:
template<typename T>
requires Sortable<T>
void foo(T x);


Каждый auto становится отдельным шаблонным параметром. Если несколько auto — несколько параметров:

void bar(Integral auto a, Floating auto b);

// Превращается в:
template<typename T1, typename T2>
requires Integral<T1> && Floating<T2>
void bar(T1 a, T2 b);



🔍 Return type

То же самое работает с возвращаемым типом:
Sortable auto get() { return std::vector{1, 2, 3}; }

// Эквивалент:
template<Sortable T>
T get() { return std::vector{1, 2, 3}; }


Компилятор выводит тип возврата и проверяет concept.


💡 Decltype(auto) с concepts

Можно даже:
Sortable decltype(auto) get_ref(auto& container) {
return container[0];
}


Здесь decltype(auto) сохраняет ссылочность, а Sortable проверяется для полученного типа.


⚠️ Ограничение

Нельзя смешивать в одном объявлении:
// ОШИБКА:
template<typename T>
void foo(Sortable auto x, T y);
// auto создаёт НОВЫЙ шаблонный параметр, конфликт с T



📌 Манглинг

Для компоновщика разницы нет — и короткий, и длинный синтаксис создают одинаковый mangled name. Это чисто синтаксическое удобство.

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

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

#под_капотом
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥3
Что не так с public virtual?

Вы добавляете логирование в базовый класс, а оно не срабатывает? Добро пожаловать в мир публичных виртуальных функций.

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

//  Классический антипаттерн
class Base {
public:
virtual void process(Data& data) {
log("Processing...");
// Логика
}
};

class Derived : public Base {
public:
void process(Data& data) override {
// Производный класс забыл вызвать Base::process()
// Логирование пропало!
}
};



💡Паттерн NVI решает это:

NVI (Non-Virtual Interface) — паттерн, где публичные методы невиртуальные, а виртуальные — приватные. Базовый класс становится "шлюзом", контролирующим доступ к кастомизируемой логике.

class IProcessor {
public:
void process(Data& data) { // Невиртуальный public
validate(data); // Общая логика
logStart(); // Тоже общая
process(data); // Кастомизация
logEnd();
}

private:
virtual void process(Data& data) = 0; // Виртуальный private
void validate(Data& data) { /* ... */ }
void logStart() { /* ... */ }
void logEnd() { /* ... */ }
};


Теперь каждый вызов process() гарантированно проходит через логирование. Производные классы физически не могут его обойти.


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

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

#константная_правильность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍72🌚2👾1
Плюсовики, собираемся 15 декабря в Москве и онлайн на встречу РГ21 С++

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

Антон Полухин (Техплатформа Городских сервисов Яндекса) поделится новостями со встречи международного Комитета по стандартизации языка C++ — о прогрессе в работе над С++26, новинках и о том, какие комментарии к стандарту подготовила Россия.

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

Подробности и регистрация
😁1