uz
Feedback

Firibgarlarga uchmang! Telemetrio bunday kanallarni topadi va belgilaydi 👉 Belgini ko‘rmoqchi bo‘lsangiz, obuna bo‘ling

C++ Academy

C++ Academy

Kanalga Telegram’da o‘tish

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

Ko'proq ko'rsatish

📈 Telegram kanali C++ Academy analitikasi

C++ Academy (@cpluspluc) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 15 522 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 8 268-o'rinni va Rossiya mintaqasida 42 183-o'rinni egallagan.

📊 Auditoriya ko‘rsatkichlari va dinamika

невідомо sanasidan buyon loyiha tez o‘sib, 15 522 obunachiga ega bo‘ldi.

25 Oktabr, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni 14 ga, so‘nggi 24 soatda esa -4 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.

  • Tasdiqlash holati: Tasdiqlanmagan
  • Jalb etish (ER): Auditoriya o‘rtacha 16.26% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 6.85% ini tashkil etuvchi reaksiyalarni to‘playdi.
  • Post qamrovi: Har bir post o‘rtacha 2 524 marta ko‘riladi; birinchi sutkada odatda 1 063 ta ko‘rish yig‘iladi.
  • Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 27 ta reaksiya keladi.
  • Tematik yo‘nalishlar: Kontent c++, github, linux, api, архитектура kabi asosiy mavzularga jamlangan.

📝 Tavsif va kontent siyosati

Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
“По всем вопросам- @workakkk РКН: clck.ru/3FmxJF #VRHSZ”

Yuqori yangilanish chastotasi (oxirgi ma’lumot 26 Oktabr, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.

15 522
Obunachilar
-424 soatlar
-147 kun
+1430 kun
Postlar arxiv
«what the fu**?»: самый странный комментарий в игровом коде Одна строка из Quake III заменяет деление и корень сдвигом битов и магическим числом 0x5f3759df. Покажу на примере, как это работает, и посчитаю погрешность: 3.44% до уточнения и 0.175% после одного шага Ньютона. А кто на самом деле придумал трюк, вы вряд ли угадаете. https://youtube.com/shorts/oIpqqzNNCHo

Алгоритм is_partitioned Алгоритм is_partitioned — это алгоритм из стандартной библиотеки algorithm, который проверяет, разбит
Алгоритм is_partitioned Алгоритм is_partitioned — это алгоритм из стандартной библиотеки algorithm, который проверяет, разбит ли диапазон элементов определенным образом. Принимает три параметра: — Два итератора, задающих проверяемый диапазон. — Предикат (функцию или функтор), определяющий разбиение. Возвращает bool значение — true если диапазон разбит согласно предикату и false в противном случае. Этот алгоритм предпочтительнее цикла, т. к. проще в использовании и читабельнее, ведь он эффективно проверяет условие за один проход по последовательности. В примере мы определяем предикат isEven для проверки четности числа, передаем его в is_partitioned вместе с вектором v и выводим результат. #это_база

✔️ В C++26 появились контракты. Но проверка условия ещё не гарантирует оптимизацию Контракты позволяют задавать предусловия и
✔️ В 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(условие)]] даёт оптимизатору дополнительную информацию, но не проверяет условие. Если оно ложно, поведение программы не определено.

Repost from Machinelearning
🌟 SonicBoom: движок инференса без Python HardenedVault, которая специализируется на безопасности Linux и компиляторов, вылож
+2
🌟 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

🎮 Оказывается, Wolfenstein 3D-подобный raycaster можно собрать примерно в 250 строках C++. Принцип довольно элегантный: для
+1
🎮 Оказывается, Wolfenstein 3D-подобный raycaster можно собрать примерно в 250 строках C++. Принцип довольно элегантный: для каждого вертикального столбца экрана выпускается один луч через карту, а пересечения со стенами ищутся через DDA - Digital Differential Analysis. Ключевой трюк: deltaDist = abs(1 / rayDir) После попадания в стену используется не обычная длина луча, а перпендикулярное расстояние до стены — это убирает характерное fish-eye искажение. Дальше всё почти классически: * рассчитывается высота стены на экране; * выбирается текстура; * вычисляется точка попадания; * рисуется вертикальная полоса пикселей. Минимум кода и уже получается полноценная псевдо-3D графика в стиле первых Wolfenstein/Doom-подобных движков. Отличный проект, чтобы реально понять raycasting, DDA и основы старой 3D-графики.

