C++ Academy
16.6K subscribers
624 photos
127 videos
1 file
584 links
По всем вопросам- @haarrp

@itchannels_telegram - 🔥 best it channels

РКН: clck.ru/3FmxJF
Download Telegram
Когда впервые сталкиваешься с type_traits в C++, они кажутся чем-то из мира метапрограммирования для продвинутых Сеньоров.

Но чем глубже разбираешься в плюсах, тем чаще ловишь себя на мысли: «А как вообще этот кусок кода собирается?», «Почему одна перегрузка сработала, а другая нет?», «Как можно элегантно отфильтровать типы на этапе компиляции?»

И тут внезапно узнаешь, что именно type_traits — это та самая опора, с которой можно решать такие задачи красиво и без хаков. Особенно если писать универсальный код, библиотеки, или хочешь просто понимать, как работает стандартная библиотека.

Сегодня прочитал пост Вани Ходора, бэкенд-разработчика из Яндекс Лавки, который как раз сделал гайд по type_traits — не про то, *что* они делают, а за что их можно полюбить. Не учебник, не документация, а маленькое путешествие по любимым трейтам с примерами, идеями и попытками реализации.

Будет полезно, даже если вы давно знакомы с шаблонами — с другой стороны посмотрите на знакомые конструкции, а может, и вдохновитесь на свой маленький эксперимент в шаблонном коде.
❤‍🔥6🔥42🥰1🎉1
🧠 Продвинутая задача на C++ — Оптимальный доступ к матрице с кешированием

Задача:
У вас есть матрица N x M, хранящаяся в виде одномерного массива (row-major).
Нужно реализовать класс Matrix, поддерживающий:
- Быстрый доступ get(i, j) и set(i, j, value)
- Локальность данных при сканировании по строкам и по столбцам
- При этом: сравнить производительность строкового и столбцового прохода


int main() {
Matrix mat(10000, 10000);
// Заполнить матрицу числами
for (int i = 0; i < 10000; ++i)
for (int j = 0; j < 10000; ++j)
mat.set(i, j, i + j);

// Сумма по строкам
long long row_sum = 0;
for (int i = 0; i < 10000; ++i)
for (int j = 0; j < 10000; ++j)
row_sum += mat.get(i, j);

// Сумма по столбцам
long long col_sum = 0;
for (int j = 0; j < 10000; ++j)
for (int i = 0; i < 10000; ++i)
col_sum += mat.get(i, j);
}


Вопрос:
Почему сканирование по строкам быстрее, чем по столбцам, даже если данные одинаковые?

---

Разбор:


class Matrix {
private:
int rows, cols;
std::vector<int> data;

public:
Matrix(int r, int c) : rows(r), cols(c), data(r * c) {}

int get(int i, int j) const {
return data[i * cols + j];
}

void set(int i, int j, int value) {
data[i * cols + j] = value;
}
};


Ответ:
Память в C++ выделяется линейно.
В std::vector<int> data, элементы строки хранятся подряд в памяти.
То есть mat[0][0], mat[0][1], ..., mat[0][9999] идут подряд.

Когда мы сканируем по строкам, процессор использует кеш строк памяти эффективно.
Когда же мы сканируем по столбцам, мы прыгаем по памяти через cols шагов → кеш не успевает подгружать нужные блоки → больше cache misses → медленнее.

---

🧠 Вывод:
- Даже при правильном коде, порядок доступа к памяти критически важен
- Понимание устройства кеша CPU помогает писать реально быстрый код
- Такие задачи полезны для подготовки к системному программированию, оптимизации и собеседованиям

#cpp #performance #cache #memory #optimize
13🔥4👍1🥰1
📘 Шпаргалки по SQL — база и оконные функции в одном месте

Хочешь быстро освежить SQL или подготовиться к собеседованию?
Нашёл отличные PDF-шпаргалки, которые удобно сохранить себе и использовать как в работе, так и в учёбе.

