fa
Feedback
C++ Academy

C++ Academy

رفتن به کانال در Telegram

По всем вопросам- @workakkk РКН: clck.ru/3FmxJF #VRHSZ

نمایش بیشتر

📈 تحلیل کانال تلگرام C++ Academy

کانال C++ Academy (@cpluspluc) در بخش زبانی روسی بازیگری فعال است. در حال حاضر جامعه شامل 15 551 مشترک است و جایگاه 8 130 را در دسته فناوری و برنامه‌ها و رتبه 42 252 را در منطقه روسيا دارد.

📊 شاخص‌های مخاطب و پویایی

از زمان ایجاد در невідомо، پروژه رشد سریعی داشته و 15 551 مشترک جذب کرده است.

بر اساس آخرین داده‌ها در تاریخ 02 سپتامبر, 2026، کانال فعالیت پایداری دارد. در ۳۰ روز گذشته تغییر اعضا برابر 18 و در ۲۴ ساعت گذشته برابر 7 بوده و همچنان دسترسی گسترده‌ای حفظ شده است.

  • وضعیت تأیید: تأیید نشده
  • نرخ تعامل (ER): میانگین تعامل مخاطب 15.05% است و در ۲۴ ساعت نخست پس از انتشار، محتوا معمولاً 7.18% واکنش نسبت به کل مشترکان کسب می‌کند.
  • دسترسی پست‌ها: هر پست به طور میانگین 2 340 بازدید دریافت می‌کند. در اولین روز معمولاً 1 116 بازدید جمع‌آوری می‌شود.
  • واکنش‌ها و تعامل: مخاطبان به‌طور فعال حمایت می‌کنند؛ میانگین واکنش به هر پست 19 است.
  • علایق موضوعی: محتوا بر موضوعات کلیدی مانند c++, github, linux, api, архитектура تمرکز دارد.

📝 توضیح و سیاست محتوایی

نویسنده این فضا را محل بیان دیدگاه‌های شخصی توصیف می‌کند:
По всем вопросам- @workakkk РКН: clck.ru/3FmxJF #VRHSZ

به لطف به‌روزرسانی‌های پرتکرار (آخرین داده در تاریخ 03 سپتامبر, 2026)، کانال همواره به‌روز و دارای دسترسی بالاست. تحلیل‌ها نشان می‌دهد مخاطبان به‌طور فعال با محتوا تعامل دارند و آن را به نقطه اثرگذاری مهم در دسته فناوری و برنامه‌ها تبدیل کرده‌اند.

15 551
مشترکین
+724 ساعت
+307 روز
+1830 روز
آرشیو پست ها
💡 Clang умеет показывать AST, и это один из лучших способов реально понять, что компилятор видит в вашем C/C++ коде. AST — это Abstract Syntax Tree, внутреннее представление программы после парсинга. Например, простой код:

int x = a + b * 2;
для компилятора — не просто строка текста, а дерево примерно такого смысла:

VarDecl
└── BinaryOperator +
    ├── a
    └── BinaryOperator *
        ├── b
        └── 2
Именно через такое представление компилятор понимает структуру выражений, типы, области видимости и то, какие преобразования можно выполнить дальше. У Clang AST можно получить напрямую:

clang++ -Xclang -ast-dump -fsyntax-only main.cpp
А в Compiler Explorer / Godbolt есть отдельный режим просмотра AST, поэтому можно менять код и сразу видеть, как перестраивается дерево. Особенно полезно разбирать так: * шаблоны; * перегрузку функций; * implicit conversions; * auto; * лямбды; * range-based for; * временные объекты; * разные формы инициализации. Если регулярно смотреть AST, C++ постепенно перестаёт выглядеть как набор «магических правил». Начинаешь видеть код примерно так, как его видит компилятор. 🔗 https://godbolt.org/z/cfc7h41bT #Cpp #Clang #Compiler #Programming

