Сейчас большинство представлений об ИИ ограничиваются одним агентом — моделькой, которая что-то предсказывает, генерирует или классифицирует.
Но реальный прорыв начинается, когда этих агентов становится несколько.
Когда они начинают взаимодействовать друг с другом.
Когда появляется координация, распределение ролей, память, планирование — всё это и есть мультиагентные системы (MAS).
— Microsoft делает язык DroidSpeak для общения между LLM
— Open Source-фреймворки вроде LangChain, AutoGen, CrewAI, LangGraph — бурно развиваются
— компании, включая МТС, уже применяют MAS в боевых задачах
🎓 На курсе мы подходим к этому практично:
Именно на третьем уроке вы впервые собираете не просто «умного бота», а живую систему из агентов, которая работает вместе — как команда.
Причём по-настоящему: врач, SQL-аналитик, travel-планировщик, Python-генератор, поисковик.
Please open Telegram to view this post
VIEW IN TELEGRAM
Иногда мы не замечаем уязвимости и потенциальные проблемы в нашем коде. AI-помощник может сэкономить не только время, но и избавить от серьезных багов в продакшене.
Review this code for errors and refactor to fix any issues:
[Вставь свой код]
Было:
class DataProcessor {
public:
char* processData(char* input) {
char* buffer = new char[100];
strcpy(buffer, input);
return buffer;
}
void cleanup() {
// забыли освободить память
}
};
void example() {
DataProcessor dp;
char* result = dp.processData("some long input data that might overflow");
// утечка памяти - не вызываем delete
}
Стало (после AI-ревью):
class DataProcessor {
public:
std::string ProcessData(const std::string& input) {
// Используем std::string для безопасности
return input; // или любая другая обработка
}
// Деструктор не нужен - RAII работает автоматически
};
void Example() {
DataProcessor dp;
std::string result = dp.ProcessData("some long input data that might overflow");
// Автоматическое управление памятью
}
Что исправил AI:
Библиотека C/C++ разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🔄 std::source_location: автоматическое логирование
Забудьте FILE и LINE! std::source_location автоматически получает информацию о местоположении в коде.
Важно:
Библиотека C/C++ разработчика #буст
Забудьте FILE и LINE! std::source_location автоматически получает информацию о местоположении в коде.
#include <iostream>
#include <source_location>
#include <string_view>
void log_error(std::string_view message,
const std::source_location& loc = std::source_location::current()) {
std::cout << "ОШИБКА в " << loc.file_name()
<< ":" << loc.line()
<< " в функции " << loc.function_name()
<< " - " << message << std::endl;
}
void problematic_function() {
log_error("Что-то пошло не так!"); // Автоматически получит location
}
int main() {
log_error("Ошибка инициализации");
problematic_function();
return 0;
}
Важно:
source_location
вычисляется в точке вызова, не в точке определения функции.Библиотека C/C++ разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
Периодически требуется реализовать интеграцию с STL алгоритмами. Для этого необходимо реализовать правильные API.
Проблема: Нужно создать контейнер, работающий с range-based for и STL.
#include <iterator>
#include <algorithm>
#include <iostream>
template<typename T>
class CircularBuffer {
T* data;
size_t capacity_;
size_t size_;
size_t head_ = 0;
public:
explicit CircularBuffer(size_t capacity)
: data(new T[capacity]), capacity_(capacity), size_(0) {}
~CircularBuffer() { delete[] data; }
// Iterator class
class iterator {
T* ptr;
size_t capacity;
size_t index;
public:
using iterator_category = std::forward_iterator_tag;
using value_type = T;
using difference_type = std::ptrdiff_t;
using pointer = T*;
using reference = T&;
iterator(T* ptr, size_t capacity, size_t index)
: ptr(ptr), capacity(capacity), index(index) {}
reference operator*() { return ptr[index % capacity]; }
pointer operator->() { return &ptr[index % capacity]; }
iterator& operator++() {
++index;
return *this;
}
iterator operator++(int) {
iterator tmp = *this;
++index;
return tmp;
}
bool operator==(const iterator& other) const {
return index == other.index;
}
bool operator!=(const iterator& other) const {
return !(*this == other);
}
};
void push(const T& item) {
data[(head_ + size_) % capacity_] = item;
if (size_ < capacity_) {
++size_;
} else {
++head_;
head_ %= capacity_;
}
}
iterator begin() { return iterator(data, capacity_, head_); }
iterator end() { return iterator(data, capacity_, head_ + size_); }
size_t size() const { return size_; }
bool empty() const { return size_ == 0; }
};
int main() {
CircularBuffer<int> buffer(5);
// Заполняем буфер
for (int i = 1; i <= 7; ++i) {
buffer.push(i);
}
// Range-based for работает!
for (const auto& item : buffer) {
std::cout << item << " ";
}
std::cout << std::endl;
// STL алгоритмы работают!
auto it = std::find(buffer.begin(), buffer.end(), 5);
if (it != buffer.end()) {
std::cout << "Found: " << *it << std::endl;
}
}
Частые ошибки: Не реализовать все необходимые operator для итератора.
💡 Совет: Правильные итераторы делают ваш контейнер first-class citizen в ST.
Библиотека C/C++ разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
📰 Свеженькое из мира C++
Недельный дайджест новостей о разных аспектах программирования и интересных проектах в мире C++.
🥳 Интересное:
• Qt Quick/QML — декларативный UI для C++ приложений
• Отладка сопрограмм C++ — доклад о практических аспектах отладки сопрограмм
😎 Полезное:
• Исключения в C++ — набор карточек на базовые темы касающиеся исключений
• Поиск и исправление ошибок в C++ — промпт с помощью которого можно быстро находить ошибки в коде
• std::source_location — полезная фишка C++ с помощью которой можно облегчить легирование
• Создание собственного итератора для контейнера
• Сборка фреймворка QT из исходников
🖨️Интересные проекты:
• LEGO Island — портативная версия LEGO Island основанная на декомпилированном проекте
• Hyprland — независимый тайловый компоновщик
• Dragonfly — in-memory хранилище данных
Библиотека C/C++ разработчика #свежак
Недельный дайджест новостей о разных аспектах программирования и интересных проектах в мире C++.
🥳 Интересное:
• Qt Quick/QML — декларативный UI для C++ приложений
• Отладка сопрограмм C++ — доклад о практических аспектах отладки сопрограмм
😎 Полезное:
• Исключения в C++ — набор карточек на базовые темы касающиеся исключений
• Поиск и исправление ошибок в C++ — промпт с помощью которого можно быстро находить ошибки в коде
• std::source_location — полезная фишка C++ с помощью которой можно облегчить легирование
• Создание собственного итератора для контейнера
• Сборка фреймворка QT из исходников
🖨️Интересные проекты:
• LEGO Island — портативная версия LEGO Island основанная на декомпилированном проекте
• Hyprland — независимый тайловый компоновщик
• Dragonfly — in-memory хранилище данных
Библиотека C/C++ разработчика #свежак
Forwarded from Библиотека задач по C++ | тесты, код, задания
Forwarded from Библиотека задач по C++ | тесты, код, задания
Что выведет программа в C++20?
Anonymous Quiz
45%
1212
24%
Ошибка компиляции для d1
3%
0012
5%
1200
23%
Ошибка компиляции для обеих
🏖 Подборка вакансий для C++-разработчиков за неделю
Senior С++ / Rust Developer — от 300 000 и до 450 000 ₽ Гибрид (Москва, Санкт-Петербург)
Разработчик C++ — от 350 000 и до 500 000 ₽ Гибрид (Москва)
C/C++ Developer — от 350 000 и до 500 000 ₽ Гибрид (Москва)
Разработчик на C++ — от 250 000 и до 350 000 ₽ Офис (Москва)
➡️ Еще больше топовых вакансий — в нашем канале C++ jobs
Библиотека C/C++ разработчика
Senior С++ / Rust Developer — от 300 000 и до 450 000 ₽ Гибрид (Москва, Санкт-Петербург)
Разработчик C++ — от 350 000 и до 500 000 ₽ Гибрид (Москва)
C/C++ Developer — от 350 000 и до 500 000 ₽ Гибрид (Москва)
Разработчик на C++ — от 250 000 и до 350 000 ₽ Офис (Москва)
➡️ Еще больше топовых вакансий — в нашем канале C++ jobs
Библиотека C/C++ разработчика
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Часто возникает ситуация, когда нужно добавить новую функциональность в существующую функцию. В C++ это особенно актуально при работе с шаблонами, алгоритмами и обработкой данных.
Для того чтобы корректно добавить параметр в функцию и расширить её возможности, используй следующий промпт:
Add a parameter to this function to do [ФУНКЦИОНАЛЬНОСТЬ]
[ВСТАВТЕ ВАШ КОД ЗДЕСЬ]
До:
void processData(const std::vector<int>& data) {
for (const auto& item : data) {
std::cout << item << std::endl;
}
}
После (добавили параметр для кастомного форматирования):
void processData(const std::vector<int>& data,
const std::string& format = "{}: {}") {
for (size_t i = 0; i < data.size(); ++i) {
std::cout << std::format(format, i, data[i]) << std::endl;
}
}
✏️ Как часто вам приходится расширять функциональность существующих функций?
Библиотека C/C++ разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Последняя неделя перед стартом курса по AI-агентам
Старт курса уже 5го числа! Если вы планировали вписаться — сейчас ПОСЛЕДНИЙ шанс забронировать место
На курсе:
— разложим LLM по косточкам: токенизация, SFT, PEFT, инференс
— соберём RAG и научимся оценивать его адекватно
— построим настоящую мультиагентную систему — архитектуру, которая умеет расти
— разберём CoPilot, сломаем через prompt injection (спасибо Максу)
— и наконец, посмотрим, как это работает в MCP и реальных кейсах
📍 Это 5 живых вебинаров + раздатка + домашки + чат с преподавателями
И главное — возможность реально разобраться, как проектировать системы на LLM, а не просто «поиграться с API»
👉 Курс здесь
Старт курса уже 5го числа! Если вы планировали вписаться — сейчас ПОСЛЕДНИЙ шанс забронировать место
На курсе:
— разложим LLM по косточкам: токенизация, SFT, PEFT, инференс
— соберём RAG и научимся оценивать его адекватно
— построим настоящую мультиагентную систему — архитектуру, которая умеет расти
— разберём CoPilot, сломаем через prompt injection (спасибо Максу)
— и наконец, посмотрим, как это работает в MCP и реальных кейсах
📍 Это 5 живых вебинаров + раздатка + домашки + чат с преподавателями
И главное — возможность реально разобраться, как проектировать системы на LLM, а не просто «поиграться с API»
👉 Курс здесь
Please open Telegram to view this post
VIEW IN TELEGRAM
✅ Чек-лист: Автоматическое форматирование кода для единообразного стиля в команде
🎯 Настройка и конфигурация
✓ Создайте .clang-format файл в корне проекта
✓ Выберите базовый стиль
✓ Настройте отступы, скобки и переносы строк
✓ Добавьте специфичные правила для вашего проекта
🎯 Интеграция с инструментами
✓ Настройте автоформатирование в IDE
✓ Используйте pre-commit hooks для Git
✓ Интегрируйте с CI для проверки стиля
✓ Добавьте команды форматирования в CMake
🎯 Командная работа
✓ Документируйте стиль кода в README
✓ Проводите code review с проверкой стиля
✓ Используйте .clang-format-ignore для исключений
✓ Настройте автоматическое форматирование
🎯 Продвинутые возможности
✓ Используйте clang-format-diff для частичного форматирования
✓ Настройте языкоспецифичные правила
✓ Применяйте макросы для кастомизации
✓ Интегрируйте с другими linter'ами
Как измерить результат: Подсчитайте количество комментариев по стилю кода в code review.
Библиотека C/C++ разработчика #буст
🎯 Настройка и конфигурация
✓ Создайте .clang-format файл в корне проекта
✓ Выберите базовый стиль
✓ Настройте отступы, скобки и переносы строк
✓ Добавьте специфичные правила для вашего проекта
🎯 Интеграция с инструментами
✓ Настройте автоформатирование в IDE
✓ Используйте pre-commit hooks для Git
✓ Интегрируйте с CI для проверки стиля
✓ Добавьте команды форматирования в CMake
🎯 Командная работа
✓ Документируйте стиль кода в README
✓ Проводите code review с проверкой стиля
✓ Используйте .clang-format-ignore для исключений
✓ Настройте автоматическое форматирование
🎯 Продвинутые возможности
✓ Используйте clang-format-diff для частичного форматирования
✓ Настройте языкоспецифичные правила
✓ Применяйте макросы для кастомизации
✓ Интегрируйте с другими linter'ами
Как измерить результат: Подсчитайте количество комментариев по стилю кода в code review.
Библиотека C/C++ разработчика #буст