🔹 Базовый SQL:
Каждая команда объясняется не только по синтаксису, но и по сути — когда и зачем использовать.

1️⃣ SELECT, WHERE, GROUP BY, HAVING
2️⃣ Все типы JOIN с примерами
3️⃣ CASE WHEN, UNION и подзапросы
4️⃣ Агрегатные функции и фильтрация

Основы SQL

🔹 Оконные функции (window functions):
Это уже продвинутый уровень, особенно полезный для аналитиков и дата-инженеров.

1️⃣ ROW_NUMBER, RANK, DENSE_RANK, NTILE
2️⃣ LAG, LEAD, FIRST_VALUE, LAST_VALUE
3️⃣ Работа с рамками окна: ROWS BETWEEN, RANGE, GROUPS
4️⃣ Сортировка внутри окна и реальные примеры запросов

🔗 Оконные функции в SQL

📌 Когда только начинал учить SQL, не хватало понятных материалов. А тут — всё чётко, наглядно и по делу. За это авторам — уважение 🙌

▶️ Сохраняйте себе, чтобы не потерять
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥43
💻 Amazon выпустила Kiro — новый ИИ-ассистент для разработчиков на базе VS Code. Компания создала собственный форк популярного редактора, дополнив его автономными нейросетевыми агентами. Они умеют не только проверять код в чате, но и самостоятельно исправлять ошибки, писать тесты и документацию.

Редактор обладает функцией Kiro Specs, позволяющей задавать ИИ конкретные задачи и получать отчеты об их выполнении. Пока сервис бесплатный, но Amazon уже анонсировал платные тарифы до $39 в месяц. Kiro встает в один ряд с Cursor и Windsurf, усиливая конкуренцию на рынке умных редакторов кода.

🔗 Ссылка - *клик*

@cpluspluc
14👍3🔥3😱2🙊1
🔧 cmake-init — генератор CMake-проектов, который избавляет от рутинной настройки. Этот инструмент создаёт готовую структуру с поддержкой FetchContent, разделением целей для разработчиков и пользователей, а также интегрирует современные практики CMake.

Проект особенно полезен тем, кто устал править шаблоны вручную: он сразу настраивает линтинг, тестирование и документацию через Doxygen. Поддерживает Conan и vcpkg, а также предлагает удобные пресеты для CLion и VSCode.

🤖 GitHub

@cpluspluc
8🔥7👍4
⚙️ Vulkan-Hpp — современные C++-биндинги для Vulkan API, разработанные Khronos Group. Этот заголовочный файл заменяет громоздкий C-интерфейс типобезопасными классами, шаблонами и RAII-обёртками, сохраняя нулевые накладные расходы.

У инструмента есть возможность выбора между исключениями и возвратом кодов ошибок через макросы. Для управления ресурсами доступны как unique-хэндлы, так и полноценные RAII-классы в пространстве имён vk::raii. Проект автоматически генерируется из спецификации Vulkan и предлагает:
— Нативные C++-конструкторы для структур Vulkan
— Безопасную работу с перечислениями и битовыми флагами
— Интеграцию с STL-контейнерами через ArrayProxy
— Поддержку цепочек структур через шаблон StructureChain

🤖 GitHub

@cpluspluc
11👍6🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
2 августа Яндекс проведет C++ Zero Cost Conf

Практикующие эксперты из Яндекса, VK, Ozon и других компаний выступят с докладами и представят реальные кейсы с измеримыми метриками.

Программа выступлений в Москве:

🔹Василий Рамаданов, старший инженер-программист Yadro, разберёт поведение std::simd на x86 и ARM;

🔹 Антон Полухин, руководитель группы разработки общих компонентов Техплатформы Городских сервисов Яндекса, расскажет, как использовать модули в больших существующих проектах с поддержкой старых стандартов;