🎶 Оптимизированный аудиовизуализатор для Windows Spectrum — это легковесный аудиовизуализатор на C++, который обрабатывает звук в реальном времени и выводит его в консоль без разрывов экрана. Он использует FFTW3 для анализа аудиосигналов и обеспечивает точное визуальное представление частот. 🚀 Основные моменты: - Реализация на C++17 для Windows. - Низкое использование CPU и памяти. - Поддержка WASAPI для захвата системного звука. - Отображение в виде ASCII-графиков. - Легкий в использовании и установке. 📌 GitHub: https://github.com/majockbim/spectrum #cpp

⚡️ Один `static` - три разных смысла. Добро пожаловать в C. В C ключевое слово static меняет поведение в зависимости от того,
⚡️ Один `static` - три разных смысла. Добро пожаловать в C. В C ключевое слово static меняет поведение в зависимости от того, где именно оно написано. ### 1. static у глобальной переменной

static int global;
Переменная имеет internal linkage - она доступна только внутри текущего .c файла. Это удобный способ спрятать детали реализации модуля. ### 2. static внутри функции

void foo(void) {
    static int count;
    count++;
}
count не создаётся заново при каждом вызове. Он существует всё время работы программы и сохраняет значение между вызовами функции.

foo(); // count = 1
foo(); // count = 2
foo(); // count = 3
### 3. static у функции

static void bar(void) {
}
Функция становится видна только внутри текущего translation unit. Другой .c файл вызвать bar() напрямую уже не сможет. Итого:

static global variable -> скрыть символ внутри файла
static local variable  -> сохранить состояние между вызовами
static function        -> скрыть функцию внутри файла
🔥 Поэтому static в C полезнее воспринимать не как одно конкретное поведение, а как подсказку проверить две вещи: lifetime и linkage. #C #Programming #SystemsProgramming #LowLevel #Cpp

⚡️ Генератор случайных чисел всего из трёх XOR и сдвигов В 2003 году Джордж Марсалья представил xorshift - один из самых прос
⚡️ Генератор случайных чисел всего из трёх XOR и сдвигов В 2003 году Джордж Марсалья представил xorshift - один из самых простых и быстрых генераторов псевдослучайных чисел. Классический xorshift32:

uint32_t xorshift32(void)
{
    state ^= state << 13;
    state ^= state >> 17;
    state ^= state << 5;
    return state;
}
Фактически весь алгоритм:

shift → XOR
shift → XOR
shift → XOR
При ненулевом начальном state период может достигать:

2³² - 1
Никаких умножений, делений или тяжёлой математики, поэтому подобные RNG отлично подходят для игр, симуляций и procedural generation, где важна скорость. Но есть нюанс: xorshift нельзя использовать для криптографии. Его внутреннее состояние можно предсказать, поэтому для ключей, паролей и токенов нужны криптографически стойкие генераторы. Иногда действительно полезный алгоритм помещается буквально в три строки. #Programming #Algorithms #C #Random

Keylogger в несколько строк C? Почти. На самом деле это не «магия взлома», а raw mode в терминале. Обычно терминал ждёт Enter
Keylogger в несколько строк C? Почти. На самом деле это не «магия взлома», а raw mode в терминале. Обычно терминал ждёт Enter и сам обрабатывает ввод. А здесь программа отключает echo и canonical mode, поэтому видит каждое нажатие сразу. Именно так работают редакторы, TUI-приложения и терминальные игры. Важно: использовать только на своём вводе и в учебных целях. Перехват чужих клавиш - уже не программирование, а нарушение безопасности.

Лето, ИТ-Пикник и музыка известных артистов уже через несколько дней! 8 августа в Коломенском пройдет ИТ-Пикник. В программе
Лето, ИТ-Пикник и музыка известных артистов уже через несколько дней! 8 августа в Коломенском пройдет ИТ-Пикник. В программе — выступления проекта LAB Антона Беляева, IOWA, Cream Soda, Pompeya, мартина и Совы. А днем — научпоп-лекции, дискуссии об ИИ и больших языковых моделях, мастер-классы и интерактивы. Полезные знакомства и развлечения тоже будут. Зарегистрироваться и узнать подробности можно на сайте мероприятия. В билет входит +1 — можно позвать близких и друзей. До встречи в месте притяжения ИТ.

