Обновить
256K+

C++ *

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

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

Проверка Chromium спустя три года. Ну и как оно?

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

Стряхиваем пыль с нашего нерегулярного цикла статей о проверке проекта Chromium. Посмотрим, как обстоят дела с качеством кода в свежем релизе популярнейшего браузера-конструктора, а заодно проверим в деле новейшие функции анализатора PVS-Studio.


chromium_N7_ru/image2.png

Читать дальше →

Статья для тех, кто как и я не понимает, зачем нужен std::common_type

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

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


common_type_ru/image1.png

Читать дальше →

Осваиваем кросс-компиляцию с помощью Clang и LLVM

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

Каждый, кто когда-либо пробовал собрать программу на C/C++ через кросс-компиляцию знает, насколько болезненным может быть этот процесс. Главными причинами столь печального положения вещей являются недружелюбность систем сборки при конфигурации кросс-компиляции, а также запутанность процесса настройки набора утилит (тулчейна).


Одним из основных виновников этих проблем, по моему опыту, является тулчейн GNU — древний мамонт, на котором много десятилетий строится весь мир POSIX. Подобно многим компиляторам былых времён, семейство GCC и binutils никогда не ориентировалось на поддержку множества различных целей сборки в одной установке, и единственным способом хоть как-то добиться желаемого была настройка полной кросс-билд-системы для каждой целевой платформы на каждом хосте.

Читать дальше →

Язык программирования C++: Как он незаметно стал основой всего, и его ближайшее будущее

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

Мощный, гибкий, сложный: история C++ началась еще 40 лет назад, и по сей день он остается одним из наиболее широко используемых языков программирования. TechRepublic в беседе с создателем C++ Бьерном Страуструпом попытался выяснить, в чем его особенность.

Читать далее

«Магнитофон» для ZX Spectrum на базе Arduino

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

Есть у меня аналог Спекки — персональный компьютер «Мастер». Он прошел несколько модернизаций, так что сейчас работает от обычного USB и с любым телевизором по SCART. Но вот с загрузкой программ есть небольшие сложности: магнитофона у меня уже нет, ноут для этих целей разворачивать лениво, а удобного софта для телефонов не нашел. В общем, хочется чего-то серьезного. На века. Залить всю библиотеку софта и игр, положить на полочку и не бояться, что лет через 10 это дело протухнет.

На просторах интернета ходит такой проект как TZXDuino. В этой статье я расскажу о моих модификациях в нем и итоговом результате.

Читать далее

Вызов виртуальных функций в конструкторах и деструкторах (C++)

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

Вызов виртуальных функций в конструкторах (C++)
В разных языках программирования поведение виртуальных функций отличается, когда речь заходит о конструкторах и деструкторах. Неправильное использование виртуальных функций – это классическая ошибка при разработке на языке С++, которую мы разберём в этой статье.

Читать дальше →

Cи в роли промежуточного языка

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

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

Slate UI Framework (UE4/5) — standalone application

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

Slate is written entirely in C++ and runs on all Unreal Engine 4 supported platforms. It is render interface agnostic, which allows it to be used in standalone desktop and mobile applications that do not depend on the game engine.

Gerke Max Preussner о Slate UI Framework

Последние 6 лет я много работаю с Unreal Engine 4. Вернее не с самим движком, а с его различными модулями, с помощью которых мы выстраиваем свою базу тулов и различных технических решений вокруг основного игрового проекта. Несмотря на зоопарк различных технологий, который образовался вначале, со временем наша собственная экосистема постепенно начала стандартизироваться. Всё больше ребят начали писать более качественные расширения для Unreal Editor именно на Slate UI Framework. Конечно, когда нужно сделать UI для функциональности, которую можно "впихнуть" в одну кнопку, проще реализовать это на UMG в Editor Utility widget. Но если нужно что-то посложней, например, нужна асинхронность в процессе выполнения или, например, необходимо рисовать на UI TreeView (деревья), то тут без обращения к Slate модулю - не обойтись. Так же для многих UI тулов рано или поздно встаёт вопрос о возможности их самостоятельного существования, в отвязке от конкретного проекта, а в идеале - без привязки к Unreal Editor. Про сборку Stand Alone приложения, с UI от редактора UE4/5, я и хочу вам рассказать.

Читать далее

Модные видео гличи на C++

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

В этой статье рассказывается о способах создания видео фильтров на C++ для разных программ, а так же тут рекламируется моя опенсорс программа SEZE II с интересными эффектами на подобии пиксельной сортировки, эмулятора аналогового ТВ, случайного 3-битного дизеринга и прочим

Читать далее

Advent of Code с нами уже 7 лет

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

Приближается декабрь, а значит и ежегодный праздник программирования - Advent Of Code. Для тех кто устал перекладывать JSON-ы и шлепать формы.

Читать далее

Приложение для аудиозвонков с регулировкой звука, как в реальной жизни

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

Распространенная в пандемию ситуация: общаетесь с друзьями или коллегами по Zoom, несколько человек начинают говорить одновременно и… разобрать хоть что-то не представляется возможным. Эта проблема натолкнула нас на идею написать свое приложение для аудиозвонков, где громкость регулируется весьма необычным образом. У каждого пользователя есть свой аватар — кружок на плоскости, который управляется перетаскиванием. Чем ближе аватары пользователей на экране, тем громче они друг друга слышат. Работает ли это? В целом да. Рассказываем, что у нас получилось.

Читать далее

Спасибо, Марио, но код стоит поправить – проверка TheXTech

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

