Обновить
232.11

C++ *

Типизированный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Мой радарный МУО: продолжаем продолжать

Уровень сложностиПростой
Время на прочтение13 мин
Охват и читатели9.9K

Привет, Хабр!

Так уж сложилось, что 99% устройств моего «умного дома» были спроектированы и собраны самостоятельно — что тут поделать, каждый развлекается как может. Об одном из таких устройств я писал ранее, а именно — о модуле управления освещением с радарным датчиком HLK-LD2402. И в соответствии с жизненным циклом отладки, а также процессом эксплуатации устройства назрела необходимость в программных улучшениях, о которых я постараюсь коротко рассказать в этой статье.

Читать далее

Новости

tRNS: Как инженерный азарт привёл к самодельному транскраниальному стимулятору

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели14K

Прототип DIY tRNS: архитектура, генерация сигнала (100–640 Гц hf-tRNS), VCCS на Howland Current Pump, отображение метрик сигнала в процессе работы, репозиторий с кодом и выводы.

Читать далее

Как я в 15 лет собрал LLVM ToolChain на Windows без MSVC

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели7K

Как я собрал актуальный LLVM со всеми инструментами (Clang, LLD, LLDB, clang-extra-tools) и всеми нужными для автономной работы рантаймами (libc++, libc++abi,libinwind,compiler-rt,UCRT) нативно под Windows. В этой статье я расскажу о своем 4-месячном пути: от накоплений со школьных обедов на первый ПК до борьбы с линковкой библиотек и поиска фиксов в экспериментальной ветке LLVM 22. История о том, почему я выбрал путь «чистого Upstream» и как заставил это всё работать в 15 лет.

Заинтересовало

Компилятор языка моделирования в одиночку: от C++ к Rust — находки и откровения

Уровень сложностиПростой
Время на прочтение22 мин
Охват и читатели9.4K

Тема специального языка для моделирования многокомпонентных динамических систем давно меня зацепила и хотелось написать свою реализацию для него, так как было жгучее желание сделать лучше: чтобы работало надёжнее и быстрее, чем у авторов языка (MVL - в статье подробнее про язык), и к тому же ещё и кроссплатформенно.

Расскажу про заходы к задаче на C++, почему перешёл в итоге к Rust - что приобрёл, где потерял - поделюсь деталями и самой реализации, которые, надеюсь, будут интересны и растаманам, и плюсовикам, и всем прочим доморощенным компиляторостроителям, а также тем, кого привлекают темы реализации языков, DSL или численного моделирования.

Читать далее

Библиотека KASWeb — Kandelaber's Async & Safe Web requests

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели5.2K

Мой пэт-проект KASWeb: async-safe C++ библиотека для HTTP-запросов без висячих колбэков

В данной статье мы разберём:

• Как достичь удобства через автономность запросов?
• Как сделать колбэки безопасными?
• Нужно ли бить пользователей палкой по рукам?

Читать далее

Компиляторы, AI-ассистенты и вызов IOCTL: доклады о С++ и Linux вместо новогоднего кино

Время на прочтение3 мин
Охват и читатели6.3K

Представьте, что вам не нужно выбирать. Ни между красной и синей таблетками, ни между макарошками и пюрешкой, ни между светлой и темной сторонами. Вы можете взять лучшее от каждого предложения. Мы посмотрели все доклады System Level Meetup, выбрали самые интересные, собрали презентации и записи в одном месте. Для удобства разделили материал на треки , C++ и С/Linux Kernel, но смотреть можно все подряд.

Читать далее

Нескучное программирование. Overloads

Время на прочтение20 мин
Охват и читатели11K

Года четыре назад, на стыке двух проектов, когда старый уже просто сапортили, а новый только находился в стадии препродакшена и питчингов разной степени завершенности (планирование и попыток продать концепт и идеи незаинтересованным инвесторам) у моей тогдашней команды удивительным образом появилось свободное время и где-то между обучением новичков премудростям кастомного движка, попытками переключаться на 20-ый стандарт и ретроспективой бэклога, солнечным сентябрьским утром родилась идея сделать студийные обсуждения в стиле подкаста PVC по теории С++, чтобы понять какие возможности реализованы в движке, какие компетенции есть у пополнения и вообще как-то освежить теорию. Так родился мини-курс внутристудийных лекций от разных людей с разным, но реальным опытом применения, позже осевший в местной вики в виде набора статей, бест практис или вообще заметок с упором на игродевовскую тематику. Чтобы все это добро не пропадало, ибо человекочасов туда было вбухано порядком я решил эти заметки облагородить и выложить в читаемом виде (видео к сожалению не будет, ибо НДА и всяческие спойлеры проектов и местной кухни разработки, да и никто не будет эти десятки часов болтовни слушать), но сами принципы языка и его особенностей вещь копирайту неподвластная, поэтому в таком виде вроде можно. Если подобный формат "зайдет" аудитории Хабра, можно будет продолжить статьи в виде небольшого цикла, как это получилось с серией Game++. К сожалению, начнем не с обобщенного программирования, а со второго подкаста про перегрузки, потому что первые записи оказались испорчены и на их восстановление потребуется время. Итак перегрузка в С++, не так как её учат в универе и дают в книжках...