Четыре строки делают сложение `float` заметно точнее При последовательном сложении чисел с плавающей точкой часть младших бит
Четыре строки делают сложение `float` заметно точнее При последовательном сложении чисел с плавающей точкой часть младших битов теряется из-за округления. На больших массивах эта ошибка постепенно накапливается. Алгоритм Кэхэна хранит потерянную часть в отдельной переменной и компенсирует её на следующем шаге:

float kahanSum(const float *nums, int count)
{
    float sum = 0.0f;
    float correction = 0.0f;

    for (int i = 0; i < count; ++i)
    {
        float adjusted = nums[i] - correction;
        float next = sum + adjusted;

        correction = (next - sum) - adjusted;
        sum = next;
    }

    return sum;
}
Здесь correction запоминает ошибку округления, которая потерялась при предыдущем сложении. Обычная сумма быстрее, но Kahan Summation полезен там, где важна численная точность: - научные расчёты; - статистика и аналитика; - графика и симуляции; - обработка больших массивов; - накопление очень маленьких значений рядом с большими. Метод предложил Уильям Кэхэн в 1965 году. Небольшое усложнение цикла может заметно уменьшить ошибку без перехода на более тяжёлый числовой тип.

Оператор # в препроцессоре C превращает токены в строковые литералы ещё на этапе компиляции. Никакого преобразования во время
Оператор # в препроцессоре C превращает токены в строковые литералы ещё на этапе компиляции. Никакого преобразования во время выполнения не происходит. Ядро Linux использует этот трюк в макросах вроде WARN_ON(), чтобы вывести точное условие, которое не прошло проверку. Вы пишете выражение один раз, а препроцессор автоматически генерирует соответствующую строку. Один оператор - и ваши debug-сообщения остаются идеально синхронизированы с кодом.

LEA в x86 выглядит как инструкция для адресов, но компиляторы часто используют её как скрытый калькулятор. Формально LEA счит
LEA в x86 выглядит как инструкция для адресов, но компиляторы часто используют её как скрытый калькулятор. Формально LEA считает адрес без обращения к памяти:

lea eax, [rdi + 3]
Но по факту это обычная арифметика:

return x + 3;
Ещё хитрее:

lea eax, [rdi + rdi*4]
Это уже:

return x * 5;
Почему так делают? Потому что x86-адресация умеет base + index * scale + offset, а LEA позволяет использовать эту механику без чтения памяти. Бонус: LEA не трогает флаги процессора, в отличие от add. Красота C и asm в том, что за простой строкой x * 5 может стоять не mul, а маленький трюк архитектуры.

## C++ enum class: безопасно, но местами раздражает enum class даёт строгую типизацию и не позволяет случайно смешивать значе
## C++ enum class: безопасно, но местами раздражает enum class даёт строгую типизацию и не позволяет случайно смешивать значения с обычными числами. Но есть нюанс: даже если enum используется как набор флагов,

Flags::Read | Flags::Write
не скомпилируется. Для |, &, ^, ~ придётся вручную определить операторы и приводить значения к базовому типу. Это правильное поведение с точки зрения type safety, но бойлерплейта становится заметно больше. Поэтому в некоторых C++-проектах для битовых флагов до сих пор используют обычный enum внутри namespace: меньше защиты, зато код значительно проще.

Doom в 1993 работал на 486 и 4 МБ RAM. А современные игры почему едят 16 ГБ? Секрет был в BSP-дереве: уровень заранее делился
Doom в 1993 работал на 486 и 4 МБ RAM. А современные игры почему едят 16 ГБ? Секрет был в BSP-дереве: уровень заранее делился на области, а движок во время рендера просто обходил дерево в нужном порядке. Без z-buffer, без лишней магии, без пересчёта видимости с нуля каждый кадр. Кармак буквально заставил геометрию работать вместо железа. Подписывайся, тут ещё много таких историй про код, который унижает современные «оптимизации».