🔹 Сергей Слотин, C++-эксперт и автор «Algorithms for Modern Hardware» выступит на тему «Performance Puzzlers»: будем изучать особенности работы процессоров и компиляторов.

Остальные доклады с разбивкой по городам — на сайте конференции.

Участников офлайна ждёт C++ код-гольф: решение задачи с минимальным числом символов. В Москве дополнительно пройдет воркшоп по непрерывному профилированию Perforator и Case Lab по надёжности микросервисов с решением задач.

Ивент пройдет в трёх городах — Москве, Белграде (онлайн/офлайн) и Санкт-Петербурге (только офлайн). Зарегистрироваться можно здесь
10🔥6🥰4
⛓️ CUDA Core Compute Libraries (CCCL) — единый репозиторий от NVIDIA, объединяющий три ключевые библиотеки для работы с CUDA: Thrust, CUB и libcudacxx. Проект упрощает разработку высокопроизводительных вычислений, предлагая переносимые абстракции для разных GPU-архитектур.

Библиотеки поддерживают атомарные операции через cuda::atomic_ref и интеграцию с CMake. CCCL можно использовать как с официальным CUDA Toolkit, так и отдельно через GitHub или Conda, что удобно для экспериментов с новыми функциями до их выхода в стабильных версиях CUDA.

🤖 GitHub

@cpluspluc
🔥14👍64🥰1🤔1
🗣️ TEN VAD — ультраточная система обнаружения речи в реальном времени

Это современная модель Voice Activity Detection (VAD), превосходящая по точности популярные решения вроде WebRTC VAD и Silero VAD.

Она стала частью фреймворка TEN Framework — платформы для создания мультимодальных голосовых агентов.

🔹 Что делает TEN VAD особенной:

📈 Точность на SOTA-уровне — протестирована на LibriSpeech, GigaSpeech, DNS Challenge
🕒 Минимальная задержка — точное определение начала и конца речи в реальном времени
🧩 Низкие требования к ресурсам — подходит даже для мобильных устройств
⚙️ Гибкая интеграция — поддержка C и Python, работает на Linux, Windows, macOS, Android и iOS
🔊 Оптимизирована для 16 кГц аудио, с шагами 10/16 мс

https://huggingface.co/TEN-framework/ten-vad

@cpluspluc
11👍5🔥3
Выходим из френдзоны с легкостью

@cpluspluc
😁77🔥166👍5🤣4🥱2
🔌 Kompute — универсальный фреймворк для GPU-вычислений, работающий с Vulkan и поддерживающий графические карты AMD, NVIDIA, Qualcomm и других производителей. Проект разработан с упором на производительность, асинхронную обработку и кроссплатформенность, включая мобильные устройства.

Фреймворк предлагает гибкость для разработчиков, позволяя работать с тензорами, шейдерами и параллельными вычислениями. Под капотом — чистая интеграция с Vulkan, что делает его мощным инструментом для машинного обучения, игрового движка и других GPU-интенсивных задач. Проект поддерживается Linux Foundation и активно развивается с открытым исходным кодом.

🤖 GitHub

@cpluspluc
🔥7❤‍🔥3🥰2
This media is not supported in your browser
VIEW IN TELEGRAM
Регистрация на конференцию Яндекса C++ Zero Cost Conf закрывается 28 июля!

Напоминаем программу:

Доклады: Алиасинг памяти, Performance Puzzlers, C++20 Модули (Москва); Векторизация 2025, C++ vs C в роботах (Белград); Линейная алгебра в C++ (Питер) и другие. Полный список докладов можно посмотреть на сайте.
Код-ревью с поиском и исправлением ошибок в коде — во всех городах.
— В Москве дополнительно проведут код-гольф на C++, воркшоп по Perforator и Case Lab по надежности сервисов.

