C++ Academy
По всем вопросам- @workakkk РКН: clck.ru/3FmxJF #VRHSZ
نمایش بیشتر📈 تحلیل کانال تلگرام C++ Academy
کانال C++ Academy (@cpluspluc) در بخش زبانی روسی بازیگری فعال است. در حال حاضر جامعه شامل 15 522 مشترک است و جایگاه 8 268 را در دسته فناوری و برنامهها و رتبه 42 183 را در منطقه روسيا دارد.
📊 شاخصهای مخاطب و پویایی
از زمان ایجاد در невідомо، پروژه رشد سریعی داشته و 15 522 مشترک جذب کرده است.
بر اساس آخرین دادهها در تاریخ 25 اکتبر, 2026، کانال فعالیت پایداری دارد. در ۳۰ روز گذشته تغییر اعضا برابر 14 و در ۲۴ ساعت گذشته برابر -4 بوده و همچنان دسترسی گستردهای حفظ شده است.
- وضعیت تأیید: تأیید نشده
- نرخ تعامل (ER): میانگین تعامل مخاطب 16.26% است و در ۲۴ ساعت نخست پس از انتشار، محتوا معمولاً 6.85% واکنش نسبت به کل مشترکان کسب میکند.
- دسترسی پستها: هر پست به طور میانگین 2 524 بازدید دریافت میکند. در اولین روز معمولاً 1 063 بازدید جمعآوری میشود.
- واکنشها و تعامل: مخاطبان بهطور فعال حمایت میکنند؛ میانگین واکنش به هر پست 27 است.
- علایق موضوعی: محتوا بر موضوعات کلیدی مانند c++, github, linux, api, архитектура تمرکز دارد.
📝 توضیح و سیاست محتوایی
نویسنده این فضا را محل بیان دیدگاههای شخصی توصیف میکند:
“По всем вопросам- @workakkk
РКН: clck.ru/3FmxJF
#VRHSZ”
به لطف بهروزرسانیهای پرتکرار (آخرین داده در تاریخ 26 اکتبر, 2026)، کانال همواره بهروز و دارای دسترسی بالاست. تحلیلها نشان میدهد مخاطبان بهطور فعال با محتوا تعامل دارند و آن را به نقطه اثرگذاری مهم در دسته فناوری و برنامهها تبدیل کردهاند.
در حال بارگذاری دادهها
| تاریخ | رشد مشترکین | اشارات | کانالها | |
| 26 اکتبر | +4 | |||
| 25 اکتبر | +1 | |||
| 24 اکتبر | 0 | |||
| 23 اکتبر | +3 | |||
| 22 اکتبر | +6 | |||
| 21 اکتبر | +2 | |||
| 20 اکتبر | 0 | |||
| 19 اکتبر | +6 | |||
| 18 اکتبر | +19 | |||
| 17 اکتبر | +18 | |||
| 16 اکتبر | +2 | |||
| 15 اکتبر | +4 | |||
| 14 اکتبر | +7 | |||
| 13 اکتبر | 0 | |||
| 12 اکتبر | +5 | |||
| 11 اکتبر | +5 | |||
| 10 اکتبر | +3 | |||
| 09 اکتبر | +1 | |||
| 08 اکتبر | +3 | |||
| 07 اکتبر | +4 | |||
| 06 اکتبر | +7 | |||
| 05 اکتبر | +8 | |||
| 04 اکتبر | +3 | |||
| 03 اکتبر | 0 | |||
| 02 اکتبر | 0 | |||
| 01 اکتبر | +1 |
| 2 | Алгоритм is_partitioned
Алгоритм is_partitioned — это алгоритм из стандартной библиотеки algorithm, который проверяет, разбит ли диапазон элементов определенным образом.
Принимает три параметра:
— Два итератора, задающих проверяемый диапазон.
— Предикат (функцию или функтор), определяющий разбиение.
Возвращает bool значение — true если диапазон разбит согласно предикату и false в противном случае.
Этот алгоритм предпочтительнее цикла, т. к. проще в использовании и читабельнее, ведь он эффективно проверяет условие за один проход по последовательности.
В примере мы определяем предикат isEven для проверки четности числа, передаем его в is_partitioned вместе с вектором v и выводим результат.
#это_база | 1 333 |
| 3 | ✔️ В C++26 появились контракты. Но проверка условия ещё не гарантирует оптимизацию
Контракты позволяют задавать предусловия и постусловия функции. Например, потребовать, чтобы делитель был ненулевой степенью двойки:
uint32_t ring_index(uint32_t i, uint32_t n)
pre(n && (n & (n - 1)) == 0)
{
return i % n;
}
Для таких беззнаковых чисел i % n можно заменить на более дешёвое i & (n - 1). Однако в примере автора GCC 16 не выполняет эту оптимизацию автоматически.
Поддержка контрактов включается через -fcontracts. В режиме enforce нарушение вызывает обработчик и завершение программы. Поведение зависит от выбранного режима проверки. Документация GCC -https://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Dialect-Options.html .
Атрибут C++23 [[assume(условие)]] даёт оптимизатору дополнительную информацию, но не проверяет условие. Если оно ложно, поведение программы не определено. | 1 760 |
| 4 | 🌟 SonicBoom: движок инференса без Python
HardenedVault, которая специализируется на безопасности Linux и компиляторов, выложила среду исполнения SonicBoom, написанной с нуля на C++ и CUDA. Python ей не нужен ни для работы, ни для сборки.
Цель проекта – локальный запуск языковых моделей на потребительских видеокартах.
Всё упаковано в одну библиотеку libsonicboom.so, которую можно подключить из любого языка через стандартный интерфейс C, основным языком для работы с ней авторы выбрали Scheme в реализации GNU Guile.
SonicBoom загружает модели в GGUF, генерирует текст на процессоре или видеокарте и поднимает локальный сервер, совместимый с API OpenAI.
Если новый запрос начинается с того же текста, что и предыдущий, заново обрабатывается только добавленная часть, и результат до токена совпадает с полным пересчётом.
🟡Механика
Скорость вывода дают уровни над вычислительными ядрами, а не сами ядра. Умножение квантованных матриц и токенизаторы частично перенесены из llama.cpp.
Над ними работает планировщик, который до запуска переписывает граф модели целиком, сливает соседние операции и записывает весь шаг генерации токена в один CUDA Graph, т. е. в готовую последовательность команд для видеокарты.
Ещё выше стоит компилятор на базе MLIR. Он сам генерирует часть ядер для GPU, в том числе для механизма внимания, и при первом запуске подбирает самый быстрый вариант под конкретную карту.
🟡Тесты
На RTX 3050 с 8 ГБ памяти сравнили SonicBoom и llama.cpp на одних и тех же моделях.
Gemma 4 E4B через SonicBoom дала генерацию в 53 токена в секунду против 44,8 у llama.cpp.
У Qwen2.5-0.5B вышло 344,7 токена в секунду против 307,6.
Когда контекст дорастает до 512 токенов, SonicBoom на Qwen уже чуть отстаёт.
Единственный сторонний результат на RTX 4060 Ti оказался хуже llama.cpp, 73,6 токена в секунду против 78, но его получили на сборке, ещё не настроенной под эту видеокарту.
Пока проверены только две модели, Gemma 4 E4B-it и Qwen2.5-0.5B-Instruct, и только видеокарты серии RTX 30.
Модель всегда выбирает самый вероятный токен, температуру и другие настройки случайности задать нельзя.
Следующими в планах стоят модели Llama и Mistral, работа через Vulkan, генерация ядер для видеокарт других производителей и диффузионные модели.
Дальше SonicBoom планирует вырасти в фреймворк в духе PyTorch, где модель пишут на Scheme и компилируют в граф вычислений. Прототип этого режима уже обучает небольшой трансформер.
📌Лицензирование: GPL-3.0
🖥Github
@ai_machinelearning_big_data
#AI #ML #LLM #InferenceEngine #SonicBoom | 1 535 |
| 5 | 🎮 Оказывается, Wolfenstein 3D-подобный raycaster можно собрать примерно в 250 строках C++.
Принцип довольно элегантный: для каждого вертикального столбца экрана выпускается один луч через карту, а пересечения со стенами ищутся через DDA - Digital Differential Analysis.
Ключевой трюк:
deltaDist = abs(1 / rayDir)
После попадания в стену используется не обычная длина луча, а перпендикулярное расстояние до стены — это убирает характерное fish-eye искажение.
Дальше всё почти классически:
* рассчитывается высота стены на экране;
* выбирается текстура;
* вычисляется точка попадания;
* рисуется вертикальная полоса пикселей.
Минимум кода и уже получается полноценная псевдо-3D графика в стиле первых Wolfenstein/Doom-подобных движков.
Отличный проект, чтобы реально понять raycasting, DDA и основы старой 3D-графики. | 1 763 |
| 6 | Виртуальных агентов обсудят на митапе «Русское техно 2» от MWS 23 октября. ⚡ Успейте зарегистрироваться.
В программе доклады и дискуссии по темам:
— Как построить control plane для персональных ИИ-агентов на Kubernetes.
— Как построить агентный производственный процесс в связке с Harness.
— Подходы к управлению командами с ИИ-агентами. Как меняются метпроцессы внутри команды?
— Когда ИИ-агент становится экономически оправданным.
А также участников ждет битва промптов и нетворкинг.
Когда: 23 октября
Формат: офлайн в Москве и онлайн
Зарегистрироваться | 1 148 |
| 7 | 🎮 Оказывается, Wolfenstein 3D-подобный raycaster можно собрать примерно в 250 строках C++.
Принцип довольно элегантный: для каждого вертикального столбца экрана выпускается один луч через карту, а пересечения со стенами ищутся через DDA - Digital Differential Analysis.
Ключевой трюк:
deltaDist = abs(1 / rayDir)
После попадания в стену используется не обычная длина луча, а перпендикулярное расстояние до стены — это убирает характерное fish-eye искажение.
Дальше всё почти классически:
* рассчитывается высота стены на экране;
* выбирается текстура;
* вычисляется точка попадания;
* рисуется вертикальная полоса пикселей.
Минимум кода и уже получается полноценная псевдо-3D графика в стиле первых Wolfenstein/Doom-подобных движков.
Отличный проект, чтобы реально понять raycasting, DDA и основы старой 3D-графики. | 109 |
| 8 | 🧠 TIL: SQLite превращает числа в текст сразу по две цифры
Обычно integer → string делают циклом:
/ 10 → берём цифру
% 10 → остаток
и повторяем снова.
SQLite идёт хитрее.
В исходниках есть строка на 200 символов, содержащая все пары от 00 до 99:
000102030405...979899
При преобразовании числа SQLite обрабатывает его по две цифры за раз и просто берёт нужную пару символов по индексу.
То есть вместо множества операций /10 и %10:
делим на 100 → получаем две цифры → копируем готовую пару.
Маленькая оптимизация, но именно из таких деталей и состоит быстрый системный код.
Исходник: sqlite/src/util.c | 2 221 |
| 9 | 🔥 Хочешь быстрее расти в IT? Хватит учиться в одиночку
Окружение решает больше, чем кажется.
Собрал папки и каналы, где можно быстрее влиться в нужное направление, следить за трендами и не вариться в своём пузыре.
AI: t.me/ai_machinelearning_big_data
Python: t.me/pythonl
Linux: t.me/linuxacademiya
Хакинг: t.me/linuxkalii
DevOps: t.me/DevOPSitsec
Docker: https://t.me/+90Z5TAyfuNU5YmRi
Golang: t.me/Golang_google
Rust: t.me/rust_code
C++: t.me/cpluspluc
C#: t.me/csharp_ci
Java: t.me/javatg
JavaScript: t.me/javascriptv
React: t.me/react_tg
Frontend: t.me/front
PHP: t.me/phpshka
Android: t.me/android_its
Мобильная разработка: t.me/mobdevelop
Базы данных: t.me/sqlhub
Data Science: t.me/data_analysis_ml
Big Data: t.me/bigdatai
Математика: t.me/data_math
Физика: t.me/fizmat
Kubernetes: t.me/kubernetc
GameDev: https://t.me/gamedev
Haskell: t.me/haskell_tg
Собеседования и карьера:
DS собеседования: t.me/machinelearning_interview
Python собеседования: t.me/python_job_interview
Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: https://t.me/addlist/2Ls-snqEeytkMDgy
Папка Frontend: https://t.me/addlist/mzMMG3RPZhY2M2Iy
Полезное сверху:
ИТ-мемы: t.me/memes_prog
Английский для программистов: t.me/english_forprogrammers
ИИ и технологии: t.me/vistehno
954 ГБ open-source курсов: https://t.me/+rKBQEMccAA01MTcy
ИТ-книги бесплатно: https://t.me/addlist/BkskQciUW_FhNjEy
Max Ai: https://max.ru/ai_machinelearning_big_data
Max python: https://max.ru/pythonl
ТЕХНО: https://max.ru/vistehno
Max Go: https://max.ru/Golang_google
Max Linux: https://max.ru/linuxkalii
Devops: https://max.ru/DevOPSitsec
C#: https://max.ru/csharp_ci
C++: https://max.ru/cpluspluc
SQL: https://max.ru/sqlhub
Java: https://max.ru/javatg
Подписывайся на нужные направления и собирай себе ленту, которая реально двигает вперёд. | 1 925 |
| 10 | بدون متن... | 2 594 |
| 11 | 🛋 C++ реалистично симулирует взрослую жизнь: решил сэкономить на переезде, а всё равно заплатил за копию.
const Sofa mySofa;
Sofa newApartment = std::move(mySofa);
Кажется, диван должен «переехать». Но вызывается конструктор копирования 🤡
Подвох: `std::move` не перемещает объект и не снимает `const`. Здесь он даёт const Sofa&&, а конструктору перемещения Sofa(Sofa&&) нужна ссылка без const.
Зато конструктор копирования Sofa(const Sofa&) подходит.
Даже компилятор знает: переезд без неожиданных расходов не бывает. | 2 176 |
| 12 | Для работы с ИИ полезно иметь несколько моделей под рукой. Но держать ради этого несколько подписок удобно не всем.
Особенно когда сегодня нужен Claude для кода, завтра GPT для другой задачи, а команде ещё нужны общий баланс и понятные расходы.
Для такого сценария есть RouterAI, российская альтернатива OpenRouter. ChatGPT, Claude, Gemini, Grok и сотни других моделей доступны через один веб-чат и OpenAI-совместимый API. Сервис работает без VPN, есть Telegram-бот.
Для разработки предусмотрены инструкции по подключению Claude Code, Codex, Cline и Cursor. Если провайдер модели недоступен, запрос автоматически направляется резервному.
Оплата за использование, без обязательной подписки. Пополнить баланс можно в рублях российской картой или через СБП. Для бизнеса есть оплата по счёту, договор и закрывающие документы. Командам доступны роли, лимиты и статистика расходов.
По данным RouterAI, платформой пользуются десятки тысяч пользователей, включая разработчиков и компании. На сторонних площадках сотни положительных отзывов с оценками около 4,9–5 из 5: например, на Startpack сейчас 372 отзыва и рейтинг 4,9.
Практичный способ попробовать разные модели на своих задачах и платить за фактическую работу.
https://routerai.ru/l/c
#реклама
О рекламодателе
erid: 2W5zFJoafmB | 1 965 |
| 13 | 🎲 Генератор случайных чисел всего в три строки
В 2003 году George Marsaglia предложил семейство генераторов Xorshift — один из самых простых и быстрых PRNG.
Для xorshift32 достаточно буквально трёх операций:
state ^= state << 13;
state ^= state >> 17;
state ^= state << 5;
Новое значение state становится следующим псевдослучайным числом.
Почему это интересно:
- почти нет вычислительных затрат;
- используются только битовые сдвиги и XOR;
- период для ненулевого state — до 2³² − 1;
- отлично подходит для игр, симуляций и других задач, где важна скорость.
Но есть важный нюанс: Xorshift не криптографически стойкий. Для токенов, паролей и security-задач его использовать нельзя.
Красивый пример того, как всего несколько битовых операций превращаются в полноценный генератор псевдослучайных чисел. | 2 432 |
| 14 | 🔥Приглашаем на бесплатный открытый вебинар курса «Электроника и электротехника»:
«Беспроводные STM32. Разрабатываем плату для микроконтроллеров с радиоинтерфейсом»
📆Когда: 21 октября 2026, 20:00 (мск)
Многие разработчики сталкиваются с ситуацией: плата с Bluetooth «работает, но не летает» — дальность связи в разы меньше заявленной в даташите.
Что будет на вебинаре:
• Почему плата с Bluetooth работает на 5 метров, хотя в даташите обещают 50?
• Что такое согласование антенны и почему без него теряется половина мощности?
• Можно ли соединять вывод RF микроконтроллера напрямую с антенной или нужна обвязка?
• Практические рекомендации по трассировке радиочастотных трактов.
• Как адаптировать референс-дизайн под свой стек печатной платы.
Зарегистрируйтесь https://otus.pw/5jPS/?erid=2W5zFGxaSRP
Бесплатное занятие приурочено к курсу «Электроника и электротехника»
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. | 1 047 |
| 15 | 🖥 C++: объект уничтожен, а 16 МиБ всё ещё заняты
std::weak_ptr может удерживать память даже при expired() == true.
Причина в std::make_shared: обычно он размещает объект и управляющий блок в одной аллокации.
В примере на скриншоте массив на 16 МиБ находится прямо внутри Blob. После удаления последнего shared_ptr:
* деструктор объекта вызывается;
* expired() возвращает true;
* общий блок памяти остаётся выделенным, пока существует хотя бы один weak_ptr.
После сброса последней слабой ссылки блок можно освободить.
Что делать: удалять протухшие ссылки из долгоживущих кешей. Для крупных объектов также можно рассмотреть отдельную аллокацию через std::shared_ptr<Blob>(new Blob()).
Нюанс касается размера самого объекта. Если данные хранятся в обычном std::vector, его отдельный буфер освобождается при вызове деструктора.
[Разбор от Microsoft](https://devblogs.microsoft.com/oldnewthing/20230815-00/?p=108602) | 2 797 |
| 16 | 🦀 Что удивляет в C, если первым языком был Rust?
Обычно разработчики переходят от C к Rust. Автор C for Rust Programmers пошёл в обратную сторону и собрал нюансы, которые легко пропустить.
Например, такая функция выглядит как принимающая массив из трёх элементов:
void inspect(char data[3]) {
printf("%zu\n", sizeof(data));
}
Но параметр здесь становится указателем. На платформе с 64-битными указателями увидите 8, а не 3. Длина массива в функцию не передаётся.
Ещё несколько сюрпризов:
• C-строки заканчиваются \0, а strlen() ищет этот байт, проходя по памяти.
• long обычно занимает 64 бита в 64-битных Unix-системах и 32 бита в Windows.
• malloc() может вернуть NULL, а язык не заставит проверить результат.
• Вместо ссылок с проверкой заимствований работают сырые указатели.
Полезное чтение для тех, кто пишет FFI или хочет понять, какие гарантии привычно получает от Rust.
https://bd103.dev/blog/2026-10-07-c-for-rust-programmers/
@rust_code | 2 625 |
| 17 | UTF-8-декодер на C: таблица и несколько строк кода
Бьёрн Хёрманн реализовал декодирование UTF-8 через конечный автомат (DFA). Он обрабатывает байты по одному, собирает кодовую точку Unicode и проверяет корректность последовательности.
Таблица utf8d выполняет две задачи:
* определяет класс очередного байта;
* выбирает следующее состояние автомата.
`ACCEPT` означает, что кодовая точка полностью прочитана. `REJECT` - обнаружена ошибка. Остальные состояния означают, что нужны дополнительные байты.
Подход удобен для потоковой обработки: если символ разорван между двумя сетевыми пакетами, достаточно сохранить состояние и накопленное значение.
Нюанс: после последнего байта тоже нужно проверить состояние. Если оно не ACCEPT, строка некорректна - например, оборвалась посреди символа. | 2 463 |
| 18 | 🖥 Создатель C++ раскритиковал программирование через промпты
Бьярне Страуструп считает естественный язык слишком неоднозначным для точного описания программ. В интервью Райану Петерману он заявил, что ИИ часто создаёт раздутый код с ошибками и уязвимостями, который сложно проверять.
По его словам, изменение промпта может существенно менять реализацию, заставляя опытных разработчиков заново разбираться в результате. Страуструп рассказал, что знает специалистов, которые предпочитают уйти на пенсию, чем заниматься такой проверкой.
Особенно скептически он оценивает ИИ в системах, где критичны безопасность и производительность. При этом признаёт: большая часть мирового кода не относится к этой категории. | 3 436 |
| 19 | Яндекс выложил в опенсорс 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 | 3 279 |
| 20 | 🎮 Строка из 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 | 3 733 |