Виртуальных агентов обсудят на митапе «Русское техно 2» от MWS 23 октября. ⚡ Успейте зарегистрироваться. В программе доклады
Виртуальных агентов обсудят на митапе «Русское техно 2» от MWS 23 октября. ⚡ Успейте зарегистрироваться. В программе доклады и дискуссии по темам: — Как построить control plane для персональных ИИ-агентов на Kubernetes. — Как построить агентный производственный процесс в связке с Harness. — Подходы к управлению командами с ИИ-агентами. Как меняются метпроцессы внутри команды? — Когда ИИ-агент становится экономически оправданным. А также участников ждет битва промптов и нетворкинг. Когда: 23 октября Формат: офлайн в Москве и онлайн Зарегистрироваться

🎮 Оказывается, Wolfenstein 3D-подобный raycaster можно собрать примерно в 250 строках C++. Принцип довольно элегантный: для
+1
🎮 Оказывается, Wolfenstein 3D-подобный raycaster можно собрать примерно в 250 строках C++. Принцип довольно элегантный: для каждого вертикального столбца экрана выпускается один луч через карту, а пересечения со стенами ищутся через DDA - Digital Differential Analysis. Ключевой трюк: deltaDist = abs(1 / rayDir) После попадания в стену используется не обычная длина луча, а перпендикулярное расстояние до стены — это убирает характерное fish-eye искажение. Дальше всё почти классически: * рассчитывается высота стены на экране; * выбирается текстура; * вычисляется точка попадания; * рисуется вертикальная полоса пикселей. Минимум кода и уже получается полноценная псевдо-3D графика в стиле первых Wolfenstein/Doom-подобных движков. Отличный проект, чтобы реально понять raycasting, DDA и основы старой 3D-графики.

🧠 TIL: SQLite превращает числа в текст сразу по две цифры Обычно integer → string делают циклом: / 10 → берём цифру % 10 → о
🧠 TIL: SQLite превращает числа в текст сразу по две цифры Обычно integer → string делают циклом: / 10 → берём цифру % 10 → остаток и повторяем снова. SQLite идёт хитрее. В исходниках есть строка на 200 символов, содержащая все пары от 00 до 99: 000102030405...979899 При преобразовании числа SQLite обрабатывает его по две цифры за раз и просто берёт нужную пару символов по индексу. То есть вместо множества операций /10 и %10: делим на 100 → получаем две цифры → копируем готовую пару. Маленькая оптимизация, но именно из таких деталей и состоит быстрый системный код. Исходник: sqlite/src/util.c

🔥 Хочешь быстрее расти в IT? Хватит учиться в одиночку Окружение решает больше, чем кажется. Собрал папки и каналы, где можн
🔥 Хочешь быстрее расти в 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 Подписывайся на нужные направления и собирай себе ленту, которая реально двигает вперёд.

photo content

🛋 C++ реалистично симулирует взрослую жизнь: решил сэкономить на переезде, а всё равно заплатил за копию. const Sofa mySofa;
🛋 C++ реалистично симулирует взрослую жизнь: решил сэкономить на переезде, а всё равно заплатил за копию.

const Sofa mySofa;
Sofa newApartment = std::move(mySofa);
Кажется, диван должен «переехать». Но вызывается конструктор копирования 🤡 Подвох: `std::move` не перемещает объект и не снимает `const`. Здесь он даёт const Sofa&&, а конструктору перемещения Sofa(Sofa&&) нужна ссылка без const. Зато конструктор копирования Sofa(const Sofa&) подходит. Даже компилятор знает: переезд без неожиданных расходов не бывает.

Для работы с ИИ полезно иметь несколько моделей под рукой. Но держать ради этого несколько подписок удобно не всем. Особенно когда сегодня нужен 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