Конференция пройдет уже 2 августа, успейте зарегистрироваться на сайте.
🔥84🎉4
⛓️ CUDA Core Compute Libraries (CCCL) — единый репозиторий от NVIDIA, объединяющий три ключевые библиотеки для работы с CUDA: Thrust, CUB и libcudacxx. Проект упрощает разработку высокопроизводительных вычислений, предлагая переносимые абстракции для разных GPU-архитектур.

Библиотеки поддерживают атомарные операции через cuda::atomic_ref и интеграцию с CMake. CCCL можно использовать как с официальным CUDA Toolkit, так и отдельно через GitHub или Conda, что удобно для экспериментов с новыми функциями до их выхода в стабильных версиях CUDA.

🤖 GitHub

@cpluspluc
6🔥2🥰2
⚡️ Почему лучшие разработчики всегда на шаг впереди?

Потому что они знают, где брать настоящие инсайд!
Оставь “программирование в вакууме” в прошлом, выбирай свой стек — подпишись и погружайся в поток идей, лайфхаков и знаний, которые не найдёшь в открытом доступе.

ИИ: t.me/ai_machinelearning_big_data
Python: t.me/pythonl
Linux: t.me/linuxacademiya
Devops: t.me/DevOPSitsec
Базы данных: t.me/sqlhub
Мл собес t.me/machinelearning_interview
C++ t.me/cpluspluc
Docker: t.me/DevopsDocker
Хакинг: t.me/linuxkalii
МЛ: t.me/machinelearning_ru
Data Science: t.me/data_analysis_ml
Javascript: t.me/javascriptv
C#: t.me/csharp_ci
Java: t.me/java_library
Python собеседования: t.me/python_job_interview
Мобильная разработка: t.me/mobdevelop
Golang: t.me/Golang_google
React: t.me/react_tg
Rust: t.me/rust_code
ИИ: t.me/vistehno
PHP: t.me/phpshka
Android: t.me/android_its
Frontend: t.me/front
Big Data: t.me/bigdatai
МАТЕМАТИКА: t.me/data_math
Kubernets: t.me/kubernetc
Разработка игр: https://t.me/gamedev
Физика: t.me/fizmat
SQL: t.me/databases_tg

Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: https://t.me/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://t.me/addlist/mzMMG3RPZhY2M2Iy

🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
😆ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: t.me/english_forprogrammers
🧠ИИ: t.me/vistehno

🖥 Chatgpt для кода в тг: @Chatgpturbobot -

📕Ит-книги: https://t.me/addlist/BkskQciUW_FhNjEy
💼ИТ-вакансии t.me/addlist/_zyy_jQ_QUsyM2Vi

Подпишись, чтобы всегда знать, куда двигаться дальше!
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍2🔥2🖕2
🧠 Задача: Реализация `TypeList` с поддержкой операций на этапе компиляции

📌 Описание

Реализуйте шаблонный класс TypeList, который представляет собой список типов на этапе компиляции (compile-time type list). Он должен поддерживать следующие операции:

1. Получение длины списка (`length`)
2. Получение типа по индексу (`at<N>`)
3. Добавление типа в начало списка (`push_front<T>`)
4. Удаление первого типа (`pop_front`)
5. Проверка наличия типа в списке (`contains<T>`)
6. Фильтрация по условию (например, только целочисленные типы) (`filter<Predicate>`)

Всё это должно работать на этапе компиляции, без использования std::tuple или других runtime-контейнеров.

🧩 Пример использования


#include <type_traits>
#include <iostream>

// Пример предиката
template<typename T>
struct is_integral : std::is_integral<T> {};

int main() {
using MyList = TypeList<int, char, float, double, short>;

static_assert(MyList::length == 5);
static_assert(std::is_same_v<MyList::at<0>, int>);
static_assert(std::is_same_v<MyList::at<2>, float>);

using WithBool = MyList::push_front<bool>;
static_assert(WithBool::length == 6);
static_assert(std::is_same_v<WithBool::at<0>, bool>);

using Popped = WithBool::pop_front;
static_assert(std::is_same_v<Popped, MyList>);

static_assert(MyList::contains<int>);
static_assert(!MyList::contains<bool>);

using OnlyIntegral = MyList::filter<is_integral>;
static_assert(std::is_same_v<OnlyIntegral, TypeList<int, char, short>>);

return 0;
}


