C++ — язык, где один и тот же результат можно получить пятью путями.
Четыре из них собираются. Три — даже работают. Два — правильные. И только один не превращает поддержку кода в археологию.
Именно поэтому старый C++ так любят и так ненавидят. До C++11 многое приходилось собирать вручную: умные указатели, move-семантика, constexpr, концепты — этого не было, а значит, команды лепили решения из шаблонов, перегрузок и дисциплины. Отсюда и выросли идиомы, которые до сих пор живут в движках, играх и тяжёлом легаси.
Драма тут простая:
профилировщик почти всегда побеждает абстракции.
А потом приходит новый разработчик, смотрит на код и спрашивает: «Почему здесь так сложно?»
Потому что когда-то это было не сложностью, а единственным способом не сломать производительность и память. ⚙️
Для команды это полезный маркер. Если человек понимает, зачем появились старые паттерны C++, он видит не «костыли», а историю ограничений и цену каждого решения. Для собеса это вообще сильный фильтр: пять случайных пунктов из мира C++ быстро показывают, работал ли человек с настоящими системами — или только с красивыми примерами.
Performance Memo
@PerformanceMemoPro
C++ — язык, где один и тот же результат можно получить пятью путями.
Этот пост опубликован в Telegram-канале Performance Memo. Подписаться можно по ссылке: @PerformanceMemoPro.