Читать далее

Пишем на С++ 23 под Windows 95, не вызывая подозрение у санитаров

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели21K

Что, если я скажу вам, что можно писать код на свежайшем C++23 с модулями, лямбдами и constexpr, а потом запустить его на Pentium с 16 МБ ОЗУ под Windows 95? Звучит как магия или безумие, но это работает.

В этой статье я покажу, как:

Настроить компиляцию в Visual Studio 2022 под 32-битный x86 без исключений и стандартной библиотеки. Создать минимальную реализацию std::string и аллокаторов для работы на чистом WinAPI. Собрать проект линкером 1998 года и запустить его на Windows 95. Сохранить единый код для современных и ретро-систем, используя возможности C++23.

Читать далее

Ловушка профилирования

Уровень сложностиСложный
Время на прочтение5 мин
Охват и читатели11K

Оптимизация и профилирование C++: branchless-код проиграл обычному if-else. Что пошло не так? Разбираемся вместе.

Читать далее

Формат данных на C++, который не боится рефакторинга

Время на прочтение8 мин
Охват и читатели9K

Не про редактор и не про алгоритмы. Про то, как формат сохранения переживает переписывание логики, рост требований и годы разработки.

Есть миф, что рефакторинг ломает обратную совместимость. Я 5 раз переписывал редактор графов и не сломал ни одного файла. Рассказываю, как это возможно.

Почему данные переживают иерархии кода

Матрицы и векторы: решение систем линейных алгебраических уравнений

Время на прочтение9 мин
Охват и читатели9.8K

В статье представлена реализация методов решения системы линейных алгебраических уравнений (СЛАУ) четырьмя методами: методом Гаусса, LU декомпозиции, компактной схемой исключения, QR декомпозиции. Для реализации был использован шаблон классов матрицы и вектора. Приводятся результаты решения СЛАУ, погрешность решения и время решения СЛАУ. Для сравнения результаты представлены в таблице.

Читать далее

Вайбкодинг: от Unity до AI, или Почему мы ненавидим инструменты, которые снижают порог входа

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели8.9K

В своей прошлой статье я рассказывал, как продвинутая LLM для написания кода может упустить очевидные вещи и привести к потере данных. Та история была скорее о техническом курьезе, который может случиться при бездумной вере в возможности нейросети.

Сегодня я хочу поговорить о самом вайбкодинге как о явлении, вызывающем бурю эмоций в IT-сообществе. Этот термин, придуманный и популяризированный Андреем Карпатым в начале 2025 года, быстро стал нарицательным. Для одних это будущее, для других — синоним «говнокода». Но так ли страшен вайбкодинг, как его малюют?

Читать далее

Как писать резюме в IT-сфере? Как даже хорошее резюме может терять отклики и что с этим делать?

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели8.6K

Меня зовут Екатерина Рычкова, я CEO HR-агентства и рекрутёр с 15-летним опытом.

Сегодня разбираю резюме кандидата из IT-индустрии с хорошим опытом, сильной технической базой и понятной целью: переход в Go-разработку.

Самое приятное, что в IT-сфере оформление резюме — не самое ключевое. Главное, на что смотрит рекрутер:

Читать далее

Ближайшие события

RAII в современном C++: как правильно организовать автоматическое управление ресурсами

Время на прочтение4 мин
Охват и читатели8.6K

Привет, Хаброжители!

Сегодня мы приготовили для вас перевод статьи про RAII в современном C++. Вы узнаете как правильно организовать автоматическое управление ресурсами.

В современном C++ управление ресурсами — это ключевая составляющая корректности программы, затрагивающая память, дескрипторы файлов, блокировки и все внешние системы, с которыми приходится взаимодействовать вашему коду. Начинающие программисты часто полагают, что при работе с C++ требуется активно очищать память вручную, пользуясь командами new, delete, malloc или free. Но на самом деле в современном C++ эта работа строится существенно иначе.

Читать далее

Инь и ян программирования или alter ego многопоточности

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели6.1K

Происходит вполне осязаемый процесс зомбирования многопоточностью. А потому хотелось бы кое-что уточнить, конкретизировать, что можно считать параллельными вычислениями и, соответственно, параллельным программированием, а что нельзя.

 Предположим, перед вами «черный ящик». Это может быть, к примеру, ваш комп , ноут или хотя бы смартфон. Нет внешних критериев, по которым вы могли бы идентифицировать алгоритм его работы. В смысле параллельный он или последовательный. Следовательно, для любой последовательной программы должен быть универсальный формальный механизм, преобразующий ее в эквивалентную параллельную программу и наоборот.

 Уже давно известны универсальные модели последовательных алгоритмов, такие как машина Тьюринга или машина Поста. Есть и другие модели, но без потери общности вполне можно ограничиться упомянутыми. Но современный собеседник буквально впадает в ступор, когда речь заходит о  модели параллельных вычислений.