🛠 Требования к реализации
Используйте только возможности шаблонов и constexpr.
Не используйте std::tuple, std::array, if constexpr (если хотите усложнить — можно).
Предпочтительно использование C++17 или выше.
Код должен компилироваться и проходить все static_assert.

🧪 Бонусное задание
Реализуйте print_types() — функцию, которая выводит все типы из списка в std::cout (можно использовать typeid, PRETTY_FUNCTION или другие хаки).

@cpluspluc
8🔥3👍2
🎬 Blender 4.5 LTS — главное обновление года для 3D-художников

Новая долгосрочная версия популярного графического пакета принесла ключевые улучшения: полную поддержку Vulkan в EEVEE, ускоренную загрузку текстур и революционный инструмент Point Cloud для работы с облаками точек.

Особого внимания заслуживает обновлённый Grease Pencil с экспортом анимированных SVG и интеграцией с композитингом. Рендеринг теперь на 40% быстрее благодаря многопоточной компиляции шейдеров.

🔗 Ссылка - *клик*


@cpluspluc
👍65🔥5
Forwarded from Machinelearning
🌟 Mistral представила свой ответ GitHub Copilot: полноценную экосистему для разработки в энтерпрайзе.

В основе технологического стека - семейство моделей Codestral, с обновленной моделью Codestral 25.08.

Эта версия показала измеримые улучшения, подтвержденные на реальных кодовых базах: на 30% увеличилось количество принятых автодополнений, на 10% вырос объем сохраняемого после подсказки кода, а число генераций, когда модель производит слишком длинный и некорректный код, сократилось на 50%.

В режиме чата модель также стала лучше: ее способность следовать инструкциям выросла на 5% по метрике IF Eval v8, а общие возможности в программировании улучшились в среднем на 5% по тесту MultiplE.

🟡 Следующий уровень - семантический поиск и понимание кодовой базы в масштабе всего проекта.

За это отвечает Codestral Embed, модель для создания векторных представлений, специально спроектированная для кода, а не для обычного текста. По заявлениям Mistral, она превосходит эмбеддинг-решения от OpenAI и Cohere в реальных задачах по извлечению кода.

Ключевое преимущество - возможность настройки размерности эмбеддингов (до 256 измерений с квантованием до INT8), что позволяет балансировать между качеством поиска и хранением данных, сохраняя высокую производительность.

🟡Когда релевантный контекст найден, в дело вступают агентные воркфлоу.

Они реализованные через Devstral - агентскую систему на базе фреймворка OpenHands. Система ориентирована на задачи рефакторинга, генерации тестов и создание pull-реквестов.

На бенче SWE-Bench Verified модель Devstral Small 1.1 выбивает 53.6%, а Devstral Medium - 61.6%, значительно опережая Claude 3.5 и GPT-4.1-mini.

Devstral Small (24 млрд параметров) может работать на одной Nvidia RTX 4090 или Mac с 32 ГБ ОЗУ, что идеально для локальных или изолированных сред.

Все эти возможности объединяются в плагине Mistral Code для IDE от JetBrains и VS Code. Он автодополняет код с помощью Codestral 25.08 и автоматизирует рутину: написание коммитов или docstring’ов через Devstral, и семантический поиск на базе Codestral Embed.

Плагин учитывает контекст из Git diffs, истории терминала и инструментов статического анализа.

Для корпоративных клиентов предусмотрено развертывание в облаке, VPC или полностью on-prem, а также интеграция с SSO, ведение логов аудита и отсутствие обязательной телеметрии.


@ai_machinelearning_big_data

#news #ai #ml
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥1