Веб-версияОткрыть в Telegram
CC++ Academy

C++ Academy

@cpluspluc · канал · Технологии · в индексе с 2026-05-24
15 492подписчиков−8 за неделю
2 135средний охват поста
13.8%ER — охват к подписчикам
32постов за 30 дней
C
C++ Academy
Фотография
нажмите — покажем
⚡️ В Linux даже обычный syscall начинается с макроса. Например: SYSCALL_DEFINE3(write, unsigned int, fd, const char __user *, buf, size_t, count) После препроцессора это превращается сразу в несколько функций: - sys_write - __se_sys_write - __do_sys_write Одна строка описывает системный вызов, а C-препроцессор через макросы и token pasting собирает остальную обвязку автоматически. Именно поэтому код ядра Linux часто выглядит коротко, пока не начнёшь разворачивать макросы.
12 · 2.4K ·
C++ Academy
Фотография
нажмите — покажем
🔥 Приглашаем на бесплатный открытый вебинар курса «Программист С»: «Указатели в Си — от адреса к управлению памятью» 🗓 Когда: 24 сентября, 20:00 (мск) Указатели — это не просто синтаксис, а ключ к пониманию того, как Си общается с памятью. Без них невозможно осознанно работать с массивами, строками, структурами и динамическими данными. На вебинаре разберём указатели от самого основания — адресов и операторов — до передачи параметров по ссылке, чтобы вы перестали бояться звёздочек и начали управлять памятью уверенно. Что будет на вебинаре: • Разбор ключевых понятий: адрес переменной, операторы & и *, объявление и разыменовывание указателей — разберём, как Си работает с памятью напрямую; • Пошаговый анализ связи указателей, массивов и функций — выясним, как передавать параметры по ссылке и заставлять функции изменять переменные вызывающего кода. 👉 Зарегистрируйтесь https://otus.pw/BLgM/?erid=2W5zFHuFYrV Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
6 · 2.3K ·
C
Фотография
нажмите — покажем
💡 Алгоритм Флойда находит цикл в связном списке всего с двумя указателями и `O(1)` дополнительной памяти. Идея простая: slow двигается на 1 узел fast — на 2 Если цикл есть, они обязательно встретятся. После встречи один указатель возвращаем в head, а дальше оба двигаем по одному узлу. Следующая точка встречи — точное начало цикла. Node *detect_cycle(Node *head) { Node *slow = head, *fast = head; while (fast && fast->next) { slow = slow->next; fast = fast->next->next; if (slow == fast) { slow = head; while (slow != fast) { slow = slow->next; fast = fast->next; } return slow; } } return NULL; } Сложность: O(n) по времени O(1) по памяти Один из самых красивых примеров того, как простая математика по модулю превращается в очень практичный алгоритм.
36 · 2.1K ·
C++ Academy
Ссылка
нажмите — покажем
«Я про бэкенд»: как устроены AI-системы под капотом бигтеха 🗓 3 октября, Москва и онлайн О чём: как разработчики высоконагруженных рекомендательных и генеративных систем справляются с нетривиальными вызовами. Доклады в 6 направлениях — от архитектуры систем с AI/ML до MLOps и работы на стыке бэкенда с железом. Часть спикеров: 🎤 Михаил Цветков (Алиса AI и Умные устройства) — как устроен инференс генеративных ответов Алисы в Поиске 🎤 Алина Шестакова (Positive Technologies, Cloud SIEM) — вердикт за минуту: ML-фильтр и LLM на потоке более 40 тысяч событий в секунду 🎤 Андрей Аксёнов (Авито) — база векторных баз 🎤 Егор Хайруллин (Рекламные технологии Яндекса) — как распределённо обрабатывать более 100 ГБ/с в реальном времени без потерь и дублей с помощью YTsaurus Flow 🎤 Владислав Тюльбашев (Яндекс) — как надежно раздавать конфиги на 200к хостов при отказе [n-1] ДЦ 🎤 Алексей Логинов (Алиса AI и Умные устройства) — как сделать агентную платформу надёжной Кроме того, зрителей ждет традиционный лайв, где бэкенд-инженеры Яндекса спроектируют архитектуру сложного сервиса в реальном времени. В этот раз задачу для эфира можете задать вы: участвуйте в проекте «2718», отправляйте свои кейсы, а организаторы выберут среди них самый сложный для открытого разбора. Полная программа и регистрация
18 · 3K ·
Видео
ssstwitter.com_1786804370645.mp4 · 972 КБ · нажмите — покажем
Разница между C++ и Python
10 · 2K ·
C
Ссылка
нажмите — покажем
⚙️ useful_abstractions - вычисления на этапе компиляции в C++23 Библиотека упрощает работу с constexpr и consteval. Один заголовочный файл, без зависимостей за пределами стандартной библиотеки. Что можно делать при компиляции: * Передавать строки в параметры шаблонов и собирать их из частей. * Вычислять хеши. * Получать имена типов без RTTI. * Экранировать строки для JSON, URL и HTML. * Проверять UTF-8 и преобразовывать его в UTF-16/UTF-32. * Останавливать сборку с понятным сообщением при ошибке в данных. Например, некорректный строковый литерал или недопустимое значение можно обнаружить ещё до запуска программы. Требуется C++23: GCC 14+, Clang 19+ или свежий AppleClang. Документация — https://constexprcore.github.io/useful_abstractions/
17 · 2.6K ·
C
C++ Academy
Фотография
нажмите — покажем
Как посчитать миллиарды уникальных значений, используя всего несколько килобайт памяти Для этого существует HyperLogLog - вероятностный алгоритм оценки количества уникальных элементов. Вместо хранения каждого значения он: — хеширует элементы — распределяет их по buckets — отслеживает необычно длинные последовательности нулей в хэшах — по этой статистике оценивает cardinality Например, с 16384 регистрами можно оценивать даже огромные множества, занимая порядка десятков килобайт памяти. При этом ошибка может оставаться около 1%. Именно поэтому HyperLogLog любят в аналитике и больших данных: посчитать COUNT(DISTINCT ...) для миллиардов объектов можно без хранения миллиардов ID. Магия тут не в точности до последнего элемента, а в очень хорошем компромиссе между памятью и результатом.
29 · 2.8K ·
C++ Academy
Видео
ssstwitter.com_1787434143089.mp4 · 1.0 МБ · нажмите — покажем
Лицо C++-разработчика, когда он написал 6000 строк кода, чтобы обогнать твои 4 строки на Python на 0,000438 секунды.
40 · 4K ·
Фотография
нажмите — покажем
⚡️ Как спроектировать ИИ-агента над корпоративными данными 6 октября в 17:00 мск пройдёт новая встреча Архитектурного клуба Яндекс 360 — открытого сообщества для архитекторов и инженеров высоконагруженных систем. Даниил Смирнов, руководитель службы бэкенд-разработки Антиспама Яндекс 360 , разберёт архитектуру корпоративного агента: оркестратор, инструменты, память, EVAL и наблюдаемость. На эфире обсудят: - как сочетать полнотекстовый и векторный поиск, метаданные, фильтры и переранжирование; - как наследовать права исходных систем и изолировать данные разных пользователей и организаций; - как не выдавать из индекса и кеша данные тем, у кого нет доступа; - как ограничивать автономность агента; - как отдельно оценивать качество поиска, выбора инструментов и итогового ответа. 📅 6 октября, 17:00 мск 💻 Онлайн, участие бесплатное → Зарегистрироваться на встречу
5 · 1.9K ·
C
Фотография
нажмите — покажем
Фотография
нажмите — покажем
Физически корректный ray tracer всего в 99 строках C++ smallpt от Kevin Beason - один из самых известных примеров того, насколько компактным может быть настоящий path tracer. В этих 99 строках есть: * отражения * преломления * мягкие тени * color bleeding * зеркальные и стеклянные поверхности Основа при этом минимальная: векторы, лучи, сферы и одна рекурсивная функция radiance(). Если дать рендеру тысячи samples per pixel, он собирает полноценный Cornell Box с зеркальной и стеклянной сферами. Проект появился ещё в 2008 году и до сих пор отлично показывает базовую механику path tracing.
50 · 2K ·
C
C++ Academy
Фотография
нажмите — покажем
😂 Собеседование на C++ прошло успешно HR: у вас есть опыт с C++? Я: конечно, отлично знаю оператор `goes to`. int x = 10; while (x --> 0) { std::cout << x << '\n'; } Никакого специального --> оператора в C++ тут нет. Это просто: x-- > 0 Сначала берётся текущее значение x и сравнивается с 0, а затем x уменьшается на единицу. Поэтому код выведет: 9 8 7 6 5 4 3 2 1 0 Один из тех C++-трюков, который выглядит как отдельный оператор, хотя на самом деле это просто удачно поставленные -- и >.
34 · 2.2K ·
C++ Academy
Ссылка
нажмите — покажем
`🤖 В SourceCraft появилась команда цифровых разработчиков Агентам можно назначать задачи прямо в GitLab. Они работают под собственными учётными записями, выполняют поручения и возвращают результат разработчику. Если по ходу работы чего-то не хватает, агент сам запрашивает данные или согласование у команды — то есть не останавливается на первом незаполненном месте. Ещё можно подключить собственного агента, в том числе созданного в Yandex AI Studio.
4 · 2.1K ·
C
C++ Academy
Фотография
нажмите — покажем
🐧 Linux Cheat Sheet - шпаргалка по командам Linux Самая удобная шпаргалка по Linux и Bash на русском: теория простым языком (как устроены файлы, процессы, права, память, загрузка и сеть), команды терминала, права доступа, процессы, сеть, SSH, systemd, grep/sed/awk, Vim и готовые однострочники - с примерами. А для тех, кто идёт дальше, - продвинутый уровень: Bash для профи, LVM и RAID, трассировка и производительность, ядро, безопасность, контейнеры, восстановление системы и вопросы с собеседований. https://github.com/justxor/Linux-/
75 · 2.2K ·
C
C++ Academy
Фотография
нажмите — покажем
Фотография
нажмите — покажем
Minimum-Cost Maximum-Flow всего в ~110 строках C++ Хороший компактный пример одного из самых полезных алгоритмов на графах. Задача MCMF: провести через сеть максимально возможный поток и одновременно сделать его стоимость минимальной. В этой реализации: - residual graph хранит оставшиеся возможности для потока - SPFA каждый раз ищет самый дешёвый увеличивающий путь - после поиска определяется bottleneck - сколько потока реально можно протолкнуть по найденному пути - поток отправляется по пути - процесс повторяется, пока путь из источника в сток больше найти нельзя Особенно красивый трюк - обратные рёбра. Прямое и обратное ребро добавляются подряд, поэтому получить индекс пары можно через: id ^ 1 Если id чётный, id ^ 1 даст следующее нечётное ребро. Если нечётный - вернёт предыдущее чётное. MCMF пригодится там, где мало просто найти максимальный поток и у каждого решения есть цена: • назначение сотрудников на задачи • логистика • маршрутизация • matching с разной стоимостью • распределение ресурсов • расписания Компактный пример того, как residual network, shortest path и greedy augmentation собираются в один мощный алгоритм.
33 · 2K ·
C
C++ Academy
Фотография
нажмите — покажем
C23 сделал enum в C заметно удобнее для низкоуровневого кода. Раньше базовый тип перечисления обычно выбирал компилятор, и enum часто занимал размер обычного int: enum status { OK = 0, ERROR = -1 }; На многих системах это 4 байта. В C23 можно явно указать базовый тип: enum status8 : int8_t { OK8 = 0, ERR8 = -1 }; Теперь такой enum занимает 1 байт. Можно и наоборот использовать большой тип: enum status64 : uint64_t { OK64 = 0, ERR64 = UINT64_C(0xFFFFFFFFFFFFFFFF) }; Это особенно полезно там, где важен точный layout структуры, ABI, сетевые протоколы, embedded и работа с бинарными форматами. В C23 размер enum теперь можно контролировать явно, а не полагаться на выбор компилятора.
27 · 2.2K ·
C
C++ Academy
Фотография
нажмите — покажем
✔️ В C/C++ есть любопытный трюк с AVX-512: `_mm512_maskz_loadu_epi8`. Инструкция может выборочно загрузить до 64 байт по маске. Каждый бит маски отвечает за один байт: - 1 - байт загружается - 0 - вместо него ставится ноль Самое интересное начинается, когда маска полностью нулевая: #include <x86intrin.h> void f(const char *p) { _mm512_maskz_loadu_epi8(0, p); } При нулевой маске память фактически не читается, а результатом становится 512-битный вектор из нулей. То есть значение p в таком случае не влияет на результат, а компилятор при оптимизации вообще может удалить весь вызов. Хороший пример того, насколько необычно работают masked-load инструкции в AVX-512.
9 · 1.4K ·
C
C++ Academy
Фотография
нажмите — покажем
Фотография
нажмите — покажем
Полноценный Lisp можно уместить всего в 99 строк C. Внутри при этом: - 21 примитив - REPL - сборщик мусора Cheney GC - числа с плавающей точкой - указатели - типы значений И всё это без `struct`-тегов, без внешних библиотек и без обычных динамических аллокаций для представления объектов. Главный трюк - NaN boxing. IEEE 754 оставляет много битов внутри специальных NaN-значений. Их можно использовать как скрытое хранилище: - часть битов кодирует тип - до 48 бит можно использовать под указатель - обычные double при этом остаются обычными числами В итоге одно 64-битное значение может представлять и число, и указатель, и другие типы данных. Очень красивый пример того, как устройство IEEE 754 можно использовать для построения компактного рантайма языка.
26 · 850 ·
C
C++ Academy
Фотография
нажмите — покажем
Бьярн Страуструп о своём же C++: «на C легко выстрелить себе в ногу» Создатель C++ однажды описал свой язык так: «На C легко выстрелить себе в ногу. На C++ это сделать сложнее, но если уж получится, оторвёт всю ногу целиком». В своём FAQ он объясняет: это верно для любого мощного языка. Чем лучше язык защищает от простых ошибок, тем менее очевидными становятся те, что остаются. C++ действительно закрыл многие дыры C: RAII, умные указатели, строгая типизация, а на слайде за его спиной видно, что код на C++20/23 бывает проще и безопаснее старого. Но шаблоны, неопределённое поведение и сложная модель памяти по-прежнему позволяют выстрелить так, что потом неделями ищешь, куда попало.
20 · 1.6K ·
C++ Academy
Фотография
нажмите — покажем
🎮 Строка из Quake III, которая выглядит как колдовство i = 0x5f3759df - (i >> 1); // what the fuck? Комментарий настоящий. Эта строка помогает вычислить 1/√x, не извлекая квадратный корень. В графике такая операция нужна для нормализации векторов: привести их длину к единице, сохранив направление. Как работает трюк? У float внутри есть показатель степени и дробная часть. Если прочитать биты положительного нормализованного числа как целое, получится величина, которая примерно соответствует его логарифму с масштабом и смещением. А дальше используется свойство: log₂(1/√x) = −½ × log₂(x) Сдвиг >> 1 делит целое число на два. Вычитание из подобранной константы меняет знак и компенсирует смещение. Полученные биты снова читаются как float: это уже приближение к ответу. Один шаг метода Ньютона доводит относительную погрешность примерно до 0,18%. В историческом тесте Криса Ломонта функция работала примерно в четыре раза быстрее прямого вычисления 1.0 / sqrt(x). А закомментированная строка на картинке? Это второй шаг Ньютона: ещё больше точности за дополнительные вычисления. 💡 Красота алгоритма в том, что само представление числа в памяти становится частью вычисления. https://github.com/id-Software/Quake-III-Arena/blob/master/code/game/q_math.c
56 · 1.4K ·
C
Фотография
нажмите — покажем
Яндекс выложил в опенсорс YTsaurus Flow YTsaurus Flow - фреймворк потоковой обработки данных с сохранением состояния между событиями, альтернатива зарубежным Spark Structured Streaming и Kafka Streams. Технологию совместно разработали команды Yandex Infrastructure и Яндекс Рекламы для работы с большими потоками данных. Flow изначально создавался для высоконагруженных real-time систем, прежде всего рекомендательных. Позволяет обрабатывать большие потоки событий с сохранением состояния, гарантией exactly-once и автоматическим распределением нагрузки. Это важно для сервисов, где задержка или потеря данных напрямую влияют на качество рекомендаций, антифрода и других ML-систем: свежие события быстрее доходят до моделей, а инфраструктура продолжает работать при сбоях и изменении нагрузки. https://github.com/ytsaurus/ytsaurus/tree/main/yt/yt/flow
20 · 970 ·

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Чего мы не делаем · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем