<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" >

  <channel>
    <title><![CDATA[Все статьи подряд / C++ / Хабр]]></title>
    <link>https://habr.com/ru/hubs/cpp/articles/</link>
    <description><![CDATA[C++ – типизированный язык программирования]]></description>
    <language>ru</language>
    <managingEditor>editor@habr.com</managingEditor>
    <generator>habr.com</generator>
    <pubDate>Thu, 23 Apr 2026 20:13:49 GMT</pubDate>
    
    
      <image>
        <link>https://habr.com/ru/</link>
        <url>https://habrastorage.org/webt/ym/el/wk/ymelwk3zy1gawz4nkejl_-ammtc.png</url>
        <title>Хабр</title>
      </image>
    

    
      
        
    
    <item>
      <title><![CDATA[Личный опыт: Два собственных блочных шифра (описание и код на C++)]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1026402/</guid>
      <link>https://habr.com/ru/articles/1026402/?utm_campaign=1026402&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>После не совсем удачных экспериментов с публикациями на площадках общего назначения приходится вновь возвращаться к теме описания собственных шифров, наиболее значимыми из которых считаю <a href="https://gitflic.ru/project/dntrunov/esck7" rel="noopener noreferrer nofollow">ESCK-7</a> и <a href="https://gitflic.ru/project/dntrunov/seal" rel="noopener noreferrer nofollow">Seal</a>. Оба шифра являются родственными и отличаются только некоторыми деталями, потому основное описание предполагается посвятить шифру ESCK-7, а для Seal указать только принципиальные различия.</p> <a href="https://habr.com/ru/articles/1026402/?utm_campaign=1026402&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 22 Apr 2026 07:16:02 GMT</pubDate>
      <dc:creator><![CDATA[d_n_trunov]]></dc:creator>
      
      <category><![CDATA[личный опыт]]></category><category><![CDATA[хобби]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[userver 3.0 — большой релиз фреймворка для IO‑bound‑программ, переход на C++20]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/yandex/articles/1012204/</guid>
      <link>https://habr.com/ru/companies/yandex/articles/1012204/?utm_campaign=1012204&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/024/6d9/ff5/0246d9ff50bde15075abe9ed599a0c51.png" /><p>Привет! На связи Антон Полухин из Техплатформы Городских сервисов Яндекса. После большого релиза <a href="https://habr.com/ru/companies/yandex/articles/813115/">🐙 userver</a> прошло почти два года. За это время мы обзавелись большим количеством внешних пользователей — международных и российских. При этом и количество внутренних пользователей подросло: в Городских сервисах Яндекса появились стни новых сервисов на userver. Функциональность Такси, Еды, Лавки, Доставки, а также Маркета, Финтеха, Фантеха, Электро и Техплатформы обогатилась новыми возможностями и новыми пользователями. А значит, фреймворк стал ещё надёжнее и оттестированнее.</p><p>Мы не сидели сложа руки, и за два года реализовали, оптимизировали и добавили все обещанные в прошлой статье фичи, а также многое другое.</p> <a href="https://habr.com/ru/articles/1012204/?utm_campaign=1012204&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Что нового в userver?</a>]]></description>
      
      <pubDate>Wed, 22 Apr 2026 07:02:07 GMT</pubDate>
      <dc:creator><![CDATA[antoshkka (Яндекс)]]></dc:creator>
      
      <category><![CDATA[userver]]></category><category><![CDATA[c++]]></category><category><![CDATA[c++20]]></category><category><![CDATA[с++20]]></category><category><![CDATA[с++]]></category><category><![CDATA[optimization]]></category><category><![CDATA[optimizations]]></category><category><![CDATA[json]]></category><category><![CDATA[json-schema]]></category><category><![CDATA[kafka]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Почему в C++/Qt нельзя просто взять и забыть про сырые указатели]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1026346/</guid>
      <link>https://habr.com/ru/articles/1026346/?utm_campaign=1026346&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>Современный C++ (11/14/17/20…) настойчиво учит нас: «Забудьте про <code>new</code> и <code>delete</code>, используйте умные указатели». Это отличный совет для чистого C++, но как только вы открываете документацию Qt, на вас снова прыгают <code>T*</code>.</p><p>Почему даже в 2026 году невозможно написать серьезное приложение на Qt, используя исключительно умные указатели? Давайте разберемся, где «умный» код ломает логику фреймворка.</p> <a href="https://habr.com/ru/articles/1026346/?utm_campaign=1026346&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 21 Apr 2026 23:14:06 GMT</pubDate>
      <dc:creator><![CDATA[yamix]]></dc:creator>
      
      <category><![CDATA[Qt]]></category><category><![CDATA[умные указатели]]></category><category><![CDATA[работа с памятью]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Ревью вайб-кода с гнильцой, который притворяется оптимизированным С++ кодом]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/pvs-studio/articles/1026084/</guid>
      <link>https://habr.com/ru/companies/pvs-studio/articles/1026084/?utm_campaign=1026084&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/7bb/075/a27/7bb075a2763fb261ccc3ff6d8cbd71e3.png" /><p>Ценность квалифицированного программиста смещается в сторону умения проводить обзоры кода. Генерировать код становится проще, но всё так же важно проверять его с точки зрения качества декомпозиции, корректности реализации, эффективности, безопасности. Посмотрим на примере маленького проекта markus, созданного с помощью Claude Opus, почему важно понимать сгенерированный код и уметь видеть, что скрывает красивый текст программы.</p> <a href="https://habr.com/ru/articles/1026084/?utm_campaign=1026084&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 21 Apr 2026 11:37:25 GMT</pubDate>
      <dc:creator><![CDATA[Andrey2008 (PVS-Studio)]]></dc:creator>
      
      <category><![CDATA[вайб-код]]></category><category><![CDATA[вайб-кодинг]]></category><category><![CDATA[вайб кодинг]]></category><category><![CDATA[информационная безопасность]]></category><category><![CDATA[c++]]></category><category><![CDATA[c++20]]></category><category><![CDATA[си++]]></category><category><![CDATA[качество кода]]></category><category><![CDATA[обзор кода]]></category><category><![CDATA[claude opus]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Deckhouse Prom++: как мы посадили Prometheus на RAM-диету и сэкономили 89 % памяти в хранилище данных]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/flant/articles/1024370/</guid>
      <link>https://habr.com/ru/companies/flant/articles/1024370/?utm_campaign=1024370&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/716/819/409/716819409c3e80647e497655dc9ad141.png" /><p>Утро: 3,8 ТБ памяти на кластеры Prometheus. Вечер: 0,6 ТБ. Между ними&nbsp;— переход на Deckhouse&nbsp;Prom++.</p><p>Мы потратили месяцы на внимательный анализ данных и разработку: писали свои структуры данных на С++, экономя каждый байт и охотясь за каждой наносекундой производительности. Разнообразные энкодеры для специфических данных, вектор с дырками и упакованные структуры&nbsp;— в статье делимся деталями реализации Open Source-проекта, который вы можете уже сейчас использовать для реальной экономии на&nbsp;мониторинге. </p> <a href="https://habr.com/ru/articles/1024370/?utm_campaign=1024370&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 21 Apr 2026 08:06:48 GMT</pubDate>
      <dc:creator><![CDATA[cherep58 (Флант)]]></dc:creator>
      
      <category><![CDATA[prom++]]></category><category><![CDATA[c++]]></category><category><![CDATA[оптимизация кода]]></category><category><![CDATA[prometheus]]></category><category><![CDATA[deckhouse]]></category><category><![CDATA[deckhouse prom++]]></category><category><![CDATA[мониторинг]]></category><category><![CDATA[observability]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как приложения скрывают окна от захвата экрана: SetWindowDisplayAffinity, ScreenCaptureKit и что сломалось в macOS 15]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1025310/</guid>
      <link>https://habr.com/ru/articles/1025310/?utm_campaign=1025310&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/d7d/018/333/d7d018333fcd681e6f0b0f3fc6525881.png" /><p>Если сделать скриншот Netflix или окна воспроизведения в Spotify, на месте видео окажется чёрный прямоугольник. То же произойдёт при демонстрации экрана в Zoom, в записи через OBS и даже в Snipping Tool. Звук идёт, содержимого нет.</p><p>Это не защита кодека и не трюк с OpenGL-поверхностями. Это один флаг в одном API, который сообщает оконной системе: «это окно не должно попадать в захваченные кадры». Флаг публичный, документированный, появился в Windows 10 ещё в 2020 году и используется любым приложением, которому нужно закрыть содержимое от скриншотов: менеджерами паролей, банковскими клиентами, 2FA-токенами.</p><p>На macOS раньше был симметричный аналог, но в macOS 15 Sequoia Apple сломала его против ScreenCaptureKit, и теперь картина там сильно запутаннее. На Linux всё зависит от дисплейного сервера. В браузерах работает через цепочку платформенных API.</p><p>Опыт накопился за то время, пока мы собирали десктопное приложение для онлайн-собеседований, которому эта механика нужна технически: окно с подсказками не должно попадать в демонстрацию экрана. Про продукт — в одном абзаце в конце. Вся остальная статья про то, что под капотом.</p> <a href="https://habr.com/ru/articles/1025310/?utm_campaign=1025310&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sun, 19 Apr 2026 16:16:02 GMT</pubDate>
      <dc:creator><![CDATA[billiedark]]></dc:creator>
      
      <category><![CDATA[SetWindowDisplayAffinity]]></category><category><![CDATA[WDA_EXCLUDEFROMCAPTURE]]></category><category><![CDATA[ScreenCaptureKit]]></category><category><![CDATA[захват экрана]]></category><category><![CDATA[NSWindow sharingType]]></category><category><![CDATA[DWM]]></category><category><![CDATA[Windows.Graphics.Capture]]></category><category><![CDATA[getDisplayMedia]]></category><category><![CDATA[macOS Sequoia]]></category><category><![CDATA[демонстрация экрана]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Тридцать лет libmorph]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1024132/</guid>
      <link>https://habr.com/ru/articles/1024132/?utm_campaign=1024132&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p><strong>К тридцатилетию публикации проекта 1994 года, который остаётся самым скорострельным морфологическим анализатором.</strong></p><p>Давным-давно, когда Рунет только появлялся, морфологические анализаторы и системы контроля орфографии уже производили вау-эффект: они не только сводили разные словоформы к основной (словарной), но и зачастую умели их склонять/спрягать, описывали грамматику вхождений и предлагали варианты замены ошибочных начертаний. Да и чуть позже, при появлении первого русского морфологического поиска в Интернет – это был Апорт! – на выставках тоже равнодушных не было. Тогда и родился libmorph.</p> <a href="https://habr.com/ru/articles/1024132/?utm_campaign=1024132&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 16 Apr 2026 10:16:50 GMT</pubDate>
      <dc:creator><![CDATA[Keva]]></dc:creator>
      
      <category><![CDATA[морфология]]></category><category><![CDATA[морфологический анализатор]]></category><category><![CDATA[libmorph]]></category><category><![CDATA[libmorphrus]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Компиляторы тоже путаются в именах]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1023334/</guid>
      <link>https://habr.com/ru/articles/1023334/?utm_campaign=1023334&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/168/85b/8d6/16885b8d661e8408ec08f4567c81523a.png" /><p>Это продолжение темы начатой в статье <a href="https://habr.com/ru/articles/990816/" rel="noopener noreferrer nofollow">Важны ли компилятору имена</a>,  и продолженой в <a href="https://habr.com/ru/articles/1015492/" rel="noopener noreferrer nofollow">Ночью все кошки серы, а using'и одинаковы</a>, и если вам нужна полная картина, как компилятор превращает текст в программу, то без понимания поиска имён (name lookup) дальше двигаться уже не получится.</p><p>Имена в тексте исходника это просто удобные ярлыки для людей: переменные, функции, типы. Но для компилятора имя является точкой входа в довольно сложный алгоритм, который должен однозначно определить, <em>что именно вы имели в виду</em>. И вот здесь начинается самое интересное: одинаково написанное имя в разных контекстах может означать совершенно разные вещи, а иногда даже не означать ничего вовсе, в зависимости от того, где и как оно используется.</p><p>C++ в этом месте особенно коварен. Язык рос десятилетиями, и правила поиска имён эволюционировали вместе с ним: добавлялись пространства имён, шаблоны, ADL, двухфазный поиск. Всё это не просто усложнило модель, оно сделало её местами неинтуитивной даже для опытных разработчиков, добавим сюда еще, что разные компиляторы исторически реализовывали эти правила (по-своему) по-разному, и часть этих различий до сих пор всплывает в коде.</p><p>Не нужно воспринимать компилятор как чёрный ящик, хотя порою поиск имён действительно выглядит как магия, но если разобрать его на отдельные шаги, то становится видно, что за этой «магией» стоит вполне строгая (хоть и исторически нагруженная) система правил. Попробую о ней рассказать.</p> <a href="https://habr.com/ru/articles/1023334/?utm_campaign=1023334&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Какой-то странный, этот ваш с++</a>]]></description>
      
      <pubDate>Tue, 14 Apr 2026 11:53:35 GMT</pubDate>
      <dc:creator><![CDATA[dalerank]]></dc:creator>
      
      <category><![CDATA[с++]]></category><category><![CDATA[с++ программирование]]></category><category><![CDATA[ненормальное программирование]]></category><category><![CDATA[разработка игр]]></category><category><![CDATA[компиляторы]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Программа смены фона рабочего стола]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1022508/</guid>
      <link>https://habr.com/ru/articles/1022508/?utm_campaign=1022508&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>Программа смены фона рабочего стола. При запуске, программа циклически меняет фон рабочего стола: Файл -&gt;Solid Color-&gt;Файл -&gt;Solid Color-&gt;…</p> <a href="https://habr.com/ru/articles/1022508/?utm_campaign=1022508&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sun, 12 Apr 2026 12:15:46 GMT</pubDate>
      <dc:creator><![CDATA[bvr63]]></dc:creator>
      
      <category><![CDATA[с++]]></category><category><![CDATA[desktop]]></category><category><![CDATA[wallpaper]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[AGC или как перестать подстраивать громкость вручную]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1022424/</guid>
      <link>https://habr.com/ru/articles/1022424/?utm_campaign=1022424&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/712/728/575/7127285751af4162f21a8abd129a943c.png" /><p>Многие наверняка сталкивались с проблемой: смотришь по ТВ спокойный фильм, который прерывается резкой и громкой рекламой; или, например, при общении по <abbr class="habraabbr" title="видеоконференцсвязь" data-title="&lt;p&gt;видеоконференцсвязь&lt;/p&gt;" data-abbr="ВКС">ВКС</abbr> всех собеседников слышно нормально, но у кого-нибудь одного микрофон будет шуметь так, будто он в данный момент находится рядом с двигателем самолета, готовящегося взлетать. Конечно, всегда можно подрегулировать громкость динамиков, но всегда ли это удобно и возможно?</p> <a href="https://habr.com/ru/articles/1022424/?utm_campaign=1022424&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sun, 12 Apr 2026 07:16:04 GMT</pubDate>
      <dc:creator><![CDATA[Mamayzo]]></dc:creator>
      
      <category><![CDATA[ffmpeg]]></category><category><![CDATA[agc]]></category><category><![CDATA[ару]]></category><category><![CDATA[алгоритмы]]></category><category><![CDATA[звук]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Что могло бы помочь в дальнейшем развитии C++, но вряд ли произойдет]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1022142/</guid>
      <link>https://habr.com/ru/articles/1022142/?utm_campaign=1022142&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>После чтения несколько недавних статей – <a href="https://habr.com/ru/companies/yandex/articles/1015474/" rel="noopener noreferrer nofollow">раз</a>, <a href="https://habr.com/ru/articles/1019182/" rel="noopener noreferrer nofollow">два</a>, <a href="https://habr.com/ru/articles/1021684/" rel="noopener noreferrer nofollow">три</a> – и, главным образом, комментариев к ним, задумался о том, а как бы лично мне хотелось чтобы C++ развивался дальше. Результатом этих размышлений и стал данный текст. Признаю, что он больше бы подошел для личного блога, т.к. здесь не более чем праздные фантазии оторванного от мейнстрима провинциала. Но все-таки решил вынести свои несбыточные грезы на широкую публику, уж простите эту нескромность.</p><p>Возможно, самым практичным был бы вариант, когда C++ окончательно уходит на обочину и повторяет судьбу COBOL-а – где-то как-то тихо и мирно живет себе за счет многолетнего легаси, которое приносит деньги и которое никто не решается переписать на чем-то модном и молодежном. А новые стандарты не столько пытаются модернизировать язык, сколько поддерживают его на плаву.</p><p>Но кажется, что комитет выбрал для C++ совсем другой сценарий развития. Свидетельством чему является включение в стандарт такой странной (на мой деревенский взгляд) штуки, как модули. Раз модули в язык добавили несмотря на то, что это делит и сам язык, и его экосистему, на “до и после” на долгие годы, а то и десятилетия, значит люди из комитета верят, что у C++ эти самые десятилетия бодрого развития и широкого применения есть.</p><p>OK, допустим, что цель в том, чтобы C++ счастливо и успешно прожил еще 40 лет, постоянно развиваясь и адаптируясь к новым условиям. Что для этого нужно сделать сейчас? Важный дисклеймер: на мой сугубо субъективный взгляд.</p> <a href="https://habr.com/ru/articles/1022142/?utm_campaign=1022142&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sat, 11 Apr 2026 06:01:06 GMT</pubDate>
      <dc:creator><![CDATA[eao197]]></dc:creator>
      
      <category><![CDATA[c++]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как я не создал Multiroom, а использовал существующий]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1022124/</guid>
      <link>https://habr.com/ru/articles/1022124/?utm_campaign=1022124&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/9a0/190/a7e/9a0190a7e8ae83850f8915c7e756f784.png" /><p>Сидел я значится между двумя ноутбуками, на&nbsp;одном из&nbsp;которых играла музыка. Динамики старые и стерео выдают в&nbsp;неприкрытом моно. Между звуками барабанов и синтезаторов в&nbsp;моей голове прозвучала мысль&nbsp;— «А давай‑ка одновременно включим музыку на&nbsp;двух ноутбуках, получу&nbsp;ли я музыкальное наслаждение?»&nbsp;— Получил это музыкальное наслаждение я аж целых три года назад, тогда&nbsp;же появилась идея оформить сеё чудо в&nbsp;виде приложения, которое&nbsp;бы захватывало системный звук устройства и раздавало&nbsp;бы его на&nbsp;динамики любых других устройств (Компьютеры, планшеты, телефоны…), включая устройство захвата.</p> <a href="https://habr.com/ru/articles/1022124/?utm_campaign=1022124&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sat, 11 Apr 2026 04:16:08 GMT</pubDate>
      <dc:creator><![CDATA[LiuBimba]]></dc:creator>
      
      <category><![CDATA[мультирум]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Простая нейронная сеть на чистом C++]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/piter/articles/1021738/</guid>
      <link>https://habr.com/ru/companies/piter/articles/1021738/?utm_campaign=1021738&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/59d/6fe/5e2/59d6fe5e2148f883bf750dcb471d20d9.png" /><p>Ни Python, ни PyTorch, ни NumPy, … всего 260 строк кода на чистом C++ достаточно, чтобы обучить, оценить и протестировать простой двоичный классификатор, различающий рукописные цифры 0 и 1.</p> <a href="https://habr.com/ru/articles/1021738/?utm_campaign=1021738&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 10 Apr 2026 09:16:42 GMT</pubDate>
      <dc:creator><![CDATA[ph_piter (Издательский дом «Питер»)]]></dc:creator>
      
      <category>c++</category><category>машинное обучение</category><category>neural network</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Ахиллесова пята C++ и будущая р̶е̶ эволюция]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1021684/</guid>
      <link>https://habr.com/ru/articles/1021684/?utm_campaign=1021684&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/e52/16f/e15/e5216fe15f7f6040ab7468a22b5da96d.webp" /><p>Недавно я опубликовал мнение о фундаментальной экономической модели разработки ПО, которая не способствует (и объективно не должна способствовать) массовому переходу с C/C++ на «безопасные» языки программирования <a href="https://habr.com/ru/articles/1019182/" rel="noopener noreferrer nofollow">Экономика безопасности кода или почему Rust не нужен</a>.</p><p>Но чтобы оставаться честным перед читателями, решил опубликовать и статью-контраргумент с описанием обратной стороны медали, то есть почему C++ всё равно будет рано или поздно заменён, а заодно попробовать разобрать, каким будет новый язык программирования, который неминуемо придёт на смену C++.</p> <a href="https://habr.com/ru/articles/1021684/?utm_campaign=1021684&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 10 Apr 2026 08:10:31 GMT</pubDate>
      <dc:creator><![CDATA[rsashka]]></dc:creator>
      
      <category><![CDATA[программирование]]></category><category><![CDATA[с++]]></category><category><![CDATA[развитие языков программирования]]></category><category><![CDATA[эволюция языка]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[MIPI RFFE на GPIO ARM контроллера. Эмуляция проприетарного интерфейса на GPIO ARM-микроконтроллера]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1021360/</guid>
      <link>https://habr.com/ru/articles/1021360/?utm_campaign=1021360&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/604/981/778/6049817784b3da3cd34ecfff5bb1b1e0.png" /><p>Всем привет, это моя первая статья, в рамках которой захотелось поделиться необычным для меня опытом. Возможно, кто-то найдёт здесь для себя что-то полезное. По работе пришлось столкнуться с крайне необычной микросхемой для коммутации высокочастотных (RF) сигналов.&nbsp; Одна проблема – проприетарный интерфейс управления MIPI RFFE. Появился вопрос “А как этим управлять, не имея специализированных средств?”. Ответ узнаем вместе. </p> <a href="https://habr.com/ru/articles/1021360/?utm_campaign=1021360&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 09 Apr 2026 11:58:32 GMT</pubDate>
      <dc:creator><![CDATA[TheGoblinEngineer]]></dc:creator>
      
      <category><![CDATA[arm микроконтроллеры]]></category><category><![CDATA[stm32]]></category><category><![CDATA[artery]]></category><category><![CDATA[arm]]></category><category><![CDATA[mipi]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Заставляем Flipper Zero и M5StickC Plus2 работать вместе]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1021102/</guid>
      <link>https://habr.com/ru/articles/1021102/?utm_campaign=1021102&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/702/072/aec/702072aecc622f3ec2ebdda69166fdac.jpg" /><p>У многих из нас есть слабость к маленьким многофункциональным гаджетам. К тем самым коробочкам с мигающими светодиодами, которые покупаются под лозунгом «ну это же мне очень надо!», а потом укоризненно смотрят на тебя с полки. У меня к этой категории относятся «тамагочи для хакеров» <code>Flipper Zero</code> и оранжевый свисток <code>M5StickC Plus2</code>.</p><p>С «Флиппером» всё понятно: для классических хакерских шалостей (открывать шлагбаумы и пугать соседей) я его не использую, пару раз клонировал ключи от подъезда да дублировал пропуск на работе. Для меня это стильные настольные часы, токен для аутентификации и крошечная панель мониторинга (я переписал под себя приложение для мониторинга ПК, чтобы выводить на экран загрузку процессора, ОЗУ, видеокарты, состояние сети и прочие метрики).</p><p>С <code>M5StickC Plus2</code> история похожая. Он был куплен по той же причине, по которой айтишники покупают седьмую механическую клавиатуру: потому что штука прикольная. Я покрутил разные прошивки, поигрался с <code>Bruce</code> — швейцарским ножом для устройств M5 — и даже попытался сделать из него такой же экранчик мониторинга, но в отличие от Флиппера, заряда которого хватает на пару дней приёма метрик с ПК через BLE, стик садится почти моментально, да и его экран ощутимо меньше. А потом он предсказуемо перешёл в режим ждуна: лёг на стол и стал ждать своего часа.</p> <a href="https://habr.com/ru/articles/1021102/?utm_campaign=1021102&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 09 Apr 2026 07:01:30 GMT</pubDate>
      <dc:creator><![CDATA[crims0n_ru]]></dc:creator>
      
      <category><![CDATA[flipper zero]]></category><category><![CDATA[m5stickc plus2]]></category><category><![CDATA[esp32 marauder]]></category><category><![CDATA[esp32]]></category><category><![CDATA[uart]]></category><category><![CDATA[arduino]]></category><category><![CDATA[прошивка]]></category><category><![CDATA[wi-fi]]></category><category><![CDATA[микроконтроллеры]]></category><category><![CDATA[diy]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Direct2D #8: О (WIC) Windows Imaging Component]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1020590/</guid>
      <link>https://habr.com/ru/articles/1020590/?utm_campaign=1020590&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>Статья объясняет что такое WIC (Windows Imaging Component) и как с ним работать (с примерами), рассчитано для тех кто никогда не слышал, или почти никогда не слышал о WIC. Является переписью того, что написано в MSDN, но: на русском, понятно, кратко. </p> <a href="https://habr.com/ru/articles/1020590/?utm_campaign=1020590&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 07 Apr 2026 20:09:46 GMT</pubDate>
      <dc:creator><![CDATA[Johnny_Depp]]></dc:creator>
      
      <category><![CDATA[C++]]></category><category><![CDATA[Windows]]></category><category><![CDATA[Gamedev]]></category><category><![CDATA[direct2d]]></category><category><![CDATA[desktop windows]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как создать настоящий приватный мессенджер?]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1020480/</guid>
      <link>https://habr.com/ru/articles/1020480/?utm_campaign=1020480&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/438/974/d63/438974d63c634abab380fdbe609b43f8.png" /><p>Существуют решения для анонимного взаимодействия в интернет пространстве, такие как Tor, I2P и Freenet, но они ориентированы на весь интернет и избыточны для простого общения. Их сложность и архитектура могут быть неудобны в условиях ограниченного доступа к сети. Поэтому возникает идея более простой и специализированной системы. XXCore — это лёгкая p2p-архитектура с доверенными узлами, построенная на PipeNet и модифицированном SSU2. </p> <a href="https://habr.com/ru/articles/1020480/?utm_campaign=1020480&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 07 Apr 2026 15:15:23 GMT</pubDate>
      <dc:creator><![CDATA[svec1]]></dc:creator>
      
      <category><![CDATA[мессенджер]]></category><category><![CDATA[приватность]]></category><category><![CDATA[сети передачи данных]]></category><category><![CDATA[сети]]></category><category><![CDATA[обфускация]]></category><category><![CDATA[noise protocol framework]]></category><category><![CDATA[c++]]></category><category><![CDATA[криптография]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Логгер — это не про скорость: что действительно важно в дизайне]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1020188/</guid>
      <link>https://habr.com/ru/articles/1020188/?utm_campaign=1020188&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/6e5/628/0f8/6e56280f88687a23b0edf65b3e8fc22a.jpg" /><p>Когда логирование попадает в&nbsp;реальную систему, довольно&nbsp;быстро становится понятно, что&nbsp;это не&nbsp;про&nbsp;API и не&nbsp;про&nbsp;удобство вызова. Это про&nbsp;постоянный компромисс. </p><p>С&nbsp;одной стороны, хочется, чтобы система работала максимально&nbsp;быстро: любое логирование&nbsp;— это накладные расходы, и в&nbsp;нормальном режиме его стараются минимизировать. С&nbsp;другой стороны, как&nbsp;только возникает проблема, внезапно оказывается, что&nbsp;либо логов недостаточно,&nbsp;либо они есть, но&nbsp;в&nbsp;таком виде, что&nbsp;восстановить картину происходящего невозможно. В&nbsp;этот момент становится очевидно, что&nbsp;задача логгера&nbsp;— не&nbsp;просто «писать строки» максимально&nbsp;быстро, а&nbsp;помогать удерживать баланс между производительностью и диагностируемостью.</p><p>Первая проблема, которая всплывает практически сразу, связана не&nbsp;со скоростью, а&nbsp;со структурой. Лог начинает отражать структуру кода, а&nbsp;не&nbsp;структуру происходящего. Есть бизнес‑логика, есть библиотеки, есть множество параллельных операций, и каждая из&nbsp;них пишет что‑то своё. В&nbsp;итоге лог превращается в&nbsp;поток сообщений, где перемешаны разные задачи, и вместо «обработки конкретного запроса» мы видим просто последовательность вызовов. На&nbsp;небольшом проекте это ещё можно терпеть, но&nbsp;в&nbsp;серверной системе такая картина&nbsp;быстро становится непригодной для&nbsp;анализа.</p><p>Естественное&nbsp;желание&nbsp;— привязать лог не&nbsp;к&nbsp;месту вызова, а&nbsp;к&nbsp;самой задаче. Самый прямой путь&nbsp;— передавать контекст через параметры (например, инстанс логгера), но&nbsp;довольно&nbsp;быстро это начинает протекать через весь код и превращается в&nbsp;обязательный шум в&nbsp;сигнатурах. Гораздо более устойчивый подход&nbsp;— привязать контекст к&nbsp;потоку выполнения. В <a href="https://github.com/efmsoft/logme" rel="noopener noreferrer nofollow">библиотеке logme</a> это делается через thread channel:</p> <a href="https://habr.com/ru/articles/1020188/?utm_campaign=1020188&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 07 Apr 2026 07:26:19 GMT</pubDate>
      <dc:creator><![CDATA[emishkurov]]></dc:creator>
      
      <category><![CDATA[логирование]]></category><category><![CDATA[логирование C++]]></category><category><![CDATA[системы логирования]]></category><category><![CDATA[дизайн логгера]]></category><category><![CDATA[logging]]></category><category><![CDATA[C++ logging]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Замена STM32CubeIDE и переход в среду VSCode для Embedded-разработки]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1020160/</guid>
      <link>https://habr.com/ru/articles/1020160/?utm_campaign=1020160&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/243/c49/b8a/243c49b8ae9c4d60581e208318b3b714.png" /><p>Бесплатных IDE для разработки микроконтроллеров не так уж много, а их интерфейс, основанный на Eclipse, вызывает у меня только страдания. В итоге разработка превращается в постоянное переключение с VSCode для редактирования кода в CubeIDE для его сборки и отладки.<br>Но почему бы не собрать все инструменты в VSCode в едином расширении, заодно подогнав автогенерацию проектов под стиль компании/личные предпочтения? Об и будет моя первая статья. Привет, Хабр!</p> <a href="https://habr.com/ru/articles/1020160/?utm_campaign=1020160&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 07 Apr 2026 06:16:29 GMT</pubDate>
      <dc:creator><![CDATA[IlyaYukhimets]]></dc:creator>
      
      <category><![CDATA[xmake]]></category><category><![CDATA[cubeide]]></category><category><![CDATA[stm32]]></category><category><![CDATA[vscode extension]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Лишние вычисления]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1019082/</guid>
      <link>https://habr.com/ru/articles/1019082/?utm_campaign=1019082&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/bcb/893/926/bcb8939267c996efa026035e44135ab8.png" /><p>Если говорить о производительности вне существующих решений в железе, то интуиция будет подсказывать достаточно простую модель выполнения, когда процессор обрабатывает инструкции, а память поставляет данные, и чем быстрее и то и другое, тем быстрее работает программа. </p><p>Но&nbsp;процессоры научились выполнять миллиарды операций в&nbsp;секунду, а&nbsp;память наращивает скорость доступа намного медленнее, и разрыв между скоростью вычислений и доступа к&nbsp;данным стал настолько большим, что&nbsp;именно ожидание памяти, превратилось в&nbsp;главный источник потерь производительности.</p><p>Ответом на&nbsp;это стало не&nbsp;ускорение памяти, а&nbsp;усложнение самих процессоров, которые перестали&nbsp;быть просто пассивными исполнителями кода и стали решать задачи управления потоком данных: выполнять инструкции вне порядка, переупорядочивать зависимости и на&nbsp;каком‑то этапе подошли к&nbsp;идее спекулятивно исполнять код, который, возможно, вообще не&nbsp;понадобится.</p><p>Предсказание ветвлений стало один из&nbsp;ключевых механизмов в&nbsp;этой системе, которая должна&nbsp;была снять часть времени простоя потока вычислений, но&nbsp;если удачное предсказание стало возможностью начать дорогие загрузки заранее и скрыть их латентность, то ошибка предсказания скрывает не&nbsp;только потерянные такты, но&nbsp;и зря использованные ресурсы памяти: шину, буферы загрузки, пропускную способность контроллера и сами кэш‑линии, которые могли&nbsp;бы&nbsp;быть заняты полезными данными.</p><p>Именно здесь возникает интересный и неочевидный компромисс, позволяющий с&nbsp;одной стороны, писать branchless‑код и полностью избавиться от&nbsp;ошибок предсказания, а&nbsp;с&nbsp;другой&nbsp;лишающий процессор возможности работать на&nbsp;опережение и запускать доступ к&nbsp;памяти раньше времени. Но&nbsp;в&nbsp;зависимости от&nbsp;того, где находятся данные в&nbsp;памяти выигрывать будет то один, то другой подход.</p><p>Если вы собираетесь писать branchless код, надо помнить как&nbsp;именно спекулятивное выполнение и предсказание ветвлений взаимодействуют с&nbsp;подсистемой памяти, потому что «лишняя работа» иногда ускоряет программу, а&nbsp;в&nbsp;некоторых случаях попытка сделать код более «предсказуемым» приводит к&nbsp;обратному эффекту.</p> <a href="https://habr.com/ru/articles/1019082/?utm_campaign=1019082&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 06 Apr 2026 17:52:26 GMT</pubDate>
      <dc:creator><![CDATA[dalerank]]></dc:creator>
      
      <category><![CDATA[c++]]></category><category><![CDATA[программирование]]></category><category><![CDATA[ненормальное программирование]]></category><category><![CDATA[разработка игр]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Russian Railway Simulator (RRS): семь лет спустя]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1019276/</guid>
      <link>https://habr.com/ru/articles/1019276/?utm_campaign=1019276&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/476/7d1/b85/4767d1b85bc0c688c339b0971cad6799.jpg" /><p>В 2019 году я публиковал <a href="https://habr.com/ru/articles/465689/" rel="noopener noreferrer nofollow">статью о первой версии своего проекта Russian Railway Simulator</a>. Прошло достаточно много времени, и возможно кто-то думает, что проект умер. Нет, проект не только не умер, но и продолжает развиваться. На днях вышла новая версия игры. В связи с этим реализую свою давнюю задумку написать о проекте еще раз, о том как он развивался все эти годы, к чему мы пришли к сегодняшнему дню и какие перспективы ожидают нас в будущем.</p> <a href="https://habr.com/ru/articles/1019276/?utm_campaign=1019276&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 06 Apr 2026 13:32:08 GMT</pubDate>
      <dc:creator><![CDATA[maisvendoo]]></dc:creator>
      
      <category><![CDATA[Симулятор]]></category><category><![CDATA[Железнодорожный симулятор]]></category><category><![CDATA[open source]]></category><category><![CDATA[c++17]]></category><category><![CDATA[lua]]></category><category><![CDATA[vulkan]]></category><category><![CDATA[vulkanscenegraph]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Rwal: Как я пишу кросс-платформенный менеджер обоев на C++20 в 10 классе]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1019502/</guid>
      <link>https://habr.com/ru/articles/1019502/?utm_campaign=1019502&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/ecc/a87/065/ecca8706541ed7511b338cc36b1cd4d7.png" /><p>Привет, Хабр! Меня зовут Aloncie. Пока в моем окружении часто спорят о том, какой язык программирования учить первым, я решил не выбирать легких путей и закопаться в «кишки» системного программирования.</p><p>Мой проект <strong>Rwal</strong> — это CLI-утилита (с перспективой перехода на GUI) для управления обоями, которая должна одинаково хорошо чувствовать себя в разных окружениях: от KDE и GNOME до Windows. В этой статье я подробно разберу архитектуру проекта, работу с D-Bus, интеграцию со стандартами C++20 и то, как я организовал сборку.</p> <a href="https://habr.com/ru/articles/1019502/?utm_campaign=1019502&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sun, 05 Apr 2026 12:45:29 GMT</pubDate>
      <dc:creator><![CDATA[Aloncie]]></dc:creator>
      
      <category><![CDATA[C++20]]></category><category><![CDATA[Rwal]]></category><category><![CDATA[CMake]]></category><category><![CDATA[системное программирование]]></category><category><![CDATA[архитектура ПО]]></category><category><![CDATA[Qt]]></category><category><![CDATA[utility]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Zig вместо C: пишем высокопроизводительный CLI-инструмент и заменяем 3000 строк C-кода]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1019466/</guid>
      <link>https://habr.com/ru/articles/1019466/?utm_campaign=1019466&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/f72/686/671/f72686671f353d046cea85a86d9b0a9a.png" /><p>Всё началось на второй паре по системному программированию. Нам дали задачу: написать CLI-утилиту для анализа логов - парсить файл, фильтровать записи по уровню ошибок, считать статистику, выводить красиво в консоль. "Ну понятно", - открыл я vim и началось мое долгое приключение...</p><p>Неделя. Две. Утилита называлась <strong><code>logz</code></strong>, она умела читать логи nginx и apache, фильтровать по уровню (DEBUG, INFO, WARN, ERROR), по дате, по IP, выводила топ адресов с наибольшим числом ошибок, рисовала простенький bar-chart прямо в терминале через unicode-символы. Только вот я сидел как-то вечером, запустил <strong><code>wc -l main.c</code></strong> - <strong>3147 строк</strong>. И смотрел на это число минуты три с таким лицом - <code>O_O</code>.</p><p>Сама утилита работала. Но открывая её осознаешь что - это месиво. Одна функция <code>process_file</code> на 400 строк. Сегфолты раз в неделю. Valgrind как лучший друг. И каждый раз когда надо добавить фичу - сначала полчаса вспоминаешь что вообще происходит в коде.</p><p>Потом я случайно прочитал пост про Zig на <a href="http://lobste.rs" rel="noopener noreferrer nofollow">lobste.rs</a>. Заинтересовался и попробовал. Через месяц у меня была та же утилита, но теперь на <strong>1089 строках</strong>, которая работала быстрее и не падала.</p><p>Тут я понял что вот золотая жила и расскажу о том  - зачем Zig, как переписывал, где облажался и что вышло в итоге.</p> <a href="https://habr.com/ru/articles/1019466/?utm_campaign=1019466&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Смотреть как горит C-код</a>]]></description>
      
      <pubDate>Sun, 05 Apr 2026 11:15:10 GMT</pubDate>
      <dc:creator><![CDATA[skywalker192]]></dc:creator>
      
      <category><![CDATA[zig]]></category><category><![CDATA[c]]></category><category><![CDATA[cli]]></category><category><![CDATA[системное программирование]]></category><category><![CDATA[производительность]]></category><category><![CDATA[компилятор]]></category><category><![CDATA[низкоуровневое программирование]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Экономика безопасности кода или почему Rust не нужен]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1019182/</guid>
      <link>https://habr.com/ru/articles/1019182/?utm_campaign=1019182&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/b67/6f0/4d5/b676f04d5bed193d5a43821a210620f8.jpg" /><p>Прочитал статью  <a href="https://habr.com/ru/articles/1018592/" rel="noopener noreferrer nofollow">Параллелизм с общим состоянием в Rust</a> и обратил внимание, что её общий смысл можно выразить известной фразой: “делай как нужно, а как не нужно, делать не нужно”. Другими словами, это точно такой же совет, какой можно дать разработчику любого другого языка программирования, например С++.</p><p>И решил не продолжать дискуссию в комментариях, а написать отдельную статью с кратким описанием фундаментальной  экономической модели разработки ПО, которая не способствует (и объективно не должно способствовать) массовому переходу с C/C++ на «безопасные» альтернативы. Так как из-за особенностей распределения затрат у разработчика ПО отсутствует экономическая мотивация к полному устранению ошибок, и как следствие - к переходу на использование «безопасных» языков программирования.</p> <a href="https://habr.com/ru/articles/1019182/?utm_campaign=1019182&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sat, 04 Apr 2026 07:38:30 GMT</pubDate>
      <dc:creator><![CDATA[rsashka]]></dc:creator>
      
      <category><![CDATA[маркетинг]]></category><category><![CDATA[безопасность]]></category><category><![CDATA[rust]]></category><category><![CDATA[c++]]></category><category><![CDATA[ошибки программистов]]></category><category><![CDATA[лицензионное соглашение]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[С++26 — готов! Итоги встречи ISO C++ в Кройдоне]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/yandex/articles/1015474/</guid>
      <link>https://habr.com/ru/companies/yandex/articles/1015474/?utm_campaign=1015474&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/7d3/a11/aa8/7d3a11aa8cb795dbd87f18734baa35ea.jpeg" /><p>Привет! На связи Антон Полухин из Техплатформы Городских сервисов Яндекса. На днях в Кройдоне состоялась встреча международного комитета по стандартизации языка программирования C++, в которой я принимал активное участие. В этот раз (как и в прошлый), всё внимание было сосредоточено на C++26 и… теперь он готов! Осталось пройти формальные этапы в вышестоящих инстанциях ISO, и мы получим C++26 который заслужили. В нём будут:</p><p><strong>•</strong>   reflection,</p><p><strong>•</strong>   контракты,</p><p><strong>•</strong>   SIMD,</p><p><strong>•</strong>   линейная алгебра,</p><p><strong>•</strong>   расширенные возможности сonstexpr,</p><p><strong>•</strong>   hardening,</p><p><strong>•</strong>   Hazard Pointer и RCU,</p><p><strong>•</strong>   #embed,</p><p><strong>•</strong>   executors,</p><p><strong>•</strong>   и многие другие полезные вещи.</p> <a href="https://habr.com/ru/articles/1015474/?utm_campaign=1015474&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Подробности и новинки</a>]]></description>
      
      <pubDate>Fri, 03 Apr 2026 07:30:55 GMT</pubDate>
      <dc:creator><![CDATA[antoshkka (Яндекс)]]></dc:creator>
      
      <category><![CDATA[contracts]]></category><category><![CDATA[reflection]]></category><category><![CDATA[c++26]]></category><category><![CDATA[с++26]]></category><category><![CDATA[с++]]></category><category><![CDATA[программирование]]></category><category><![CDATA[simd]]></category><category><![CDATA[compile-time]]></category><category><![CDATA[compile time]]></category><category><![CDATA[hardening]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Создаем Java обертку для C++ класса в Android приложении и реализуем обратные вызовы из нэйтива]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1017486/</guid>
      <link>https://habr.com/ru/articles/1017486/?utm_campaign=1017486&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>Кратко расскажу о&nbsp;себе и о&nbsp;том, зачем возникла необходимость в&nbsp;подобном. Я более десяти лет пишу приложения под&nbsp;Android, около 5&nbsp;лет под&nbsp;IOS, и сейчас переношу свои наработки под&nbsp;десктопы. Приложения мои предназначены для&nbsp;сисадминов, это SSH клиент, сетевые сканеры и тд. В&nbsp;общем, самое сложное&nbsp;— не&nbsp;сам интерфейс, а&nbsp;то, что&nbsp;под&nbsp;капотом. Когда я&nbsp;лишь начинал, я думал, что&nbsp;остановлюсь на&nbsp;платформе Android и стал пилить все на&nbsp;Java. Но&nbsp;затем осознал свою ошибку и исправил ее. На&nbsp;данный момент все мои приложения состоят из&nbsp;двух частей: общего для&nbsp;всех систем ядра на&nbsp;С++ и платформозависимого интерфейса, написанного на&nbsp;Java/Swift/C++ в&nbsp;зависимости от&nbsp;системы.</p><p>Оговорюсь сразу, эта статья будет&nbsp;лишь своего рода вступлением. Я покажу, как&nbsp;работать с&nbsp;объектно‑ориентированным кодом на&nbsp;C++ в&nbsp;Java оболочке (в JNI нам доступен экспорт С&nbsp;функций). Инициализировать объект, делать из&nbsp;него вызовы, удалять, при&nbsp;этом имея аналогичный класс в&nbsp;оболочке, будто&nbsp;бы наш код&nbsp;был написан на&nbsp;Java. Задача эта не&nbsp;слишком сложная, но&nbsp;прежде чем опытные прогеры закрыли эту статью, я оговорюсь, что&nbsp;в&nbsp;следующей части мы уже будем работать с&nbsp;каллбэками&nbsp;— вызовами Java&nbsp;листенеров из&nbsp;нашего С++ кода, а&nbsp;вот это уже задача совсем нетривиальная, требующая понимания работы JNI и Dalvik. Но&nbsp;обо&nbsp;всем по&nbsp;порядку.</p><p>Итак, у&nbsp;нас есть некий CPP класс и Java оболочка. Через JNI мы можем вызывать только С‑функции, то есть не&nbsp;объектный код. Так как&nbsp;же нам работать с&nbsp;ООП? Главная проблема&nbsp;— не&nbsp;столько вызовы, сколько хранение адреса объекта нативного класса.&nbsp;Лично для&nbsp;себя я нашел решение&nbsp;— хранить его в&nbsp;Java классе, как&nbsp;long. То есть, у&nbsp;нас получается приблизительно такой код:</p> <a href="https://habr.com/ru/articles/1017486/?utm_campaign=1017486&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 02 Apr 2026 14:43:23 GMT</pubDate>
      <dc:creator><![CDATA[first_row]]></dc:creator>
      
      <category><![CDATA[Java]]></category><category><![CDATA[C++]]></category><category><![CDATA[ООП]]></category><category><![CDATA[Dalvik]]></category><category><![CDATA[JNI]]></category><category><![CDATA[android]]></category><category><![CDATA[ndk]]></category><category><![CDATA[native]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Stratum 1 NTP-сервер на Raspberry Pi в 2026 году: DCF77 + GPS/PPS, chrony, libgpiod v2]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1018554/</guid>
      <link>https://habr.com/ru/articles/1018554/?utm_campaign=1018554&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>Stratum 1 NTP-сервер на Raspberry Pi в 2025 году: DCF77 + GPS/PPS, chrony, libgpiod v2, когда все туториалы по «точному времени на Raspberry Pi» сломаны на современных системах. Разбираю почему — и показываю как сделать правильно.</p> <a href="https://habr.com/ru/articles/1018554/?utm_campaign=1018554&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 02 Apr 2026 13:59:00 GMT</pubDate>
      <dc:creator><![CDATA[hauptling]]></dc:creator>
      
      <category><![CDATA[raspberrypi]]></category><category><![CDATA[C++]]></category><category><![CDATA[linux]]></category><category><![CDATA[ntp]]></category><category><![CDATA[chrony]]></category><category><![CDATA[gps]]></category><category><![CDATA[dcf77]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Компилятор C в compile-time]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1018504/</guid>
      <link>https://habr.com/ru/articles/1018504/?utm_campaign=1018504&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/c35/a70/a88/c35a70a88000bf9d49d8db46b644fa30.png" /><p>Если кратко, то цель: компилятор некоторого подмножества языка Си на C++, который работает в compile-time. Компиляция будет происходить в кастомный байт-код для дальнейшего выполнения в ВМ уже в рантайме.</p> <a href="https://habr.com/ru/articles/1018504/?utm_campaign=1018504&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Скомпилировать</a>]]></description>
      
      <pubDate>Thu, 02 Apr 2026 12:43:03 GMT</pubDate>
      <dc:creator><![CDATA[PyXiion]]></dc:creator>
      
      <category><![CDATA[c++20]]></category><category><![CDATA[c++]]></category><category><![CDATA[ненормальное программирование]]></category><category><![CDATA[компиляторы]]></category><category><![CDATA[compile-time]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Ускоряем игру «Жизнь» с помощью CUDA / Triton]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1018126/</guid>
      <link>https://habr.com/ru/articles/1018126/?utm_campaign=1018126&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/13c/c9c/cb9/13cc9ccb9e6ad88d95c7afb5d4e1a081.png" /><p>Давайте рассмотрим реализацию <a href="https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life" rel="noopener noreferrer nofollow">конвеевской игры «Жизнь»</a>&nbsp;при помощи графической карты. Я хочу поэкспериментировать с разными библиотеками и методиками, чтобы понять, как обеспечить наилучшую производительность. Начнём мы с простого и постепенно будем повышать сложность.</p><p>Игра «Жизнь» — это простой клеточный автомат, поэтому она должна хорошо поддаваться GPU-ускорению. Правила просты: каждая ячейка в двухмерной сетке или жива, или мертва. На каждом шаге мы подсчитываем живых соседей ячейки (включая диагонали). Если ячейка жива, она остаётся живой, если живы два или три её соседа. В противном случае она умирает. Если клетка мертва, она оживает, если живы ровно три соседа. Из этих простых правил возникает потрясающий объём сложности, о котором написаны подробные статьи.</p><p>Для простоты я буду рассматривать только сети N×N и пропущу вычисления на краях. Всё будет работать на Nvidia A40, а бенчмарк производительности я буду проводить при N=2<sup>16</sup>. Пока мы будем хранить каждую ячейку в виде 1 байта, поэтому весь массив займёт 4 ГБ.</p><p>Весь код выложен в <strong><a href="https://github.com/BorisTheBrave/gol" rel="noopener noreferrer nofollow">репозитории GitHub</a></strong>.</p> <a href="https://habr.com/ru/articles/1018126/?utm_campaign=1018126&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 02 Apr 2026 07:39:43 GMT</pubDate>
      <dc:creator><![CDATA[PatientZero]]></dc:creator>
      
      <category>cuda</category><category>triton</category><category>игра жизнь</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Безопасность С++ и буридановы мыши в ИТ]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1018288/</guid>
      <link>https://habr.com/ru/articles/1018288/?utm_campaign=1018288&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/932/720/125/93272012526fbaea3d1cd5b358863a2c.jpg" /><p>В ИТ есть странная форма «информационной инерции»: когда фраза однажды удачно легла на реальность, стала цитатой, превратилась в маркер «своего» - и дальше продолжила жить сама по себе. Реальность уехала, практики сменились, инструменты стали другими, экономика разработки перевернулась, а штамп формулировки остался. И особенно охотно её повторяют те, кому нужно писать быстро и убедительно, но нет времени (или компетенции) разбирать в технических деталях.</p><p>И проблема не в том, что старые тезисы изначально были бессмысленными. Проблема в том, что их продолжают подавать как вечные законы природы - без даты, без контекста и без поправок на то, что индустрия в корне изменилась.</p><p>Например, фразы про “серебряную пулю” и "небезопасный С++ ", которые звучат почти в каждом популярном тексте о разработке и безопасности, и оба часто переворачиваются так, что становятся откровенной неправдой.</p> <a href="https://habr.com/ru/articles/1018288/?utm_campaign=1018288&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 02 Apr 2026 07:15:33 GMT</pubDate>
      <dc:creator><![CDATA[rsashka]]></dc:creator>
      
      <category><![CDATA[программирование]]></category><category><![CDATA[брукс]]></category><category><![CDATA[серебряная пуля]]></category><category><![CDATA[мемы]]></category><category><![CDATA[безопасность]]></category><category><![CDATA[журналистика]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Асинхронное логирование в C++ — не серебряная пуля: что на самом деле ограничивает производительность]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1017842/</guid>
      <link>https://habr.com/ru/articles/1017842/?utm_campaign=1017842&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/08e/3e6/645/08e3e664550812e0d958d4c8dbbf74f2.png" /><p>Асинхронное логирование давно считается “очевидной оптимизацией”: вынесли запись в отдельный поток — и всё стало быстрее.</p><p>Но если копнуть глубже, оказывается, что это не совсем так.</p><p>В предыдущей статье я разбирал производительность популярных C++ логгеров и показывал реальные цифры:<br> 👉 <a href="https://habr.com/ru/articles/1012874/" rel="noopener noreferrer nofollow">https://habr.com/ru/articles/1012874/</a></p><p>Там уже было видно, что хорошо оптимизированное синхронное логирование может быть очень быстрым.</p><p>В этой статье разберёмся, <strong>почему async logging не делает логирование быстрее само по себе</strong>, и что на самом деле происходит внутри:</p> <a href="https://habr.com/ru/articles/1017842/?utm_campaign=1017842&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 01 Apr 2026 16:20:11 GMT</pubDate>
      <dc:creator><![CDATA[emishkurov]]></dc:creator>
      
      <category><![CDATA[с++]]></category><category><![CDATA[логирование]]></category><category><![CDATA[асинхронное программирование]]></category><category><![CDATA[производительность]]></category><category><![CDATA[многопоточность]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как найти UB, которое никто не хочет замечать: разбираем clang-tidy изнутри]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/yadro/articles/1017930/</guid>
      <link>https://habr.com/ru/companies/yadro/articles/1017930/?utm_campaign=1017930&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/183/fa0/087/183fa0087ea071f7bcd3dbc3936e5f24.png" /><p>Привет, Хабр! Меня зовут Анастасия Черникова, я занимаюсь разработкой компиляторных технологий и инструментов на базе LLVM в Синтакоре.</p><p>Неопределенное поведение (undefined behavior, UB) по-разному выглядит с точки зрения компилятора и разработчика. Для первого оно, как правило, открывает дополнительные возможности для оптимизации. Для программиста же UB может стать проблемой, особенно если оно остается незамеченным и не учитывается при разработке.</p><p>В этой статье рассмотрим подход к поиску UB с использованием статического анализа. В качестве примера я использую clang-tidy: сначала разберу, как устроены существующие чекеры и как работают AST matchers, а затем покажу, как расширять их и добавлять собственные проверки, если стандартных возможностей оказывается недостаточно.</p> <a href="https://habr.com/ru/articles/1017930/?utm_campaign=1017930&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Отправиться на поиски UB</a>]]></description>
      
      <pubDate>Wed, 01 Apr 2026 14:52:27 GMT</pubDate>
      <dc:creator><![CDATA[Anastasiya_Chernikova (YADRO)]]></dc:creator>
      
      <category><![CDATA[llvm]]></category><category><![CDATA[clang-tidy]]></category><category><![CDATA[ast]]></category><category><![CDATA[check]]></category><category><![CDATA[cpp]]></category><category><![CDATA[undefined behavior]]></category><category><![CDATA[UB]]></category><category><![CDATA[compiler]]></category><category><![CDATA[sanitizers]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Гонка вооружений. Почему античиты всегда проигрывают?]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1017654/</guid>
      <link>https://habr.com/ru/articles/1017654/?utm_campaign=1017654&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/6ac/ea1/bf7/6acea1bf77442f968133b5c6f9ebe484.png" /><p><strong>ДИСКЛЕЙМЕР:</strong></p><p><em>Автор не призывает к игре с сторонним ПО. Вся информация, приведенная в статье - приведена лишь в образовательных и ознакомительных целях. Информация была взята из открытых источников и ни к чему не призывает.</em></p><p><strong>СОДЕРЖАНИЕ:</strong></p> <a href="https://habr.com/ru/articles/1017654/?utm_campaign=1017654&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 31 Mar 2026 17:00:02 GMT</pubDate>
      <dc:creator><![CDATA[lamonosik1]]></dc:creator>
      
      <category><![CDATA[античит]]></category><category><![CDATA[античит фейсит]]></category><category><![CDATA[античит-системы]]></category><category><![CDATA[counter strike]]></category><category><![CDATA[читы]]></category><category><![CDATA[софт]]></category><category><![CDATA[valorant]]></category><category><![CDATA[vanguard]]></category><category><![CDATA[античиты]]></category><category><![CDATA[игры]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[MCP vs Thin MCP: где AI агенты теряют скорость]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/raft/articles/1011860/</guid>
      <link>https://habr.com/ru/companies/raft/articles/1011860/?utm_campaign=1011860&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/aad/4cf/e4c/aad4cfe4c4b4cbd9e36c46e83a906233.png" /><p>MCP выглядит как удобный способ структурировать LLM-приложение, но за это приходится платить. При этом попытки «ускорить систему» через C++, IPC или смену сериализации не всегда дают ожидаемый результат. В статье разбираю, где на самом деле возникает latency и почему архитектура оказывается важнее, чем выбор технологий.</p> <a href="https://habr.com/ru/articles/1011860/?utm_campaign=1011860&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 31 Mar 2026 11:36:56 GMT</pubDate>
      <dc:creator><![CDATA[Phoenix133 (Raft)]]></dc:creator>
      
      <category><![CDATA[mcp]]></category><category><![CDATA[latency]]></category><category><![CDATA[ipc]]></category><category><![CDATA[c++]]></category><category><![CDATA[python]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Множество Мандельброта — видео]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1016624/</guid>
      <link>https://habr.com/ru/articles/1016624/?utm_campaign=1016624&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/aab/320/938/aab320938f3ecb27fb22d9fb22466468.png" /><p>Анимация: генерирует последовательность из 255 высокоточных кадров в формате BMP (frame_000.bmp ... frame_254.bmp) и автоматически компилирует их в видеоролик (файл Mandelbrot.mp4) с частотой 30 кадров в секунду, используя встроенный FFmpeg.</p><p>Скачать последнюю версию (Windows и Linux)<br>В windows это Mandelbrot_windows.exe и ffmpeg.exe<br><a href="https://github.com/Divetoxx/Mandelbrot-Video/releases%EF%BF%BC%D0%92%D1%8B%D1%88%D0%B5" rel="noopener noreferrer nofollow">https://github.com/Divetoxx/Mandelbrot-Video/releases<br></a>Выше README содержит English и Русский!</p><p>FFmpeg - "швейцарский армейский нож" для обработки видео. В 2026 году он остается отраслевым стандартом, поддерживаемым сообществом разработчиков открытого программного обеспечения. От YouTube и Netflix до профессиональных киностудий - все на него полагаются. И да, он совершенно бесплатный.</p> <a href="https://habr.com/ru/articles/1016624/?utm_campaign=1016624&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 31 Mar 2026 07:00:56 GMT</pubDate>
      <dc:creator><![CDATA[aokoroko]]></dc:creator>
      
      <category><![CDATA[g++]]></category><category><![CDATA[c++]]></category><category><![CDATA[мандельброт]]></category><category><![CDATA[mandelbrot set]]></category><category><![CDATA[компьютерная анимация]]></category><category><![CDATA[программы]]></category><category><![CDATA[программирование]]></category><category><![CDATA[алгоритмы]]></category><category><![CDATA[графика]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Concepts в C++: шаблоны, которые наконец‑то понятны]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/otus/articles/1015248/</guid>
      <link>https://habr.com/ru/companies/otus/articles/1015248/?utm_campaign=1015248&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/fea/50f/1ed/fea50f1edd83dfcc95e510a762cd26a6.png" /><p>Ошибки шаблонов в C++ — отдельный жанр: вы ожидаете простой контракт к типу, а получаете десятки строк из глубин STL. Проблема не в компиляторе, а в том, что сами требования к типам в классических шаблонах долгое время оставались неявными. Concepts это меняют: они позволяют формализовать ожидания к типу прямо в коде, сделать перегрузку осмысленной, а ошибки — читаемыми. В этой статье разберём, как работают concepts, зачем они действительно нужны и как использовать их не как «синтаксический сахар», а как инструмент проектирования.</p> <a href="https://habr.com/ru/articles/1015248/?utm_campaign=1015248&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 30 Mar 2026 12:50:37 GMT</pubDate>
      <dc:creator><![CDATA[badcasedaily1 (OTUS)]]></dc:creator>
      
      <category><![CDATA[c++]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как я учу C, делая ASCII игру]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1016516/</guid>
      <link>https://habr.com/ru/articles/1016516/?utm_campaign=1016516&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>Я решил учить C не по учебникам, а через практику — сделать свою простую консольную игру. Не ради “проекта мечты”, а чтобы на собственных ошибках разобраться, как всё работает на самом деле.</p> <a href="https://habr.com/ru/articles/1016516/?utm_campaign=1016516&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sun, 29 Mar 2026 10:46:23 GMT</pubDate>
      <dc:creator><![CDATA[Meronto]]></dc:creator>
      
      <category><![CDATA[C]]></category><category><![CDATA[ascii]]></category><category><![CDATA[игры]]></category><category><![CDATA[c++]]></category><category><![CDATA[системное программирование]]></category><category><![CDATA[консоль]]></category><category><![CDATA[windows]]></category><category><![CDATA[linux]]></category><category><![CDATA[gamedev]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Возврат значений из функций в x86-64: регистры, память и скрытые аргументы]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1016440/</guid>
      <link>https://habr.com/ru/articles/1016440/?utm_campaign=1016440&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/2b7/b3b/5a2/2b7b3b5a2b560efd7b1bc9aaf926566d.png" /><p>Наверняка многие и не задумываются: а как на самом деле происходит возврат структур и других типов значений из функций? Что происходит под капотом, какие приемы задействует компилятор? В данной статье я постараюсь дать ответы на эти вопросы и сделать это просто и понятно.</p> <a href="https://habr.com/ru/articles/1016440/?utm_campaign=1016440&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sun, 29 Mar 2026 07:22:54 GMT</pubDate>
      <dc:creator><![CDATA[klewy]]></dc:creator>
      
      <category><![CDATA[x86-64]]></category><category><![CDATA[assembly]]></category><category><![CDATA[возврат значений из функции]]></category><category><![CDATA[low-level programming]]></category><category><![CDATA[компилятор C++]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[GDB для тех, кто думает, что отладка — это фантастика]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1016430/</guid>
      <link>https://habr.com/ru/articles/1016430/?utm_campaign=1016430&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/797/add/89d/797add89da3408f19958923dd36e4e9f.png" /><p><code>cout</code>&nbsp;- плохой отладчик! Как за 30 секунд найти место падения программы? Какие 7 команд GDB нужно знать каждому C++ разработчику? В этой статье я делюсь личным опытом: как я боялся GDB, думал, что это «магия для гуру», а потом понял, что 70% задач решается простыми командами.</p><p>Спойлер: главный страх - это неизвестность. А когда знаешь&nbsp;<code>backtrace</code>,&nbsp;<code>break</code>,&nbsp;<code>next</code>,&nbsp;<code>print</code>&nbsp;и&nbsp;<code>info locals</code>, GDB становится лучшим другом. Статья рассчитана на начинающих C++ разработчиков, которые хотят перестать бояться терминала и начать отлаживать системно.</p> <a href="https://habr.com/ru/articles/1016430/?utm_campaign=1016430&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sun, 29 Mar 2026 05:22:20 GMT</pubDate>
      <dc:creator><![CDATA[aktden]]></dc:creator>
      
      <category><![CDATA[gdb]]></category><category><![CDATA[с++]]></category><category><![CDATA[отладка]]></category>
    </item>
  

  

  

	
  

  

  

      

      

      

    
  </channel>
</rss>