Здорово, когда энтузиастам-разработчикам удаётся сделать работающий клон известной игры. Ещё лучше, когда находятся люди, готовые продолжить развитие таких проектов! В этой статье с помощью PVS-Studio мы проверим TheXTech – открытую реализацию игры по вселенной Super Mario.


0889_TheXTech_ru/image1.png

Читать дальше →

Базовые концепции аллокаторов

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

Находясь в поисках какой-то агрегированной информации о стандартных приёмах, используемых при проектировании кастомных аллокаторов, я обнаружил, что существует достаточное количество статей о том, как аллокаторы работают в C++, каких-то базовых вариантах или наоборот очень специфических версиях, но ничего достаточно общего. Попался только замечательный доклад замечательного Андрея Александреску про неправильную архитектуру std::allocator и собственно базовые концепции построения своего нового самого крутого в мире аллокатора. Эта статья является довольно вольным переводом второй части его выступления с моими небольшими дополнениями. Конечно же, категорически рекомендую посмотреть оригинальный доклад, но, если вы любитель текстовых версий, прошу под кат.

Выделить знания...

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

Прокачка статического анализа проектов на Unreal Engine 4 и проверка автосимулятора Carla

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

Одним из механизмов статического анализа является аннотирование методов популярных библиотек. Аннотации позволяют обладать большей информацией при диагностировании ошибок в коде. Впечатляющий свободный проект на С++ CARLA помог нам внедрить этот механизм. Впоследствии симулятор стал целью для проверки улучшенным статанализатором PVS-Studio.


0888_Carla/image2.png

Читать дальше →

Проверяем эмулятор RPCS3 с помощью PVS-Studio

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

RPCS3 – интересный проект, который эмулирует консоль PS3. Он активно развивается: недавно была новость о том, что он научился запускать все игры из своего каталога. Это хороший повод для проверки – посмотрим, какие ошибки остались после исправлений.


0886_rpcs3_ru/image1.png

Читать дальше →

Десктопный клиент для Apache Kafka, преобразуем protobuf в json

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

Продолжаю делать пилить свой petproject. Что нового с прошлой публикацией: запись; сообщений в кафку; создание/удаление топиков; бинарные сборки для OSX и Windows.

Сейчас подошел к тому ради чего все это затевалось: декодирование protobuf без schema registry и кодогенерации и всё это на C++.

Читать далее

Гайдлайны и бритвы компании Bungie по кодингу на C++

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

Для создания игры наподобие Destiny требуется много командной работы и мастерства. У нас есть талантливые люди во всех областях знаний, однако было непросто достичь уровня координации, необходимого для создания игры масштаба Destiny.

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

В сфере разработки одним из способов достижения согласованности являются инструкции (гайдлайны) по кодингу: правила, которые соблюдают наши инженеры, чтобы обеспечивать возможность поддержки кодовой базы. Сегодня я расскажу о том, как мы определились с тем, какие гайдлайны нам нужны и как они помогают в решении проблем, с которыми сталкивается крупная студия.

В этой статье мы делаем упор на разработке игр и языке программирования C++, но даже если вы не знаете C++ и не работаете инженером, она всё равно будет для вас интересной.
Читать дальше →

Vulkan. Руководство разработчика. Текстурирование

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


Привет! Я перевожу руководство Vulkan Tutorial на русский язык и выкладываю переводы на Хабр. Оригинал руководства можно найти здесь.

Сегодня я перехожу к новому разделу Текстурирование (Texture mapping). Первая глава раздела, переводом которой я собираюсь с вами поделиться, называется Images.

Содержание
Читать дальше →

CoroOS: концепт операционной системы для микроконтролеров на корутинах С++20

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

Здравствуйте! Меня зовут Александр, и я работаю программистом микроконтроллеров.

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

И ваш автор не исключение.

Как по мне - дело не то чтобы запредельно сложное, сколько кропотливое. Если у вас, как и у меня, увлечение и(или) карьера крутится вокруг Arm Cortex-M серии, то вооружаемся стволами (раз, два и три) и выдвигаемся за Джеффом. Но, написав и запустив ядро своей "best of the best" оси около года назад, я вскоре забросил разработку, ибо как я ни креативил, вместо Сокола Тысячелетия у меня получался крепенький, но банальный и скучный велосипед.

А ведь хотелось оригинальности и бесстыдного выпендрёжа.

И тут в 20-й стандарт плюсов завезли корутины.

Читать далее

Просто о сложном — move в языке C++

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

Здравствуйте уважаемые читатели. Данная публикация адресована начинающим разработчикам С++ которые только становятся на путь высокой производительности и "отстрелянных конечностей". Опытные разработчики найдут здесь скорее повторение тех вещей, которые сами мучительно осваивали в те далекие времена, когда в языке С++ появилась возможность удобного перемещения объектов.

Многие из вас уже слышали и надеюсь использовали функцию move() в своих проектах. Если нет, то пришло время с ней познакомиться.

Вопрос: Опять этот move, сколько уже можно? Есть же множество опубликованного материала по этой теме?

Ответ: Да, есть много статей. В свое время учился по ним, в том числе и тут, на Хабре [1, 2]. Но мне все равно было не понятно, значит, учитывая статистику, непонятно также и некоторому количеству читателей.

Как обычно начинаются туториалы по move? Рассмотрим lvalue объект, ему соответствует rvalue объект, между ними есть оператор присваивания (=). Тут появляются ссылки, да не просто, а ссылки на lvalue, на rvalue и пошло-поехало. Мозг перегружается, статья пролистывается до конца. Поэтому попробую рассказать о move c другой стороны - в стиле "от практики к теории" - так, как хотел бы чтобы мне рассказали.

Читать далее