🔥 Как найти младший установленный бит без цикла Этот трюк возвращает позицию самого правого бита 1 в 32-битном числе: static
🔥 Как найти младший установленный бит без цикла Этот трюк возвращает позицию самого правого бита 1 в 32-битном числе:

static const int table[32] = {
    0, 1, 28, 2, 29, 14, 24, 3,
    30, 22, 20, 15, 25, 17, 4, 8,
    31, 27, 13, 23, 21, 19, 16, 7,
    26, 12, 18, 6, 11, 5, 10, 9
};

int lowest_set_bit(uint32_t v)
{
    return table[((v & -v) * 0x077CB531U) >> 27];
}
Выражение v & -v изолирует младший установленный бит. Затем результат умножается на константу 0x077CB531 из последовательности де Брёйна. Для каждой из 32 возможных позиций старшие 5 бит произведения образуют уникальный индекс. Остаётся одно обращение к таблице - и позиция найдена без перебора всех битов. Важно: функция рассчитана на v != 0. В современном коде также стоит проверить std::countr_zero() или __builtin_ctz() - компилятор часто превращает их в одну инструкцию процессора.

🛠️ Cup: C-Based Build System Cup — это система сборки, написанная на C, позволяющая использовать C в качестве языка сценариев. Она поддерживает сложную логику сборки и интеграцию с инструментами разработки, такими как LSP и отладчики. 🚀Основные моменты: - Полная поддержка C без использования DSL. - Автоматическое обновление и кэширование сборок. - Поддержка Windows, Linux и macOS. - Генерация файлов конфигурации для популярных IDE. - Легковесные сборки и параллельные команды. 📌 GitHub: https://github.com/howaajin/cup #c

🌍🚀 Pointerverse: Версионный контроль для ветвящихся миров Pointerverse — это детерминированный движок для создания проверяе
🌍🚀 Pointerverse: Версионный контроль для ветвящихся миров Pointerverse — это детерминированный движок для создания проверяемых миров. Вы описываете мир как программу, создаете контент-адресованные коммиты и проверяете каждое изменение по заданным законам. Это позволяет воспроизводить историю и анализировать последствия изменений. 🚀Основные моменты: - Детерминированное управление историей с проверкой на соответствие законам. - Возможность ветвления и сравнения различных сценариев. - Полная воспроизводимость и защита от подделок с помощью Merkle DAG. - Поддержка написания собственных миров с использованием языка .pv. 📌 GitHub: https://github.com/farukalpay/Pointerverse

✔️ std::exchange: правильный move-конструктор без double free Move-конструктор через ручное копирование полей это ловушка. Ск
✔️ std::exchange: правильный move-конструктор без double free Move-конструктор через ручное копирование полей это ловушка. Скопировал указатель, забыл занулить источник, и оба объекта в деструкторе зовут delete по одному адресу. Double free: иногда падает сразу, иногда через неделю в проде. std::exchange закрывает вопрос одним вызовом. Он забирает ресурс и кладёт в источник безопасное значение:

Handle(Handle&& other)
    : ptr(std::exchange(other.ptr, nullptr)) {}
Новый объект получает старый указатель, а в other.ptr уезжает nullptr. delete по nullptr это no-op, поэтому перемещённый объект уничтожается безопасно, и владелец у ресурса ровно один. Именно так пишет стандартная библиотека внутри. Коротко, exception-safe, без шанса забыть про зануление. Одна функция против двух строк, на которых легко ошибиться. Правило короткое: перемещаешь владеющий указатель, бери std::exchange.

Даже формально верифицированный компилятор может ошибаться В 2011 году исследователи тестировали CompCert случайно сгенериров
Даже формально верифицированный компилятор может ошибаться В 2011 году исследователи тестировали CompCert случайно сгенерированными C-программами и нашли wrong-code баг в таком выражении: return -1 <= (1 && x); Правильный результат — 1, но CompCert 1.6 для PowerPC возвращал 0. Ошибка оказалась не в доказанно корректном оптимизаторе, а в неверифицированном фронтенде. Формальная верификация защищает только те части системы, для которых действительно построено доказательство.

