| Date | Title | Description |
| 25.03.2026 | Почему вещественные числа такие странные | В прошлом посте я писал о попытках вывести математику из принципов формальной логики. Мы начали с арифметики Пеано, в которой построение натуральных чисел выполнялось из двух произвольных конструкций: элемента, обозначающего ноль, и абстрак... |
| 24.03.2026 | Как математика стала такой абстрактной? | Сегодня математика считается крайне абстрактной наукой. На форумах наподобие Stack Exchange опытные математики насмехаются над новичками, просящими понятных объяснений эзотерических математических концепций, а постоянные попытки привязать о... |
| 26.02.2026 | Forza Tarantool: разработка на C для встроенного сервера приложений | Tarantool – это in-memory СУБД с открытым исходным кодом, разрабатываемая VK Tech. Существует два способа разработки приложений для Tarantool. Как и к большинству СУБД, к Tarantool можно подключаться из внешнего приложения по TCP/IP. С этой... |
| 25.02.2026 | C++: экономим на спичках | Недавно на работе мы столкнулись с большим потреблением памяти в игре. Связано оно было с хранением большого количества информации о террейне и свойствах его клеток, которое нужно игре для разных геймплейных расчетов. Проблема насущная, осо... |
| 20.02.2026 | Обманываем atomic | Давайте обманем атомик. Вот две функции - можно ли, общаясь к атомику только с их помощью, увидеть некорректное состояние ?
void write(std::atomic& x, int64_t v) { x.store(v, std::memory_order_seq_cst); } int64_t read(std::atomic& x... |
| 17.02.2026 | Долгожданный оператор _Countof | "Пять грустных солдат, пять веселых солдат и ефрейтор..."
Окуджава Б.Ш., 1961Содержание
Оператор _Countof
Этимология названия
Реализация
Терминология
Жизнь до _Countof
Идиома количества элементов массива
Подводные камни оператора ... |
| 05.02.2026 | Так как же всё-таки быстро конкатенировать строки в C++? | (и не только строки)
Всем практикующим программистам приходится конкатенировать строки. Именно конкатенировать, у нас не какой-то там JavaScript или PHP, у нас в C++ это называется вот таким заумным словом. Программисты на других языках без... |
| 30.01.2026 | Нескучное программирование. Важны ли компилятору имена | Есть старая шутка о том “чем отличается обычный программист на С++ от хорошего программиста на С++”? Первый пишет код, а второй может объяснить, почему он работает.
Это конечно шутка, но сейчас далеко не всякий даже хороший программист може... |
| 14.01.2026 | std::move ничего никуда не двигает: подробный рассказ о категориях значений в C++ | Проблема: когда из-за «оптимизации» код замедляется
Начнём с ситуации, в которой могут спотыкаться даже опытные разработчики. Допустим, вы написали на C++ следующий код, который выглядит совершенно нормальным:
struct HeavyObject { std::stri... |
| 12.01.2026 | Корутины C++20 | Сеанс разоблачения магии.
Думаю, многие согласятся, что реализация корутин в C++20 с первого взгляда выглядит страшновато, а документация скорее более запутывает, чем вносит ясность. Многие воспринимают работу приостанавливаемых функций как... |
| 09.01.2026 | Может ли устареть инкремент: обзор выполнения оператора на современных вычислительных платформах | Привет, Хабр! В ходе своей работы я часто изучаю сам и обучаю других писать и оптимизировать код. Однако когда я рекомендую в своих материалах «делайте так», я не всегда уверен, что тиражирую актуальную и достоверную информацию.
Для подтвер... |
| 30.12.2025 | Баги на диком западе: топ-10 ошибок в C и C++ проектах за 2025 год | Весь год мы скакали по бескрайним полям открытого кода, расследуя преступления, отстреливая уязвимости и собирая трофеи. Но сегодня мы решили заглянуть в самый пыльный бар, где у стойки стоит опытный шериф и вспоминает десять самых лихих и ... |
| 17.12.2025 | Анатомия performance-critical C++ кода на примере ECS | Всем привет! Это продолжение статей про мою ECS with Sectors в моём движке Stellar Forge!
В предыдущей статье я описал структуру памяти, что являлось подготовкой фундамента для быстрой итерации, а сейчас хочу рассказать как по этой памяти п... |
| 13.12.2025 | Почему xor eax, eax используется так часто? | В одном из моих докладов по ассемблеру я показал список из 20 самых часто исполняемых команд на среднем десктопе x86 с Linux. Разумеется, в этом списке были привычные mov, add, lea, sub, jmp, call и так далее; неожиданным стало включение в ... |
| 03.12.2025 | Введение в атомики. C++ | Мотивация
Заметил недостаток качественных статей по атомикам. Сам когда-то столкнулся с тем, что хотел прочитать статью, где простым и понятным языком рассказывается об этом, но, к сожалению, найти не смог.Причины существования атомиков
dat... |
| 01.07.2025 | Встреча ISO C++ в Софии: С++26 и рефлексия
Compile-time рефлексия
Рефлексия аннотаций и параметров функций
std::optional
Параллельные алгоритмы
Ещё немного о ranges
Прочие новинки
Итоги... | Привет! На связи Антон Полухин из Техплатформы Городских сервисов Яндекса, и сейчас я расскажу о софийской встрече Международного комитета по стандартизации языка программирования C++, в которой принимал активное участие. Это была последняя... |
| 09.06.2025 | Детальный обзор полей Галуа | Эварист Галуа, умер на дуэли на 21 году жизни, его работы являются фундаментом современной алгебры, а Intel в 2021 году выпустил набор процессорных расширений для работы с полями Галуа.
"Попросите Якоби или Гаусса публично высказать св... |
| 18.05.2025 | Проверка високосности года в трёх командах CPU | Показанным ниже кодом вы можете проверить на високосность год в интервале 0 ≤ y ≤ 102499 всего примерно тремя командами CPU:
bool is_leap_year_fast(uint32_t y) { return ((y * 1073750999) & 3221352463) ... |
| 26.03.2025 | Почему игродев остается на С++17 | Последние пару-тройку лет на конференциях все чаще я слышу жалобы знакомых в игрострое о том, что текущий вектор развития «современного C++» не соответствует потребностям игровой разработки. Реальные полезные нововведения фактически закончи... |
| 26.02.2025 | Алгоритмы манипуляций с битами | TL; DR в статье приведены алгоритмы обработки коротких битовых строк, обычно вмещающихся в машинное слово, в большей степени эти алгоритмы предназначены для обработки строк длины 32 или 64, но многие из них можно применять для SIMD инструкц... |
| 06.02.2025 | modern-cpp-kafka для C++. Решаем проблемы владения и сериализации | Доброго времени суток! Эта статья написана для тех, кто в общих чертах знаком с тем, что такое и для чего используется Apache Kafka, кто такие Producer и Consumer и как они друг с другом работают. Целью этой статьи является показать способ ... |
| 31.01.2025 | The Branchless Code: A Dive into UTF-8 Encoding and C Standards | In the world of programming, efficiency is king. Developers are always on the hunt for ways to optimize their code. One intriguing area of focus is UTF-8 encoding, a method that allows computers to represent text in a compact form. Recently... |
| 30.01.2025 | Маленький bool Дума | Должен признать, у меня есть некая особая любовь к классическому DOOM. Несмотря на то, что игре уже 31 год, в нее все еще весело играть самому (хотя и выходит у меня так себе) или просто смотреть на то, как другие в нее играют (вот в этом я... |
| 30.01.2025 | Кодирование UTF-8 без ветвления | Можно ли кодировать UTF-8 без ветвлений?
Да.
Вопрос
Натан Голдбаум задал в чате Recurse вопрос:
Я знаю, как декодировать UTF-8 с помощью битовой математики и таблиц поиска (см. https://github.com/skeeto/branchless-utf8), но если я хочу прео... |
| 24.01.2025 | The Perils of Polymorphic Allocators: A Cautionary Tale for Developers | In the world of software development, efficiency is king. Every millisecond counts. Yet, in the quest for speed, developers often overlook the subtleties of memory management. Enter polymorphic allocators, a feature introduced in C++17 that... |
| 23.01.2025 | О том, как легкомысленное использование полиморфных аллокаторов может испортить вам жизнь | Вы хотите идти в ногу со временем и перевести ваш проект на полиморфные аллокаторы? Вас не могут отговорить от этого даже затраты на виртуальные вызовы? Тогда вы просто обязаны знать о нюансах с лайфтаймом, и почему нельзя просто взять и по... |
| 19.01.2025 | Операционная система в 1 000 строках кода (Часть 1) | Всем привет! В этой небольшой книге (серии статей, — прим. пер.) мы с нуля, шаг за шагом, напишем скромную ОС.
Вы можете насторожиться, услышав, что разработка ОС или ядра, в частности, их базовых функций на удивление проста. Даже система L... |
| 03.01.2025 | The Future of C++: Static Reflection and Its Implications | C++ is evolving. The upcoming C++26 standard promises to introduce static reflection, a feature that could revolutionize how developers interact with their code. Static reflection allows programs to observe and manipulate their own structur... |
| 02.01.2025 | Статическая рефлексия в C++ | Статическая рефлексия обсуждается в грядущем C++26. Wu Yongwei демонстрирует, как применять рефлексию уже сейчас, и показывает примеры того, что может быть станет возможным в C++26.
Статическая рефлексия станет важной частью генерации прогр... |
| 29.12.2024 | The Race for Performance: Optimizing Ring Buffers in C++ | In the world of programming, speed is king. Every millisecond counts. When it comes to data structures, the ring buffer stands out as a champion. It’s a simple yet powerful tool, especially in concurrent programming. But like any champion, ... |
| 28.12.2024 | Судный день: топ-10 ошибок в C и C++ проектах за 2024 год | Каждый год мы наблюдаем одинаковую картину: ошибки портят нам код, пытаясь доказать, что они здесь главные. Но сегодня настал день расправы. Давайте посмотрим, какие самые интересные баги мы нашли в этом году...Всем встать!
В течение целого... |
| 21.12.2024 | Оптимизация компилятора на пальцах | Почему я это написал, и как читать статью
Недавно получил от друга такое сообщение:
Знаешь, какая статья была бы реально интересна? Если бы в ней было показано, что именно происходит с твоим кодом в результате оптимизаций.
Я сразу же подума... |
| 21.12.2024 | PVS-Studio соответствует требованиям ГОСТ Р 71207—2024 (статический анализ программного обеспечения) | Инструментальное средство PVS-Studio разрабатывается с учётом требований, предъявляемых к статическим анализаторам в ГОСТ Р 71207–2024, выявляет критические ошибки и может использоваться при разработке безопасного программного обеспечения. ... |
| 16.12.2024 | Развенчиваем популярные мифы и заблуждения о компиляторах | ▍ Введение
Компиляторы всегда были окружены аурой загадочности и магии. Из-за этого многие из нас верят, что они делают то, чего они не делают, или что они не делают того, что делают1
Эта статья станет своего рода продолжением статьи о комп... |
| 12.12.2024 | Embracing the Future of C++: Trivial Relocation and Time Management with std::chrono | C++ is a language that evolves, like a river carving its path through rock. The introduction of new features often reshapes how developers approach problems. Two recent advancements stand out: trivial relocation in C++26 and the powerful st... |
| 08.12.2024 | Тривиальное перемещение и рефлексия: реализуем фичу из C++26 в библиотеке | В статье разработчик Барри Ревзин* объясняет, как можно определить и проверить свойства типов для обеспечения тривиального перемещения, разбирая нюансы эффективности, удобства и точности реализации. Основная проблема здесь в необходимости у... |
| 21.11.2024 | The Inactivity Reboot: A New Layer of Security in iOS 18 | In the digital age, security is paramount. With every update, tech giants like Apple strive to bolster defenses against threats. The latest addition to iOS 18, the Inactivity Reboot feature, exemplifies this commitment. This function aims t... |
| 20.11.2024 | Реверс-инжиниринг новой функции iOS Inactivity Reboot | В iOS 18 появилась новая функция безопасности: перезагрузка бездействия (inactivity reboot). От чего она защищает и как работает? В этом посте мы рассмотрим все подробности вплоть до расширения ядра и Secure Enclave Processor.
Безопасность ... |
| 19.11.2024 | Дебажим баги в дебаггере x64dbg. «Шаг с выходом» в GUI | С отладчиком нужно как-то взаимодействовать: через текстовый или графический интерфейс. В "оболочке" программы с хорошо отлаженным ядром может оказаться неприятный баг, и пользователю это вряд ли понравится. Любому разработчику не... |
| 10.11.2024 | Тяжелый H[header] | Всегда хотел написать о чем-нибудь легком и воздушном, как пишет например @antoshkka про userver или о том, как легко и непринужденно обернуть какую-нибудь хрень алгоритм в десяток шаблонов, полить это все std::optional и попивая кофе ждать... |
| 05.11.2024 | Грязные трюки C++ из userver и Boost | Привет, я Антон Полухин из Техплатформы Екома и Райдтеха Яндекса. Моя команда разрабатывает userver — современный опенсорсный асинхронный фреймворк с богатым набором абстракций для быстрого и комфортного создания микросервисов, сервисов и у... |
| 31.10.2024 | Игровое поле экспериментов: какие ошибки могут подстерегать программиста при создании эмулятора | Создание эмулятора для игр Xbox 360 на ПК — задача не из простых, и на каждом шагу можно столкнуться с коварными багами. Сегодня рассмотрим типичные проблемы, которые можно обнаружить при разработке, на примере проекта Xenia.Введение
Не так... |
| 30.10.2024 | Как Unity отказались от своих строк | В 2014 году в движке Unity набралось столько критических изменений и новинок, что "пятерка" фактически была другим движком. И хотя многие за одинаковым фасадом не особо этого и заметили, но изменения коснулись всех компонентов дви... |
| 29.10.2024 | The Art of Finding Errors: A Deep Dive into Static Code Analysis | In the world of software development, errors are like hidden landmines. They lurk beneath the surface, waiting to explode at the worst possible moment. Static code analysis is the flashlight that illuminates these dangers. It helps develope... |
| 28.10.2024 | Самая красивая ошибка, которую я нашёл с помощью PVS-Studio в 2024 году | Сразу предупреждаю, мои вкусы очень специфичны. Красота ошибки в том, что человеку её очень сложно найти. Я не верю, что её можно заметить при обзоре кода. Если только заранее знать, что она есть, и искать её целенаправленно.
Ошибку я нашёл... |
| 24.10.2024 | Пошаговое повышение производительности алгоритма | Недавно мне довелось работать над новым алгоритмом приближённого поиска ближайших соседей, который называется RaBitQ. Автор этого алгоритма уже предоставил достаточно скоростную реализацию на C++. Я попытался переписать этот алгоритм на Rus... |
| 21.10.2024 | Сложность алгоритмов и типичные ошибки в Python | Всем привет! Я расскажу, что такое сложность алгоритмов и откуда она берётся, разберу типичные заблуждения и самые частые ошибки новичков. Материал рассчитан в первую очередь на начинающих Python-разработчиков, а также на тех, у кого Python... |
| 14.10.2024 | Почему важно оптимизировать формат данных | Если вам нужно повысить скорость вашей программы, то первым делом логично будет вспомнить курс по структурам данных и оптимизировать алгоритмическую сложность.
Алгоритмы — важнейшая часть программы: замена «горячего» алгоритма O(n) менее сл... |
| 09.10.2024 | PPSSPP или всё же psp? Смотрим баги в коде из будущего | Думаю, многих из нас охватывает тёплое чувство ностальгии, когда речь идёт о PSP. Эта портативная консоль, выпущенная в 2004 году, стала настоящим прорывом для своего времени. Она подарила нам возможность наслаждаться полноценными игровыми ... |
| 30.09.2024 | Просто не копируй это | То, о чем я собираюсь рассказать в статье настолько тривиально, что любой, даже начинающий, разработчик уже это знает - я правда очень на это надеюсь. Тем не менее, приходящий на ревью код, показывает, что люди как делали, так и продолжают ... |
| 29.09.2024 | The Winamp Saga: Open Source, Licensing Woes, and a Legacy Reborn | In late September 2024, the digital world was rocked by revelations surrounding Winamp, the iconic media player that has survived the test of time. The Llama Group, the current steward of Winamp, opened its source code to the public, but no... |
| 27.09.2024 | std::array в С++ не медленнее массива в С | Или почему не нужно бояться того, что удобно работает.
Стойте! Уберите руки от клавиатуры, дайте человеку сказать! У этой статьи есть обоснованные причины и благая цель! В прошлой моей статье о массивах (которую необязательно читать для пон... |
| 11.09.2024 | std::execution принят в C++26 — пора знакомиться | Единый фреймворк асинхронности и параллелизма, возможность делить вычислительные ресурсы разными кодовыми базами без сложной интеграции, простота использования и гибкость - все это то, чего в C++ никогда не было.
В конце июня стандартный ко... |
| 05.09.2024 | Строки в игровых движках | Исторически потребность в строках и их использование в игровых движках было довольно ограниченое, кроме, разве что, локализации ресурсов, где была необходимость полноценной поддержки чего-то отличного от набора ASCII символов. Но, при желан... |
| 01.09.2024 | Симкод — современный язык ассемблера | Начну с определений.
Симкод — это последовательность симкоманд.
Симкоманда — это символьная машинная макрокоманда с Си-подобным синтаксисом.
Например, ассемблерной команде add rax, rbx соответствует симкоманда rax += rbx.
Симкод позволяет в... |
| 30.08.2024 | Гарри Поттер и имя типа в компайлтайм | Пытаюсь понять почему код не компилится
Пару лет назад я написал статью про получение имен элементов enum в моих любимых плюсах без использования typeid, макросов и черной магии, а то и вообще в компайлтайм. Хотя нет, немного магии там все ... |
| 24.08.2024 | Flutter Entertainment's Bold Move: Investing in Hyderabad's Future | In a world where technology and business services intertwine, Flutter Entertainment is making waves. The company has announced a significant investment of $3.5 million to establish a Global Capability Centre (GCC) in Hyderabad. This decisio... |
| 23.08.2024 | Что значит инициализировать int в C++? | Недавно я получил по почте от Сэма Джонсона этот вопрос. Вот слегка отредактированное письмо Сэма:
«Возьмём для примера этот код в локальной области видимости функции:
int a; a = 5;
Многие люди считают, что инициализация происходит в строке... |
| 11.08.2024 | Реализуем эффективный тупль с помощью C++26 | Свет видел много любительских реализаций std::tuple, и реализация своих велосипедов — наверное, действительно действенный способ обучения: вряд-ли можно сказать, что ты что-то по-настоящему понимаешь, если не можешь объяснить, как это что-т... |
| 02.08.2024 | Как поделить не деля или оптимизация деления компиляторам(и) | Если вы никогда не пробовали смотреть как код на C++ разворачивается компилятором в код Assembly – вас ждёт много сюрпризов, причём, не нужно смотреть какой-то замудренный исходный код полный templates или других сложных конструкций: рассмо... |
| 24.07.2024 | Фиксим баги в вашем AI или разбор ошибок в OpenVINO | Друзья-разработчики, приглашаем вас продолжить захватывающее путешествие по дебрям кода Intel OpenVINO! Вооружившись статическим анализатором аки детективы, мы разоблачим наиболее коварные, интересные ошибки и опечатки, а также их скрытые т... |
| 09.07.2024 | UB или не UB – вот в чём вопрос: как gcc и clang обрабатывают статически известное неопределённое поведение | Недавно у нас в команде зашла дискуссия о неопределённом поведении (UB) в C. Напомню для тех, кто не знает: если мы пишем такой код, эффект от выполнения которого (и события в процессе его выполнения) строго не определён в спецификации язык... |
| 26.06.2024 | Нативная рефлексия в C++ уже близко | Почему в 2024 году нам приходится писать каст енума к строке вручную, для каждого кастомного типа нужна своя функция логирования, а биндинги к C++ библиотеке требуют кучу повторяющегося кода?
Если Вы задавались этими, или подобными вопросам... |
| 26.06.2024 | Выжимаем из Go максимум производительности | Разработчики, которые используют Go, сталкиваются с задачей выжать максимальную производительность из каждой строки кода. Но что делать, если оптимизировать уже нечего, а увеличивать скорость всё равно надо?
Меня зовут Никита Галушко. Я ста... |
| 26.06.2024 | Type Loopholes: решая нерешаемое. Рефлексия времени компиляции | loophole - лазейка " data-abbr="Лупхолы">Лупхолы — это техника, позволяющая манипулировать глобальным состоянием компилятора, добавляя значения и считывая их.
Эта техника позволяет решать многие задачи, некоторые из которы... |
| 19.06.2024 | Ненавижу, _____, C++ массивы | Или почему мне кажется, что про них нужно знать, но не нужно использовать.Вступление
Друзья, вы помните момент, когда впервые сунули указатель на первый элемент массива в оператор sizeof, и ваш код перестал работать так, как вы задумывали? ... |
| 17.06.2024 | UB or not UB: дублируем элемент std::vector | В статье выясним, можно ли с точки зрения стандарта языка C++ тривиальным вызовом push_back продублировать элемент std::vector. Отвечая на простой вопрос, столкнемся с более интересными: что собой представляет внутренний мир вектора, как &q... |
| 14.06.2024 | Macroni: рецепт поступательного улучшения языка программирования | Хотя, Clang и используется в качестве инструмента для рефакторинга и статического анализа, у него есть серьёзный недостаток: в абстрактном синтаксическом дереве не предоставляется информации о происхождении конкретных расширений-макросов на... |
| 23.05.2024 | С++: освобождение ресурсов в деструкторах с использованием вспомогательных функций | В этой статье мы рассмотрим, как правильно разрушать объекты в ООП программе на языке C++, не выполняя избыточных операций. Этим мы завершим цикл публикаций, посвящённый обзору ошибок в игровом движке qdEngine.
Неудачная реализация очистки ... |
| 20.05.2024 | Compiler Explorer — уникальный проект для исследования компилируемого кода | Этот пост посвящён замечательному инструменту, полезному для каждого, кто интересуется компиляторами или архитектурой компьютеров. Это Compiler Explorer, который я в дальнейшем будут называть CE.
CE — потрясающий инструмент. Если вы с ним н... |
| 16.05.2024 | Многообразие связных списков | Связный список – классическая структура данных, которая позволяет быстрые вставки/удаления, но при этом просаживает другие операции (случайный доступ к элементу). Мы пройдёмся от базовой реализации до других возможных вариаций этой структур... |
| 16.04.2024 | 35+ бесплатных ресурсов для начинающих разработчиков С++ | Привет. Предположим, вы захотели начать изучать языĸ программирования C++ или, возможно, тех материалов, что уже изучили, вам недостаточно.
Я — Савва, программирую уже больше 7 лет, работаю менеджером команды наставников в Практикуме на кур... |
| 05.04.2024 | Как не надо проверять размер массива в С++ | Как часто вам приходится сталкиваться с конструкцией sizeof(array)/sizeof(array[0]) для определения размера массива? Очень надеюсь, что не часто, ведь на дворе уже 2024 год. В заметке поговорим о недостатках конструкции, откуда она берётся ... |
| 19.03.2024 | Выявление ошибок в работе с памятью в C и C++: Сравниваем Sanitizers и Valgrind | В этой статье вашему вниманию представлено сравнение двух инструментов для поиска ошибок в работе с памятью в программах, написанных на memory-unsafe (небезопасных при работе с памятью) языках — Sanitizers и Valgrind. Эти два инструмента ра... |
| 04.03.2024 | Проверяем Blender | Командный центр PVS-Studio: "Как быстро летит время... А ведь в этом году, второго января, Blender исполнилось 30 лет! Как будто ещё вчера мы публиковали статью с разбором ошибок... Как 8 лет назад? Надо срочно исправлять ситуацию!&quo... |
| 24.01.2024 | Многообразие функциональных обёрток | A polymorphic function object wrapper
В далёком 2002-ом комитет по стандартизации C++ посетил пропозал, предлагавший ввести шаблонный класс, некий обобщенный «указатель на функцию», способный работать как с простыми указателями на функции, ... |
| 01.01.2024 | Что не является ролью человека на планете и в космосе. Мнение | Возможно, кому-то не понравится такое сравнение, но я считаю, что так же как у внутренних органов {а также у клеток, из которых они состоят} есть своя определённая роль, есть определённая роль и у человека как вида на планете. Вот только ро... |
| 01.01.2024 | 11lc — инновационный компилятор для нового языка программирования | Данная статья посвящена находящемуся на стадии проектирования компилятору 11lc. В ней перечисляются наиболее яркие особенности этого компилятора.
Отсутствие скрытой неэффективности
Это свойство скорее языка программирования 11l, нежели комп... |
| 17.12.2023 | Тестовое в Firefly Studios или игра за час | Пару недель назад, на меня вышла HR "светлячков" и пригласила поговорить о позиции AI программера в их новую старую игру. Я был несколько удивлен, потому что знаком с парой ребят из студии и знаю, что найм у них сейчас остановлен.... |
| 10.12.2023 | 30 лет DOOM: новый код — новые баги | Сегодня первой игре из серии DOOM исполняется ровно 30 лет! Мы не могли обойти стороной это событие и в честь этого решили посмотреть, как же выглядит код этой легендарной игры спустя годы.Предисловие
DOOM навсегда останется в истории как о... |
| 10.12.2023 | Магия swizzle из шейдеров в C++ | В шейдере мы можем написать vec3 v0 = v1.xxy * 2, а также любую другую комбинацию x, y, z и w в зависимости от длины вектора. Я рассматриваю только размеры вектора до 4, как самые распространенные для использования. Полученный вектор может ... |
| 28.11.2023 | 64-битных переменных для банковского счёта «хватит всем»? | «640 КБ хватит всем», — предположительно Билл Гейтс, примерно 1981 год.
Мы решили, что в нашей системе управления финансовыми базами данных TigerBeetle для хранения всех финансовых сумм и балансов будут использоваться 128-битные числа, и чт... |
| 24.11.2023 | Выпуск среды разработки Qt Creator 12 | Вчера, 23 ноября 2023 года вышел релиз среды разработки Qt Creator 12.
Qt Creator (ранее известная под кодовым названием Greenhouse) — свободная IDE для разработки на С, C++, JavaScript и QML. Разработана Trolltech (Digia) для работы с фрей... |
| 05.11.2023 | Поговорим об оптимизирующих компиляторах. Сказ седьмой: борьба с проверками диапазонов | Это цикл статей об оптимизирующих компиляторах вообще и LLVM в частности. Смотри все статьи данного цикла:
SSA форма
Доминирование
Неопределённое поведение
Циклы
CSE
Цикловые инварианты
Проверки диапазонов
В этой статье мы поговорим о том, ... |
| 31.10.2023 | Проверяем YTsaurus. Доступность, надёжность, open source | В этой статье мы расскажем вам о результатах проверки кода проекта YTsaurus статическим анализатором PVS-Studio и разберём найденные ошибки. Уже больше полугода назад YTsaurus — мощная BigData-система — стала Open Source. Её разработка и ис... |
| 18.10.2023 | FreeCAD и C++ код с неопределённым поведением для медитации | Изучая код проекта с помощью статического анализатора, иногда задаёшься вопросом: "Как возникла ошибка и почему её до сих пор не заметили?" Хотите посмотреть пример? Тогда приглашаем познакомиться с этой статьёй.
Противоестественн... |
| 12.10.2023 | Самый быстрый поиск пути на Go без аллокаций и СМС | Алгоритмы важны. Но реализовать их можно очень по-разному.
При одном и том же алгоритме, оптимизированная библиотека будет в тысячу раз быстрее наивной.
Любите оптимизации, специализированные структуры данных и трюки с битами? Тогда скорее ... |
| 16.08.2023 | Lua FFI
«Мишка сверху весь из плюша, интересно что внутри?» | Под катом описание довольно примитивного FFI для Lua под Win_x64.
Но который, тем не менее, позволяет делать:
local ffi = require ("ffi") local msg = ffi("user32.dll", "MessageBoxA") msg(0, "Message",... |
| 13.08.2023 | Поговорим об оптимизирующих компиляторах. Сказ пятый: удаление общих подвыражений | Это цикл статей об оптимизирующих компиляторах вообще и LLVM в частности. Смотри все статьи данного цикла:
SSA форма
Доминирование
Неопределённое поведение
Циклы
CSE
В этой статье мы поговорим о классе оптимизаций, которые позволяют избегат... |
| 07.08.2023 | Правильный if для ускорения работы | Поводом для размышления по этой теме послужил пост где поясняется на примерах два разных пути работы условного оператора if. Приводится генерируемый ассемблер где показано, что в одном случае после кода сравнения идет блок с кодом положител... |
| 13.07.2023 | Команда AArch64, о которой вам нужно знать | Сегодня я бы хотел поговорить о недооценённой особенности архитектуры набора команд AArch64. На неё часто не обращают внимания, но её активно используют компиляторы. Это хорошая короткая история о том, как Arm стал лучше и «ещё более CISC» ... |
| 10.07.2023 | Почему язык C никогда не помешает вам совершать ошибки | Короткий ответ: потому что мы так сказали.
:)
... Что?
Ладно, признаю, для статьи это неприемлемо короткий ответ, и мои провокационные слова требуют пояснений.
Изначально проведение конференции Комитета по С было запланировано во Фрайбурге ... |
| 30.06.2023 | Атомики в Go: особенности внутренней реализации | Атомики в Go - это один из методов синхронизации горутин. Они находятся в пакете стандартной библиотеки sync/atomic. Некоторые статьи сравнивают atomics с mutex, так как это примитивы синхронизации низкого уровня. Они предоставляют бенчмарк... |
| 28.06.2023 | Подводные камни С++. Решаем загадки неопределённого поведения, ч. 1 | Изучение и понимание неопределённого поведения — важный шаг для разработчика C++, поскольку undefined behavior бывает источником серьёзных ошибок и проблем в программах. UB может проявляться в разных аспектах языка, включая операции с памят... |
| 20.06.2023 | Модули C++20 и GCC11 | Введение
Одним из главных нововведений стандарта C++20 является добавление модулей. Модули призваны радикально изменить структуру кодовых баз C++ и, возможно, сигнализируют о грядущей кончине заголовков (но, скорее всего, не на моем веку). ... |
| 14.06.2023 | Поговорим об оптимизирующих компиляторах. Сказ третий: неопределённое поведение и оптимизации | Это цикл статей об оптимизирующих компиляторах вообще и LLVM в частности. Смотри все статьи данного цикла:
SSA форма
Доминирование
Неопределённое поведение
Вообще-то, третья статья данного цикла должна была рассказывать о конкретных оптимиз... |
| 14.06.2023 | 60 антипаттернов для С++ программиста, часть 5 (совет 21 — 25) | Перед вами обновлённая коллекция вредных советов для C++ программистов, которая превратилась в целую электронную книгу. Всего их 60, и каждый сопровождается пояснением, почему на самом деле ему не стоит следовать. Всё будет одновременно и в... |
| 14.06.2023 | Оптимизируем декодирование u128 из base62 | В предыдущей статье мы рассмотрели кодирование u128 в base62, теперь реализуем и оптимизируем обратную операцию декодирования u128 из base62, это может понадобиться, например, для более компактного хранения в памяти или в базе данных.
Чтобы... |
| 09.06.2023 | 60 антипаттернов для С++ программиста, часть 3 (совет 11 — 15) | Перед вами обновлённая коллекция вредных советов для C++ программистов, которая превратилась в целую электронную книгу. Всего их 60, и каждый сопровождается пояснением, почему на самом деле ему не стоит следовать. Всё будет одновременно и в... |
| 07.06.2023 | 60 антипаттернов для С++ программиста, часть 2 (совет 6 — 10) | Перед вами обновлённая коллекция вредных советов для C++ программистов, которая превратилась в целую электронную книгу. Всего их 60, и каждый сопровождается пояснением, почему на самом деле ему не стоит следовать. Всё будет одновременно и в... |