🎲 Генератор случайных чисел всего в три строки В 2003 году George Marsaglia предложил семейство генераторов Xorshift — один
🎲 Генератор случайных чисел всего в три строки В 2003 году George Marsaglia предложил семейство генераторов Xorshift — один из самых простых и быстрых PRNG. Для xorshift32 достаточно буквально трёх операций: state ^= state << 13; state ^= state >> 17; state ^= state << 5; Новое значение state становится следующим псевдослучайным числом. Почему это интересно: - почти нет вычислительных затрат; - используются только битовые сдвиги и XOR; - период для ненулевого state — до 2³² − 1; - отлично подходит для игр, симуляций и других задач, где важна скорость. Но есть важный нюанс: Xorshift не криптографически стойкий. Для токенов, паролей и security-задач его использовать нельзя. Красивый пример того, как всего несколько битовых операций превращаются в полноценный генератор псевдослучайных чисел.

🔥Приглашаем на бесплатный открытый вебинар курса «Электроника и электротехника»: «Беспроводные STM32. Разрабатываем плату дл
🔥Приглашаем на бесплатный открытый вебинар курса «Электроника и электротехника»: «Беспроводные STM32. Разрабатываем плату для микроконтроллеров с радиоинтерфейсом» 📆Когда: 21 октября 2026, 20:00 (мск) Многие разработчики сталкиваются с ситуацией: плата с Bluetooth «работает, но не летает» — дальность связи в разы меньше заявленной в даташите. Что будет на вебинаре: • Почему плата с Bluetooth работает на 5 метров, хотя в даташите обещают 50? • Что такое согласование антенны и почему без него теряется половина мощности? • Можно ли соединять вывод RF микроконтроллера напрямую с антенной или нужна обвязка? • Практические рекомендации по трассировке радиочастотных трактов. • Как адаптировать референс-дизайн под свой стек печатной платы. Зарегистрируйтесь https://otus.pw/5jPS/?erid=2W5zFGxaSRP Бесплатное занятие приурочено к курсу «Электроника и электротехника» Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

🖥 C++: объект уничтожен, а 16 МиБ всё ещё заняты std::weak_ptr может удерживать память даже при expired() == true. Причина в
🖥 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)

Repost from Rust
🦀 Что удивляет в C, если первым языком был Rust? Обычно разработчики переходят от C к Rust. Автор C for Rust Programmers пош
🦀 Что удивляет в 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

UTF-8-декодер на C: таблица и несколько строк кода Бьёрн Хёрманн реализовал декодирование UTF-8 через конечный автомат (DFA).
UTF-8-декодер на C: таблица и несколько строк кода Бьёрн Хёрманн реализовал декодирование UTF-8 через конечный автомат (DFA). Он обрабатывает байты по одному, собирает кодовую точку Unicode и проверяет корректность последовательности. Таблица utf8d выполняет две задачи: * определяет класс очередного байта; * выбирает следующее состояние автомата. `ACCEPT` означает, что кодовая точка полностью прочитана. `REJECT` - обнаружена ошибка. Остальные состояния означают, что нужны дополнительные байты. Подход удобен для потоковой обработки: если символ разорван между двумя сетевыми пакетами, достаточно сохранить состояние и накопленное значение. Нюанс: после последнего байта тоже нужно проверить состояние. Если оно не ACCEPT, строка некорректна - например, оборвалась посреди символа.

🖥 Создатель C++ раскритиковал программирование через промпты Бьярне Страуструп считает естественный язык слишком неоднозначн
🖥 Создатель C++ раскритиковал программирование через промпты Бьярне Страуструп считает естественный язык слишком неоднозначным для точного описания программ. В интервью Райану Петерману он заявил, что ИИ часто создаёт раздутый код с ошибками и уязвимостями, который сложно проверять. По его словам, изменение промпта может существенно менять реализацию, заставляя опытных разработчиков заново разбираться в результате. Страуструп рассказал, что знает специалистов, которые предпочитают уйти на пенсию, чем заниматься такой проверкой. Особенно скептически он оценивает ИИ в системах, где критичны безопасность и производительность. При этом признаёт: большая часть мирового кода не относится к этой категории.

Яндекс выложил в опенсорс YTsaurus Flow YTsaurus Flow - фреймворк потоковой обработки данных с сохранением состояния между со
Яндекс выложил в опенсорс 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

🎮 Строка из Quake III, которая выглядит как колдовство i = 0x5f3759df - (i >> 1); // what the fuck? Комментарий настоящий. Э
🎮 Строка из 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