Но так было не всегда. В 80-х годах прошлого века математики, программисты и другие, причастные к процессу алгоритмизации и программирования, пытались такую модель создать. К сожалению, все, похоже, завершилось автоматом сетями Петри. Но даже с учетом столь печального факта, как не успешность таких поисков, должна существовать, как и в случае последовательных алгоритмов, модель параллельных алгоритмов. Без нее разговоры об упомянутом выше  преобразовании алгоритмов просто не имеют смысла.

В силу философского закона единства и борьбы  противоположностей, когда есть одно, то должно быть и другое. Так, если есть свет, то, как ни крути, будет и тьма. Когда есть хорошее, то рано или поздно, как ни избегай, будет и плохое (жизнь, как известно, в полоску). А если есть последовательное программирование, то должно быть, как его ни назови, альтернативное ему - параллельное. А если уж оно есть или, как минимум, обсуждается, то необходимо дать ему определение, аналогичное по смыслу моделями обычных алгоритмов. Все это естественно и даже очевидно, когда речь идет о научных понятиях и, как в нашем случае, о науке программирования.

Читать далее

Анатомия performance-critical C++ кода на примере ECS

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели8.4K

Всем привет! Это продолжение статей про мою ECS with Sectors в моём движке Stellar Forge!

В предыдущей статье я описал структуру памяти, что являлось подготовкой фундамента для быстрой итерации, а сейчас хочу рассказать как по этой памяти передвигаться.
Получилась общая обзорная статья о том, как заставить C++ код быть быстрее, так что устраивайтесь поудобнее :-)

Статья будет полезна всем, кто пишет performance-critical код на C++: геймдев, HFT, обработка данных, embedded.

Читать далее

Передаем стандарт IEEE802.15.4-2003 по технологии SDR(Software Defined Radio) и HackRF

Уровень сложностиСредний
Время на прочтение3 мин
Охват и читатели11K

Реализация стандартных протоколов эфирной связи методом SDR(Software Defined Radio)
В статье рассматривается способ передачи протокола IEE802.15.4 доступными устройствами SDR и проблемами с ними связанными. Предлагаются решения проверенные на практике.

Читать далее

Учимся правильно использовать ИИ при разработке программного обеспечения

Время на прочтение9 мин
Охват и читатели9.8K

Недавно написал статью о проблемах использования ИИ (Иллюзии Интеллекта) при разработке программного обеспечения / Хабр, и решил не ждать у моря погоды, когда (и если) провайдеры исправят ситуацию на своей стороне, а попытаться самостоятельно выработать приемлемый алгоритм работы с ИИ, который был бы экономически выгодным и целесообразным при разработке ПО хотя бы лично для меня.

Данная статья - это очередной Хабрахак с подведением итогов и получением обратной связи об использовании ИИ-помощников при разработке программного обеспечения с примерами кода и итоговыми выводами о целесообразности использования ИИ в том или ином проекте.

А также поделюсь неожиданным инсайдом, который я случайно обнаружил в процессе работы над ИИ-кодом, который будет очень полезен матёрым программистам, которые до сих пор скептически относятся к использованию ИИ в своих проектах.

Читать далее

C++, Rust и цветовая дифференциация воротничков

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели10K

Я почти 20 лет пишу код на С++ за деньги, и почти все это время ощущаю неприязнь к инструменту, который позволяет мне безбедно жить. К тому же я занимаюсь системным программированием, а это налагает дополнительные требования к знанию языка.

Я долго не мог выразить вербально, что меня так отталкивает в C++. Однажды из любопытства меня заинтересовал Rust. Я влюбился в него не сразу, сделав не менее 3х подходов к снаряду изучению, пока наконец-то не нащупал интуитивное понимание. С этого момента Rust превратился для меня в эталон инструмента для системного программирования.

Так что и где не так?

Как сериализовать всё состояние C++-программы и пережить обновление бинарника

Время на прочтение13 мин
Охват и читатели8K

Экспериментальная система сериализации графов объектов с самоописанием, миграциями и живой отладкой — без VM и без JSON

О чём статья:

долгоживущие(сохранение всего runtime-состояния) программы и движки

загрузка старых данных в новую(с обновлённой системой типов) версию бинарника

правка состояния на лету без перезапуска

без виртуальной машины

без замедления в 10–50 раз

Почему стандартные форматы не подходят:

они работают с деревьями, а не с графами

не умеют циклы и самоссылки

ломаются при изменении структуры типов

Что будет показано:

сериализация объектных графов с циклами

самоописание типов прямо в файле

миграция данных при удалении и перестановке полей

какие идеи оказались тупиком, а какие — нет

Читать далее
1
23 ...

Вклад авторов