⚡️ C++26: прямой доступ к типу внутри parameter pack В C++26 появился pack indexing. Теперь тип по индексу можно получить нап
⚡️ C++26: прямой доступ к типу внутри parameter pack В C++26 появился pack indexing. Теперь тип по индексу можно получить напрямую из набора параметров:

template<std::size_t I, typename... Ts>
using nth_t = Ts...[I];

using Second = nth_t<1, int, double, std::string>;
// Second = double
Индексация начинается с нуля. Раньше для этого использовали std::tuple_element_t, вспомогательные шаблоны или рекурсию:

template<std::size_t I, typename... Ts>
using old_nth_t = std::tuple_element_t<I, std::tuple<Ts...>>;
Новый синтаксис короче и понятнее:

Ts...[I]
Пригодится в шаблонных библиотеках, метапрограммировании, traits и compile-time API.

От инженеров для инженеров: 1 августа в Москве, Белграде и Ереване пройдет бэкенд-конференция Яндекса — Back to Back Старый д
От инженеров для инженеров: 1 августа в Москве, Белграде и Ереване пройдет бэкенд-конференция Яндекса — Back to Back Старый добрый C++ Zero Cost Conf расширил формат и добавил новые бэкенд-направления — от низкоуровневой эффективности и производительности до архитектуры и надёжности продакшен-систем. Всего доступно два трека: C++ Zero Cost (Москва/Белград) и Architecture & Performance (Москва/Ереван). — В Москве Антон Полухин, руководитель РГ21 C++, обсудит главные новости со встречи Международного комитета по стандартизации C++, ответит на вопросы о развитии C++26 и планах на C++29. — Там же Константин Владимиров и Елизавета Носкова из Syntacore, разберут, что C++ программист должен знать про ABI. А Антон Пионтковский, разработчик YDB, расскажет, как мы считаем range-предикаты с помощью битовых масок и как комбинировать их между колонками. Три города — три программы: Москва, Белград и Ереван. Если планируете посетить конференцию в Москве, вас ждут экспертные сессии 1:1 с разбором карьерных запросов и выступление группы «Научно-технический рэп». Конференции во всех городах пройдут и офлайн, и онлайн. Зарегистрироваться можно здесь.

✔️ Furtex: исследовательский набор для Linux post-exploitation и обхода EDR В open source вышел Furtex - низкоуровневый toolk
✔️ Furtex: исследовательский набор для Linux post-exploitation и обхода EDR В open source вышел Furtex - низкоуровневый toolkit для изучения техник post-exploitation и evasion в Linux. Проект построен вокруг io_uring, BPF и eBPF. Автор намеренно отказался от liburing и готовых фреймворков: взаимодействие с ядром реализовано через raw syscalls. В репозитории собраны эксперименты для: - анализа возможностей io_uring - исследования BPF-карт и программ - тестирования Linux EDR - изучения видимости событий для средств мониторинга - проверки защитных правил Falco - исследования сетевых и процессных механизмов ядра Furtex интересен специалистам по Linux security, разработчикам EDR и red team-инженерам, которым важно понимать, какие действия могут проходить мимо привычных точек наблюдения. Автор отдельно подчёркивает: проект предназначен только для разрешённых исследований и тестирования собственной инфраструктуры. https://github.com/MatheuZSecurity/Furtex #linux #cybersecurity #ebpf #io_uring #research

🤖 RSA почти никогда не делит числа по модулю напрямую Операции с огромными числами слишком дорогие, поэтому реализации RSA и
🤖 RSA почти никогда не делит числа по модулю напрямую Операции с огромными числами слишком дорогие, поэтому реализации RSA используют редукцию Монтгомери. Идея Питера Монтгомери из 1985 года: выбирается R = 2^k деление на R заменяется битовым сдвигом модульные вычисления выполняются через умножения, сложения и сдвиги За счёт этого быстрее считается: a^e mod N Это критично для: шифрования и расшифровки цифровых подписей TLS-соединений банковских операций Редукция Монтгомери десятилетиями работает внутри криптографических библиотек, хотя большинство пользователей даже не знает о её существовании.