C++ Academy (@cpluspluc) — Telegram-канал | Telegram Dialogs
Telegram Dialogs — логотип
Все каналы
C++ Academy

C++ Academy

@cpluspluc

15.5K подписчиков технологии 💬 Комментарии открыты

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

Последние публикации

C++ Academy
31.08.2026 10:14 · 👁 927
3D-фрактал Mandelbulb можно отрендерить примерно в 100 строках C++ - вообще без полноценного 3D-движка. В основе всего несколько идей: - Mandelbulb строится через сферическую итерацию в степени 8 - distance estimator примерно определяет расстояние до поверхности фрактала - sphere tracing двигает луч большими шагами через пустое пространство - когда луч приближается к поверхности, конечные разности вычисляют нормаль для освещения - результат записывается напрямую в обычный PPM-файл То есть сложнейший на вид 3D-фрактал получается из математики, ray marching и небольшого количества C++. Особенно красиво здесь то, что геометрия вообще не хранится в виде миллионов полигонов - поверхность вычисляется прямо во время рендера.
C++ Academy
29.08.2026 12:03 · 👁 1.4K
🔥 Джулиан Сторер - разработчик с более чем 30-летним опытом C++ Он создал сразу несколько заметных проектов в мире аудио-разработки: - Tracktion DAW - JUCE C++ Framework - Cmajor DSP language Особенно интересно тем, кто работает с: - C++ - аудио и музыкой - DSP - DAW - real-time приложениями У него много сильного open-source кода и проектов, которые стоит изучить разработчикам из audio/software engineering. https://github.com/julianstorer
C++ Academy
28.08.2026 12:20 · 👁 1.5K
Как Linux увеличивает счётчик без lock на SMP-системах В ядре Linux есть трюк, который выглядит почти слишком просто: не заставлять все CPU драться за одну переменную. Вместо общего счётчика используется per-CPU переменная - у каждого ядра своя копия данных. На x86 макрос this_cpu_inc(var) превращается в одну инструкцию incl, которая работает с областью данных текущего CPU через GS. Что это даёт: * нет общего lock * нет постоянной конкуренции между ядрами * инкремент выполняется локально для текущего CPU * операция получается быстрой и дешёвой Идея мощная: если данные можно разделить по CPU, не нужно синхронизировать каждый маленький апдейт между всеми ядрами. Так ядро экономит огромное количество лишней блокировки там, где код выполняется постоянно.
C++ Academy
28.08.2026 09:17 · 👁 1.6K
❓Кто этот призрак в вашем коде: изучаем особенности работы с легаси на C++ Легаси — вот что объединяет всех разработчиков на всех языках программирования. Мы учимся уживаться с «наследием», встраиваем его в современную кодовую базу или стараемся не трогать. Пришло время разобраться с легаси в email-проекте Ghost in the code. Вы получите семь писем от инженеров, в числе которых представитель России в Международной рабочей группе по стандартизации C++ Антон Полухин и эксперт по архитектуре Константин Владимиров. Вместе с ними и другими опытным разработчиками пройдете путь от навигации по «зрелому» коду с помощью AI до выстраивания процессов с учетом легаси. ➡️Подписывайтесь на серию писем, это бесплатно. Оставляйте email-адрес на сайте проекта — первое письмо придет 15 сентября.
C++ Academy
27.08.2026 13:15 · 👁 1.6K
✔️ curl - один из самых недооценённых проектов в истории софта. Первый релиз вышел 20 марта 1998 года. Его запустил один разработчик - Daniel Stenberg. Прошло больше 27 лет, а он всё ещё поддерживает проект. Сегодня curl работает на миллиардах устройств и поставляется почти везде: * macOS * основные Linux-дистрибутивы * Windows 10 и новее * серверы * контейнеры * embedded-системы * CI/CD пайплайны Ирония в том, что многие пользуются curl каждый день, даже не думая об этом. Одна маленькая CLI-утилита стала невидимой инфраструктурой интернета. Вот так выглядит настоящий open source: без хайпа, без миллиардных раундов, но с кодом, который держит половину мира.
C++ Academy
27.08.2026 09:05 · 👁 1.6K
✈️🌍 FlightGear: мощный симулятор полетов с открытым исходным кодом. Созданный для исследователей и энтузиастов авиации, FlightGear предлагает реалистичную симуляцию полетов с поддержкой множества самолетов и ландшафтов. Проект активно развивается сообществом, предоставляя возможность пользователям вносить свой вклад и улучшать опыт. 🚀Основные моменты: - Поддержка множества типов самолетов и ландшафтов. - Реалистичная физика полета и погодные условия. - Многофункциональный интерфейс и расширяемая архитектура. - Активное сообщество разработчиков и пользователей. - Кроссплатформенная доступность. 📌 GitHub: https://github.com/FlightGear/flightgear #c++
C++ Academy
25.08.2026 18:03 · 👁 1.7K
🖥 Большинство “простых” shuffle-алгоритмов дают кривой рандом Частая ошибка: for (int i = 0; i < n; i++) { int j = rand() % n; swap(a[i], a[j]); } На вид всё нормально: каждый элемент случайно меняется местами с другим. Но проблема в вероятностях. Для массива из n элементов существует n! перестановок. Хороший shuffle должен давать каждой перестановке одинаковый шанс. Наивный вариант делает n шагов, и на каждом шаге выбирает индекс из полного диапазона 0..n-1. В итоге некоторые перестановки появляются чаще других. Правильный подход - Fisher-Yates shuffle: for (int i = n - 1; i > 0; i--) { int j = random(0, i); swap(a[i], a[j]); } Идея простая: на каждом шаге мы выбираем элемент только из ещё не зафиксированной части массива. Сначала выбираем последний элемент из всего массива. Потом предпоследний - из оставшихся. Потом следующий - из ещё меньшего диапазона. Так каждая перестановка получает одинаковую вероятность. В C++ лучше не писать через rand() % n, потому что там может быть ещё и modulo bias. Нормальный вариант: std::mt19937 rng(std::random_device{}()); for (int i = n - 1; i > 0; --i) { std::uniform_int_distribution<int> dist(0, i); int j = dist(rng); std::swap(a[i], a[j]); } Shuffle - хороший пример, где код может выглядеть “рандомным”, но математически быть неправильным.
C++ Academy
23.08.2026 10:54 · 👁 2.6K
В C есть синтаксис, который выглядит как опечатка: case '0' ... '9': Кажется, что такой switch вообще не должен компилироваться. Но в GCC это работает. Это расширение называется case ranges — можно задавать сразу диапазон значений внутри case. Например: case '0' ... '9': return DIGIT; case 'a' ... 'z': case 'A' ... 'Z': return LETTER; Вместо десяти отдельных case для цифр и ещё десятков для букв — одна строка на диапазон. Но есть нюанс: это не стандартный C, а расширение GCC. Если код должен быть переносимым между компиляторами, на такой синтаксис лучше не рассчитывать. Одна из тех возможностей C, которые выглядят неправильно, пока не узнаешь, что компилятор действительно это поддерживает.
C++ Academy
22.08.2026 12:01 · 👁 2.4K
Одна строка C, которая может сломать вам логику В C порядок вычисления аргументов функции не определён. foo(i++, i++); Из-за этого один и тот же код может дать разный результат: * gcc: foo(1, 0) * clang: foo(0, 1) Причина простая: компиляторы по-разному вычисляют аргументы. Такие вещи годами становились источником очень неприятных багов. Хорошая новость: сейчас -Wall обычно умеет это подсветить. Вывод банальный, но важный: не пишите код, который зависит от порядка вычисления аргументов.
C++ Academy
22.08.2026 10:10 · 👁 2K
🔥 Хочешь быстрее расти в 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_1001_notes 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 Подписывайся на нужные направления и собирай себе ленту, которая реально двигает вперёд.
Чат поддержки
Ответим здесь же, обычно быстро
Здравствуйте! Напишите ваш вопрос — оператор ответит в этом чате.