Date | Title | Description |
11.09.2024 | The Evolution of C++: A Dive into Smart Pointers and Ranges | C++ is a language that evolves like a river, carving new paths through the landscape of programming. Recent updates have introduced powerful features that enhance the way developers interact with data. This article explores two significant ... |
11.09.2024 | Дорогая, я уменьшил {fmt}: уменьшил размер до 14kB и избавился от рантайма C++ | Библиотека форматирования {fmt} известна своим небольшим влиянием на размер бинарников. Чаще всего её код в несколько раз меньше по сравнению с такими библиотеками, как IOStreams, Boost Format или, что иронично, tinyformat. Это достигается ... |
10.09.2024 | Кратко про библиотеку Range в C++ | Привет, Хабр!
С выходом C++20 библиотека Range получила свое официальное место в языке, что ознаменовало некоторый важный шаг в развитии работы с контейнерами и итераторами. Это обновление ввело новый подход к манипуляциям с данными.
Итак, ... |
10.09.2024 | C++ Дайджест №8 (2 сентября – 8 сентября 2024) | Привет, Хабр! Сегодня я хочу вам представить подборку интересных новостей и материалов по C++ за последнюю неделю.
Приятного чтения!📝 Статьи
Understanding the inner workings of C++ smart pointers - The shared_ptr — вам всегда было интересно... |
01.09.2024 | The Rise of New Programming Languages: A Shift from C++ | In the vast landscape of programming languages, C++ has long been a titan. Born in 1985, it has powered countless applications and systems. Yet, as the digital world evolves, whispers of change grow louder. New contenders are emerging, vyin... |
31.08.2024 | Как убить единорога или попытка навести порядок с инициализацией переменных в языке C++ | Знаете, я никогда не задумывался, насколько плоха или хороша инициализация переменных в языке C++. Я просто использовал ее. И не имел никаких проблем. Но недавно я посмотрел пару видео, пролистал несколько статей и да, я должен признать… он... |
27.08.2024 | Аналитики IEEE Spectrum опубликовали рейтинг языков программирования за 2024 год | Аналитики Института инженеров электротехники и электроники (IEEE) опубликовали рейтинг популярности языков программирования за 2024 год. В пятёрке лидеров оказались Python, Java, JavaScript, C++ и TypeScript.
Самый активный рост показал Typ... |
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;
Многие люди считают, что инициализация происходит в строке... |
17.08.2024 | The Evolution of C++: Unpacking Range-Based For Loops and Game Engine Development | C++ is a language that has evolved like a fine wine, maturing over decades. Its syntax and features have been refined, offering developers powerful tools for crafting efficient and elegant code. Among these tools is the range-based for loop... |
14.08.2024 | «Range-based for»: что интересного лежит на поверхности | Новый синтаксис для циклов for в C++ появился уже давно - более десяти лет назад в стандарте C++11. Идея, скрывающаяся за этим синтаксисом, не является сколь-нибудь запутанной, и практически все, кто интересуются новыми свойствами языка, бы... |
13.08.2024 | Flax Engine. Знакомство с игровым движком и анализ его исходного кода | "Как будто у Unreal и Unity родился ребёнок" — такое трогательное описание дали этому движку в GameDev-сообществе. Эта фраза не только мило звучит, но и точно передаёт его суть, ведь движок действительно задумывался как нечто сред... |
11.08.2024 | Реализуем эффективный тупль с помощью C++26 | Свет видел много любительских реализаций std::tuple, и реализация своих велосипедов — наверное, действительно действенный способ обучения: вряд-ли можно сказать, что ты что-то по-настоящему понимаешь, если не можешь объяснить, как это что-т... |
07.08.2024 | Как найти работу для фиксиков: анализируем Godot Engine | Разработка игр и их прохождение могут быть невероятно увлекательными и затягивающими занятиями, приносящими огромное удовольствие. Но ничто так не портит впечатление от игрового процесса, как коварно спрятавшийся баг. Поэтому сегодня под на... |
05.08.2024 | TIOBE Programming Language Index News (August 2024): Python Clinches Its ‘Hegemony’ | Python, the number one programming language in the TIOBE Programming Language Community Index in August, has further solidified its place at the top.
Python moved from 16.12% points in July to 18.04% in August, a major jump. This follows an... |
30.07.2024 | 4 типовые ловушки в работе со строками в С и С++ и как их избежать | Некорректное использование строк может стать настоящей ахиллесовой пятой защиты программы. Поэтому так важно применять актуальные подходы к их обработке. Под катом разберём несколько паттернов ошибок при работе со строками, поговорим о знам... |
29.07.2024 | Тысяча и одна библиотека С++ | В жизни каждого программиста С++ рано или поздно возникает задача, которую кто-либо уже решил. Однако найти это решение бывает очень непросто в силу разных причин: оно недостаточно разрекламировано, либо имеет нечеткую документацию, или воз... |
27.07.2024 | The Power of Metrics: Safeguarding Your .NET Applications with OpenTelemetry and Prometheus | In the fast-paced world of software development, every second counts. When an application goes live, the stakes are high. Bugs can lurk in the shadows, waiting to pounce. But fear not; there are tools that can shine a light on these hidden ... |
26.07.2024 | Дебажим баги в дебаггере x64dbg. Без дебаггера | Ни один процесс разработки программы не проходит без отладки. Современные IDE обеспечивают программиста встроенным отладчиком. Однако бывают ситуации, когда использование IDE для отладки избыточно или невозможно, и тогда на помощь приходят ... |
24.07.2024 | Фиксим баги в вашем AI или разбор ошибок в OpenVINO | Друзья-разработчики, приглашаем вас продолжить захватывающее путешествие по дебрям кода Intel OpenVINO! Вооружившись статическим анализатором аки детективы, мы разоблачим наиболее коварные, интересные ошибки и опечатки, а также их скрытые т... |
15.07.2024 | Возможности С++: от стандартных алгоритмов до диапазонов (Ranges) | Привет, Хабр! Меня зовут Николай, я разработчик С++ в SimbirSoft. В предыдущей статье мы с вами рассмотрели применение стандартных алгоритмов в повседневном коде и их преимущества над обычными циклами. В продолжение этой темы мне хотелось б... |
08.07.2024 | Насекомое 13 лет сидит в вашем компиляторе и не собирается оттуда вылезать | Представим, что у вас идеальный проект. Таски пилятся, компилятор компилирует, статические анализаторы анализируют, релизы релизятся. В какой‑то момент вы принимаете волевое решение открыть древний файл, в который никто не залезал уже много... |
07.07.2024 | Кадры в РФ — V. Тримодальное распределение зарплат часть 2 | Для лиги лени: ежемесячное нытье про зарплаты и наличие кадров. Поток сознания от нейросети, мысли вслух, рукопись найденная в солидоле ванне. Рукопись написана на архаичном протоязыке, и потому некоторые термины и идиоматические выражения ... |
24.06.2024 | Чистый код: Данные | Чистый код не набор внешних признаков, таких как наименование переменных и наличие или отсутствие комментариев, хотя они тоже важны. Чистый код — это архитектура программного продукта, которая позволяет легко читать и модифицировать програм... |
21.06.2024 | Go развивается в неверном направлении | Язык программирования Go известен своей простотой в использовании. Благодаря продуманному синтаксису, возможностям и инструментарию, Go позволяет писать легко читаемые и поддерживаемые программы произвольной сложности (см. этот список на Gi... |
19.06.2024 | Ненавижу, _____, C++ массивы | Или почему мне кажется, что про них нужно знать, но не нужно использовать.Вступление
Друзья, вы помните момент, когда впервые сунули указатель на первый элемент массива в оператор sizeof, и ваш код перестал работать так, как вы задумывали? ... |
18.06.2024 | C++20 в bare-metal программировании, работа с регистрами микроконтроллеров Cortex-M | RP2040 peripheral registers
Сегодня я хотел бы обсудить тему, с которой так или иначе сталкивался почти каждый программист встраиваемых устройств без использования настоящих операционных систем, а именно прямое управление периферийными узла... |
17.06.2024 | UB or not UB: дублируем элемент std::vector | В статье выясним, можно ли с точки зрения стандарта языка C++ тривиальным вызовом push_back продублировать элемент std::vector. Отвечая на простой вопрос, столкнемся с более интересными: что собой представляет внутренний мир вектора, как &q... |
17.06.2024 | С++ вам не нянька! Делайте, что хотите, но виноваты будете сами | Поговорили о перспективах С++, его особенностях и востребованности на рынке с Андреем Никитиным, ведущим инженером-разработчиком направления системного программирования Нижегородского подразделения компании «Криптонит».
С++ уже более сорока... |
11.06.2024 | Сколько UB в моём компиляторе? | У C и C++ программистов две головные боли в плане ошибок: утечки памяти и неопределённое поведение. И как вы догадались из названия, речь пойдёт о неопределённом поведении. И каком-то "моём" компиляторе. Если точнее, то о наборе к... |
05.06.2024 | Как пересобрать ядро для WSL2 и остаться в живых | Мы активно пользуемся WSL2 для того, чтобы открывать линуксовые коры в Visual Studio. Для обеспечения консистентности символов и коры мы монтируем squashfs образ, созданный в целевой системе. После очередного апдейта целевого дистрибутива, ... |
29.05.2024 | «Hello, World!» от мира сжатия данных. Канонический алгоритм сжатия данных Хаффмана | На данную тему была написана не одна сотня статей, но во всех, что видел, для построения двоичного дерева поиска использовались структуры по типу приоритетной очереди, хотя достаточно отсортировать массив частот в порядке убывания и отбрасы... |
26.05.2024 | Как Боб текстовый файл считывал | Как-то раз Бобу поручили построчно обработать текстовый файл. Боб решил решить эту задачу на C++, так как известно, что мало найдётся языков, которые могли бы потягаться с C++ в скорости. Поскольку C++ для Боба — дело новое, неосвоенное, он... |
20.05.2024 | Фабрика для std::variant: как объединить compile-time и run-time, чтобы получить выигрыш от обоих | Привет, Хабр! Меня зовут Михаил Полукаров, я занимаюсь разработкой Desktop-версии пользовательского приложения для совместной работы сотрудников с любого устройства VK Teams.
Если вы тоже работали с большими проектами, где активно применяют... |
16.05.2024 | Многообразие связных списков | Связный список – классическая структура данных, которая позволяет быстрые вставки/удаления, но при этом просаживает другие операции (случайный доступ к элементу). Мы пройдёмся от базовой реализации до других возможных вариаций этой структур... |
14.05.2024 | 11 мгновений ReactOS: user mode становится лучше? | ReactOS — это проект, где победу над регрессией, появление новой фичи или её рабочего прототипа празднуют так громко, что FOSS-сообществу приходится отвлекаться от переписывания всего на Rust и полемик о systemd. В последний раз мы проверял... |
07.05.2024 | Проверка игрового движка qdEngine, часть вторая: упрощение C++ кода | В этой статье мы рассмотрим, как статический анализатор PVS-Studio воодушевляет заняться рефакторингом кода. Ведь чем короче, проще и понятнее код, тем меньше в нём ошибок.
В предыдущей статье "Проверка игрового движка qdEngine, часть ... |
02.05.2024 | Подборка крутых докладов по С++ за 2023 год | Скоро начинается новый сезон конференций, а потому предлагаем вам ознакомиться с лучшими докладами по С++ с прошлого сезона. Эта подборка самых громких докладов за 2023 год поможет вам поглубже узнать С++ и набраться вдохновения. Вперёд за ... |
27.04.2024 | Проверка игрового движка qdEngine, часть первая: топ 10 предупреждений PVS-Studio | Баги, которые удалось найти в движке qdEngine, оказались весьма разнообразны, поэтому не хочется мешать всё в кучу в одной публикации. Читатели могут упустить интересные темы, связанные с написанием качественного кода. Поэтому разбор проект... |
16.04.2024 | 35+ бесплатных ресурсов для начинающих разработчиков С++ | Привет. Предположим, вы захотели начать изучать языĸ программирования C++ или, возможно, тех материалов, что уже изучили, вам недостаточно.
Я — Савва, программирую уже больше 7 лет, работаю менеджером команды наставников в Практикуме на кур... |
05.04.2024 | Как не надо проверять размер массива в С++ | Как часто вам приходится сталкиваться с конструкцией sizeof(array)/sizeof(array[0]) для определения размера массива? Очень надеюсь, что не часто, ведь на дворе уже 2024 год. В заметке поговорим о недостатках конструкции, откуда она берётся ... |
05.04.2024 | Go-like каналы на C++ | Каналы (channels, pipes) – это удобная абстракция для построения приложений, работающих в многопоточной среде. Они используются для передачи сообщений между потоками и, одновременно с этим, как средство синхронизации потоков. Я буду ссылать... |
05.04.2024 | Программирование и ИТ во мгле, но это не точно | У меня не получилось объяснить этим вашим ГПТ, какую статью я хочу. Пришлось писать самому и мемы придумывать. Поэтому в статье, будет гиперболизация проблем в айти и в программировании в частности, передергивания, набрасывание на вентилято... |
28.03.2024 | А в чем проблема работать с файлами? | Приветствую.
Год назад меня сильно увлекла тема отказоустойчивости приложений. Я начал изучать различные аспекты ее реализации в программах и больше всего меня заинтересовал процесс работы с диском. Ресурсов для изучения много, но они все р... |
27.03.2024 | Kerberos простыми словами | Введение
Несмотря на то, что уже существует множество различных статей про Kerberos, я всё‑таки решил написать ещё одну. Прежде всего эта статья написана для меня лично: я захотел обобщить знания, полученные в ходе изучения других статей, д... |
22.03.2024 | С 500 мс до нуля, или история о том, как я написал Node.js C++ addon и ускорил скидочный сервис в 500 раз | Приветствую тебя! Меня зовут Дмитрий и я работаю в Lad.
Сегодня я поведаю историю о том, как эволюционировал скидочный сервис одного из наших проектов. Пройдя путь от всеми нелюбимого, "тормозящего" сервиса, до сервиса,
который им... |
08.03.2024 | Корутины C++ для чайников: пишем асинхронный веб-клиент | Написать этот материал меня побудило... отсутствие хороших статей по корутинам в C++ в русскоязычном интернете, как бы странно это не звучало. Ну серьезно, C++20 существует уже несколько лет как, но до сих пор почти все статьи про корутины,... |
07.03.2024 | Это слишком опасно для C++ | Некоторые паттерны стало возможно использовать на практике только благодаря безопасности Rust по памяти, а на C++ они слишком опасны. В статье приведён один такой пример.
Работая над внутренней библиотекой, написанной на Rust, я создал тип ... |
04.03.2024 | Проверяем Blender | Командный центр PVS-Studio: "Как быстро летит время... А ведь в этом году, второго января, Blender исполнилось 30 лет! Как будто ещё вчера мы публиковали статью с разбором ошибок... Как 8 лет назад? Надо срочно исправлять ситуацию!&quo... |
26.02.2024 | Константность в C++
Оглавление
1. Константы — объявление, инициализация, правила использования
2. Константные типы
3. Константные нестатические функции-члены
4. Итераторы
5. Константные параметры функ... | Продолжаем серию «C++, копаем вглубь». Цель этой серии — рассказать максимально подробно о разных особенностях языка, возможно довольно специальных. Это седьмая статья из серии, список предыдущих статей приведен в конце в разделе 10. Серия ... |
20.02.2024 | Почему проверять результат вызова malloc c помощью assert плохая идея | Указатель, который вернула функция malloc, необходимо проверить перед использованием. Неправильным решением будет использовать для этого макрос assert. В этой статье мы разберём, почему это является антипаттерном.
Под функцией malloc далее ... |
19.02.2024 | Вороной, Манхэттен, рандом | Это история про то, как не довести дело до конца, но получить уйму опыта, и вообще ни разу не обломаться.
Итак, у нас был один программист, один художник, абсолютное непонимание рабочего процесса, незнакомый нам игровой движок и желание что... |
10.02.2024 | Бесплатные курсы для изучения C++ в 2024 году | В 2024 году в сети доступно множество бесплатных ресурсов для изучения C++, которые предлагают высокое качество обучения. Поэтому нет необходимости платить за курсы, если вы можете получить все необходимые знания бесплатно.
Учить C++ в 2024... |
07.02.2024 | Люди не понимают ООП | «ООП для меня означает лишь обмен сообщениями, локальные ограничения и защиту, сокрытие состояния процесса и крайне позднее привязывание», — Алан Кэй (человек, придумавший термин «объектно-ориентированное программирование»)1
Похоже, многим ... |
06.02.2024 | Следует ли проверять указатель на NULL перед вызовом функции free? | Короткий ответ: нет. Тем не менее, раз про это вновь и вновь спрашивают на Reddit, Stack Overflow и других сайтах, пришло время подробно разобрать эту тему. Оказывается, есть много интересного, о чём можно порассуждать.
Функция free
Функция... |
03.02.2024 | Какой тип ordering должен возвращать мой operator в C++? | На Хабре было опубликовано уже достаточно статей, посвященных «spaceship operator» operator ([1], [2], [3], [4]) И этой статьи бы не было, если бы все они были идеальны и описывали его во всей полноте. Но ни одна из них в деталях не рассказ... |
15.01.2024 | Что нам недодали в C++ | Фичи, которых нет
Уже более десяти лет я профессионально занимаюсь C++ разработкой. Я вошел в профессию 2013 году, в самый момент, когда комитет по стандартизации языка C++ раскочегарился и встал на рельсы трехлетних релизов обновленных ста... |
23.12.2023 | Вышла GNU Autoconf 2.72 с поддержкой стандарта C23 и опцией безопасности --enable-year2038 | 22 декабря 2023 года вышла стабильная версия GNU Autoconf 2.72. В новой версии утилиты для создания конфигурационных скриптов добавлена поддержка стандарта C23 (языка программирования C) и стала доступна опция безопасности --enable-year2038... |
10.12.2023 | 30 лет DOOM: новый код — новые баги | Сегодня первой игре из серии DOOM исполняется ровно 30 лет! Мы не могли обойти стороной это событие и в честь этого решили посмотреть, как же выглядит код этой легендарной игры спустя годы.Предисловие
DOOM навсегда останется в истории как о... |
14.11.2023 | C++ Дайджест №7 (30 октября – 12 ноября 2023) | Привет, Хабр! Сегодня я хочу вам представить подборку интересных новостей и материалов из мира C++ за последние две недели.
Приятного чтения!⚡️️ Новости и релизы
21 ноября, бесплатно, C++ митап в Москве и онлайне — Константин Владимиров, Ил... |
01.11.2023 | Обзор книги «С++ 20 в деталях»: доступно, но не для джунов | Привет, Хабр! Меня зовут Дмитрий Луцив, я работаю в СПбГУ на кафедре системного программирования и в лаборатории компании YADRO, веду ряд IT-дисциплин на математико-механическом факультете и помогаю вузам актуализировать образовательные про... |
31.10.2023 | Проверяем YTsaurus. Доступность, надёжность, open source | В этой статье мы расскажем вам о результатах проверки кода проекта YTsaurus статическим анализатором PVS-Studio и разберём найденные ошибки. Уже больше полугода назад YTsaurus — мощная BigData-система — стала Open Source. Её разработка и ис... |
31.10.2023 | C++ Дайджест №6 (16 октября – 29 октября 2023) | Привет, Хабр! Сегодня я хочу вам представить подборку интересных новостей и материалов из мира C++ за последние две недели.
Приятного чтения!⚡️️ Новости и релизы
C++ Moscow №2 — Чуть меньше чем через три недели, 19 ноября, в Москве состоитс... |
24.10.2023 | Как и почему я писал для Флиппера на Си-с-классами | Мой Флиппер дошёл до меня больше полугода назад, но что-то под него написать я собрался только сейчас. Его API рассчитаны на язык С — а у меня с ним опыта не очень много. Но проблем с тулингом не возникло — у Флиппера есть своя система сбор... |
18.10.2023 | FreeCAD и C++ код с неопределённым поведением для медитации | Изучая код проекта с помощью статического анализатора, иногда задаёшься вопросом: "Как возникла ошибка и почему её до сих пор не заметили?" Хотите посмотреть пример? Тогда приглашаем познакомиться с этой статьёй.
Противоестественн... |
16.10.2023 | C++ Дайджест №5 (2 октября – 15 октября 2023) | Привет, Хабр! Сегодня я хочу вам представить подборку интересных новостей и материалов из мира C++ за последние две недели.
Приятного чтения!⚡️️ Новости и релизы
Qt 6.6 — Добавление LayoutItemProxy, призванного упростить создание адаптивных... |
13.10.2023 | Глубина кроличьей норы: бинарная граница и ABI C++ | Оценивайте свои силы трезво.
Вопрос ABI (Application Binary Interface), бинарной границы и бинарной совместимости в C++, раскрыт на просторах интернета не так хорошо как хотелось бы. Особенно сложно в его изучении приходится новичкам, потом... |
12.10.2023 | Сборка мусора: как это делается в системном программировании | Давайте поговорим об одной из наиболее критичных по производительности программ, которой вы пользуетесь ежедневно: о вашей операционной системе. Поскольку при каждом разгоне железа вы получаете дополнительную вычислительную мощность, операц... |
05.10.2023 | Python, Go или… готовим сырой видеопоток с полсотни камер | В проектах, связанных с машинным зрением и обучением приходится работать с сырым видеопотоком с камер. Чтобы принимать, предобрабатывать и передавать эти данные нейросетям необходим отдельный программный компонент, который мы условно называ... |
02.10.2023 | C++ Дайджест №4 (18 сентября – 1 октября 2023) | Привет, Хабр! Сегодня я хочу вам представить подборку интересных новостей и материалов из мира C++ за последние две недели.
Приятного чтения!⚡️️ Новости и релизы
LLVM 17.0.1 — Новый мажорный релиз, принесший множество изменений во все проек... |
28.09.2023 | Визуализация алгоритмов стандартной библиотеки C++ (продолжение) | В стандартной библиотеке C++ много разных алгоритмов для работы с контейнерами. С помощью этих алгоритмов можно искать значения, сортировать последовательности, изменять их и делать многое другое. Среди такого большого количества алгоритмов... |
06.08.2023 | C++ Дайджест #0 (24 июля 2023 – 6 августа 2023) | Привет, Хабр! Сегодня я хочу представить вам подборку интересных новостей и материалов из мира C++.
Это пилотный выпуск, так что любые советы, отзывы и рекомендации, как сделать наш дайджест лучше, в комментариях к статье или же напрямую мн... |
04.08.2023 | Дизайн API в С++ | В этом году на C++ Russia я рассказывал про API дизайн. Эта статья — пересказ и переосмысление моего доклада.
То, что я здесь расскажу, основано на моем личном опыте — про API дизайн я думаю уже лет 15, с того момента как в 2008м начал чита... |
28.06.2023 | Подводные камни С++. Решаем загадки неопределённого поведения, ч. 1 | Изучение и понимание неопределённого поведения — важный шаг для разработчика C++, поскольку undefined behavior бывает источником серьёзных ошибок и проблем в программах. UB может проявляться в разных аспектах языка, включая операции с памят... |
23.06.2023 | 60 антипаттернов для С++ программиста, часть 9 (совет 41 — 45) | Перед вами обновлённая коллекция вредных советов для C++ программистов, которая превратилась в целую электронную книгу. Всего их 60, и каждый сопровождается пояснением, почему на самом деле ему не стоит следовать. Всё будет одновременно и в... |
19.06.2023 | 60 антипаттернов для С++ программиста, часть 7 (совет 31 — 35) | Перед вами обновлённая коллекция вредных советов для C++ программистов, которая превратилась в целую электронную книгу. Всего их 60, и каждый сопровождается пояснением, почему на самом деле ему не стоит следовать. Всё будет одновременно и в... |
16.06.2023 | 60 антипаттернов для С++ программиста, часть 6 (совет 26 — 30) | Перед вами обновлённая коллекция вредных советов для C++ программистов, которая превратилась в целую электронную книгу. Всего их 60, и каждый сопровождается пояснением, почему на самом деле ему не стоит следовать. Всё будет одновременно и в... |
13.06.2023 | 21 фича современного C++, которые вам обязательно пригодятся | Итак, судьба снова свела вас с C++, и вы поражены его возможностями с точки зрения производительности, удобства и выразительности кода. Но вот незадача: вы теряетесь в этом многообразии замечательных новых фич и, как следствие, затрудняетес... |
12.06.2023 | 60 антипаттернов для С++ программиста, часть 4 (совет 16 — 20) | Перед вами обновлённая коллекция вредных советов для C++ программистов, которая превратилась в целую электронную книгу. Всего их 60, и каждый сопровождается пояснением, почему на самом деле ему не стоит следовать. Всё будет одновременно и в... |
09.06.2023 | 60 антипаттернов для С++ программиста, часть 3 (совет 11 — 15) | Перед вами обновлённая коллекция вредных советов для C++ программистов, которая превратилась в целую электронную книгу. Всего их 60, и каждый сопровождается пояснением, почему на самом деле ему не стоит следовать. Всё будет одновременно и в... |
07.06.2023 | 60 антипаттернов для С++ программиста, часть 2 (совет 6 — 10) | Перед вами обновлённая коллекция вредных советов для C++ программистов, которая превратилась в целую электронную книгу. Всего их 60, и каждый сопровождается пояснением, почему на самом деле ему не стоит следовать. Всё будет одновременно и в... |
01.06.2023 | Три очень практичные фичи C++23 | C++23 — это текущая рабочая версия стандарта C++. На момент написания статьи туда пока не было включено ни одной крупной фичи, но ряд небольших нововведений, а также множество отчетов о дефектах уже утверждены в стандарте. Вы можете посмотр... |
24.05.2023 | На грани между exceptions и std::expected | Посмотрев на новый тип из грядущего стандарта под названием std::expected я пришел к интересному на мой взгляд мнению, что можно немного переосмыслить его суть и сделать несколько ближе к исключениям.
В данной статье хочу немного рассказать... |
22.05.2023 | Пишем на Python как на Rust | Я начал программировать на Rust несколько лет назад, и это постепенно изменило мой подход к разработке программ на других языках программирования, особенно на Python. До того, как я начал использовать Rust, я обычно писал код на Python очен... |
05.05.2023 | Реализация генераторов в языке программирования Ü | Некоторое время назад я добавил в свой язык программирования Ü такой функционал, как генераторы. В этой статье я хочу поведать, как это было сделано и зачем.
Данная статья будет полезна как интересующимся компиляторостроением, так и тем, ко... |
02.05.2023 | Красивый двоичный поиск без ветвления | Недавно я прочитал пост Алекса Мускара Beautiful Binary Search in D. В нём описывается алгоритм двоичного поиска под названием «алгоритм Шора». Я никогда не слышал о нём и его невозможно загуглить, но увидев алгоритм, я думал только об одно... |
23.03.2023 | Алгебра int о которой не говорят | Да, тайтл кликбейтный, но тема алгебраических свойств integer'а и float'а, действительно, не часто освещается в литературе и интернетах, однако эти знания углубляют понимание реализации компьютерной арифметики и применимы на практике.
Толчк... |
22.03.2023 | Ускорение компиляции КОМПАС-3D в 4 раза при помощи PCH | Рассказывает программист Александр Тулуп:
Время сборки проекта имеет немалое значение в процессе разработки. Начиная с "комфорта" разработчика при внесении изменений, заканчивая стоимостью оборудования, необходимого для организаци... |
16.03.2023 | Краткий обзор нововведений C++23: deducing this | Документ «deducing this», принятый в последний стандарт C++, вводит новый, третий тип методов классов, сочетающий в себе свойства двух уже существующих: нестатических и статических, открывающий перед нами новые горизонты:
Дедупликация больш... |
16.03.2023 | Что в DI-Контейнере твоем, С++? Пробуем написать | Доброго времени суток, жители Хабра.
Из-за наличия довольно большого опыта разработки на C# мне хотелось наличия таких же удобных DI-контейнеров на C++. Особенно после того, как побывал на нескольких плюсовых проектах, где были фабрики, син... |
07.03.2023 | Исследование нескольких проблем, обнаруженных при статическом анализе | В последнее время мы занимались статическим анализом нашей кодовой базы. В результате было выявлено несколько проблем в коде C++, которые мне пришлось исправлять. Это в очередной раз помогло мне осознать, каково совершать такие ошибки, кото... |
21.02.2023 | Эволюция архитектуры приложения Facebook для iOS | Facebook для iOS (FBiOS) — старейшая мобильная кодовая база в Meta. С тех пор как приложение было переписано в 2012 году, над ним работали тысячи инженеров, оно было отправлено миллиардам пользователей, и оно может поддерживать работу сотен... |
14.02.2023 | Эксплойтинг браузера Chrome, часть 2: знакомство с Ignition, Sparkplug и компиляцией JIT в TurboFan
Модель безопасности Chrome
Интерпретатор Ignition
Sparkplug
TurboFan
Стандартные оптимизации
Р... | В моём предыдущем посте мы впервые погрузились в мир эксплойтинга браузеров, рассмотрев несколько сложных тем, которые были необходимы для освоения фундаментальных знаний. В основном мы изучили внутреннюю работу JavaScript и V8, разобравшис... |
07.02.2023 | Тонкости C++: итак, вы объявили класс… | Во время работы наша команда постоянно сталкивается с некоторыми особенностями языка, которые могут быть неизвестны рядовому C++ программисту. В этой статье мы расскажем о том, как работает, казалось бы, обыденная вещь – forward-декларации ... |
07.02.2023 | Что может быть проще (сложнее), чем упорядочивание чисел? | Предположим, вы программист и у вас есть два числа. Вы хотите узнать, какое из чисел больше. Если оба числа имеют одинаковый тип, то почти в любом языке программирования решение будет тривиальным. Для этой операции обычно даже есть специаль... |
18.01.2023 | Подводные камни компараторов в С++ | При использовании компаратора в алгоритмах boost::sort и std::sort важно учитывать некоторые особенности работы этих алгоритмов, игнорирование которых может привести к неожиданным последствиям, в том числе к segmentation fault.
Чаще всего п... |
13.01.2023 | C++ по итогам 2022-го | Должен признать, что в некоторые из предыдущих лет C++ мог ощущаться немного «скучным» и «стабильным». Новые фичи, новый стандарт каждые три года, встречи, конференции... обычная жизнь (не считая некоторых дополнительных событий в мире, эко... |
12.01.2023 | Под капотом SAST: как инструменты анализа кода ищут дефекты безопасности | Сегодня речь о том, как SAST-решения ищут дефекты безопасности. Расскажу, как разные подходы к поиску потенциальных уязвимостей дополняют друг друга, зачем нужен каждый из них и как теория ложится на практику.
Статья написана на основе докл... |
09.01.2023 | Современные возможности C++ и проверенные паттерны: активный объект, внешний полиморфизм и корутины | Краткое содержание
В этой статье я покажу, как внешний полиморфизм (реализация полиморфного поведения вне объекта, для которого такое поведение требуется) помогает писать красивые и чистые программы, и расскажу о некоторых базовых и продвин... |
02.01.2023 | std::conditional_variable и std::atomic_flag в С++20 | Основная идея статьи - сравнить производительность std::conditional_variable и std::atomic_flag::wait из С++20, посмотреть примеры использования.
Когда встает вопрос об ожидании какого-то события/событий, то одно из первых что приходит на у... |