Как стать автором
Обновить
156.28
Рейтинг

C++ *

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

Сначала показывать
  • Новые
  • Лучшие
Порог рейтинга
  • Все
  • ≥0
  • ≥10
  • ≥25
  • ≥50
  • ≥100

Генераторы на корутинах C++

Блог компании ISPsystem Программирование *C++ *
Tutorial

Я уже пару лет как развлекаюсь написанием различных программ на C++ с использованием корутин. Но до сего момента это были асинхронные приложения. Я активно использовал co_await, но ни разу еще мне не понадобился co_yield. И вот, после трех дней вынужденного ничегонеделанья в больнице, я решил этот пробел восполнить и попробовать написать собственный генератор. А заодно и получше разобраться с promise_type и coroutine_handle

Читать далее
Всего голосов 11: ↑9 и ↓2 +7
Просмотры 1.9K
Комментарии 2

От копии аркады 90-х на отдельном носителе до полноценной компьютерной игры со своим геймпадом

Блог компании Питерская Вышка C++ *Разработка игр *Программирование микроконтроллеров *Разработка под Arduino *

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

Наверняка в фильмах или сериалах, а может быть даже на собственном опыте, вы сталкивались с игровыми автоматами. Мы тоже, и однажды у нас появилась идея создать современную версию игры, похожую на всеми любимую космическую аркаду Blasteroids. А чтобы вдвойне воплотить наш замысел в жизнь, мы сделали два режима управления игрой, один из которых — с помощью Ардуино, играющего роль маленького переносного геймпада, а другой — с помощью клавиатуры.

Читать далее
Всего голосов 5: ↑4 и ↓1 +3
Просмотры 1.1K
Комментарии 0

Как я писал Биномиальную кучу

Программирование *C++ *Алгоритмы *
Из песочницы

Я сейчас изучаю продвинутые структуры данных и в один прекрасный вечер я решил собирать алгоритмы и структуры данных к себе на гитхаб (и до сих пор это делаю). Захотел я сделать так, чтобы сделать всё шаблонным, если что-то мне резко понадобится, то я смог за считанные секунды добавить себе шаблонный класс структуры данных или шаблонную функцию алгоритма и использовать. Звучит замечательно, особенно на контесты с codeforces.

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

Читать далее
Всего голосов 2: ↑1 и ↓1 0
Просмотры 808
Комментарии 2

Пакетный обмен данными по UART

Программирование *C++ *C *Программирование микроконтроллеров *Разработка под Arduino *
Из песочницы

На сегодняшний день существует много способов организовать обмен данными между Desktop-приложением и устройствами на микроконтроллерах: Wi-Fi, Bluetooth, RF, USB, преобразователи интерфейсов и т.д.

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

В случае использования интерфейсов RS-232, RS-485, RS-422 или чистого UART организация пакетного обмена данными ложится на программиста.

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

Читать далее
Всего голосов 5: ↑2 и ↓3 -1
Просмотры 2.6K
Комментарии 23

Как я портировал DOS игру

C++ *Assembler *C *Реверс-инжиниринг *
Tutorial

Решил портировать одну старую давно забытую игрушку с DOS на современную платформу. Эта игра, в своё время, привлекала ураганным геймплеем, неплохой разрушаемостью, возможностью включить всё оружие одновременно и устроить настоящий бедлам. В 2021 году играть в такое всё ещё интересно, но делать это в родном разрешении 640х480, как-то не очень. Поэтому решил портировать игру и накатить хай-рез патч. Получилось!

Читать далее
Всего голосов 208: ↑208 и ↓0 +208
Просмотры 20K
Комментарии 34

Любопытные извращения из мира IT, или зачем мы JS в C++-код вкомпилили

Ненормальное программирование *JavaScript *Программирование *C++ *Браузеры

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

Мы занимались разработкой... скажем так, системы отображения интерактивного контента для рынка одной азиатской страны. Пользователь имел "умное устройство", например, ТВ-приставку или смарт-телевизор, а "интерактивный контент" представлял собой по сути дела html/js/css-приложение, которое прилетало на устройство с трансляции или из интернета и отображалось в прозрачном окне поверх видео. В качестве веб-движка использовался модифицированный Blink из гугловского Chrome.

И вот, в один прекрасный день после какого-то из обновлений, один наш партнер (читай "поставщик контента") обратился к нам с проблемой: что-то не работает.

Читать далее
Всего голосов 35: ↑35 и ↓0 +35
Просмотры 9.3K
Комментарии 20

Создание статической библиотеки на С++ для работы с большими числами

Блог компании RUVDS.com C++ *Visual Studio *
Tutorial

Я всегда слышал, что с библиотеками в С++ что-то не так, как и с ограничением максимального целочисленного значения, да и вообще то, что язык сложный и непонятный. Что же, сегодня, мы начнём писать собственную библиотеку больших чисел, полностью своими руками c 0, и узнаем, так ли страшен С++, как его малюют?

Если вы не разбираетесь в С++, не переживайте, эта статья имеет нулевой порог вхождения. Мы начнём с лёгкого, но вы даже не заметите, как начнёте разбираться в более сложных и непонятных, на первый взгляд, вещах. Главное, писать код логично. Думаю, данная статья будет интересна не только начинающим, ведь я постарался затронуть достаточно много тем. (для старожилов: моя цель не сделать оптимизирование или быстрее, а показать, что С++ не такой уж и сложный язык программирования. И да, я знаю, что существуют другие библиотеки, которые делают это быстрее и лучше. И да, было бы круче, если бы мы использовали булевую алгебру. И да, С++ про вечную оптимизацию, но это статья не про это. Спасибо.)

За сегодня мы узнаем, что такое: Перегрузка функций/конструкторов, прототипы функций, обработка исключений, пространство имён, псевдонимы типов, заголовок.h, как пользоваться отладчиком и как писать продвинутые/красивые комментарии. Пристёгивайтесь, будет безумно интересно.
Читать дальше →
Всего голосов 48: ↑35 и ↓13 +22
Просмотры 5.2K
Комментарии 51

Все «тайны» настройки софта для модулей и периферии OpenCPN

Настройка Linux *C++ *Интерфейсы *Промышленное программирование *Будущее здесь
Tutorial

После публикации статьи Использование OpenCPN для автоматизации производства / Хабр (habr.com) в личной почте были вопросы по настройке программного обеспечения на собранном устройстве.

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

Цитаты кода на C++ под wxWidget также будут приведены.

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Просмотры 418
Комментарии 2

Зачем С++ в Такси? Доклад Яндекса

Блог компании Яндекс Высокая производительность *Анализ и проектирование систем *C++ *Проектирование и рефакторинг *
Бэкенд первой версии Яндекс.Такси, которая вышла в 2011 году, был написан на Python. Мы довольно долго не меняли основной язык, но постепенно пришли к идее о необходимости С++ в стеке технологий. Перед вами доклад о том, что мы переписали в первую очередь и почему, а также о трюках С++, которые помогают нам справляться с ростом.

— Добрый день. Меня зовут Александр Голубев, и сегодня я вам расскажу, зачем C++ появился в Такси.
Читать дальше →
Всего голосов 25: ↑22 и ↓3 +19
Просмотры 7K
Комментарии 16

3D Graphics Rendering Cookbook

Программирование *C++ *Работа с 3D-графикой *Разработка игр *

В августе этого года, после полутора лет напряженной работы, наконец-то вышла наша третья книга (про первую и вторую уже были посты на Хабре) ориентированная на разработку игр: 3D Graphics Rendering Cookbook: A comprehensive guide to exploring rendering algorithms in modern OpenGL and Vulkan.


Читать дальше →
Всего голосов 15: ↑15 и ↓0 +15
Просмотры 2.5K
Комментарии 8

5 любопытных примеров лямбд в C++: рекурсия, constexpr, контейнеры и многое другое

Блог компании OTUS Программирование *C++ *
Перевод

Пожалуйста, посмотрите мою небольшую статью в блоге, где я покажу вам несколько интересных примеров лямбд. Знаете ли вы, как написать рекурсивную лямбду? Хранить их в контейнере? Или вызывать во время компиляции?

Смотрите в статье.

Читать далее
Всего голосов 12: ↑10 и ↓2 +8
Просмотры 4.7K
Комментарии 13

Микроконтроллер + компьютер + своё программное обеспечение

C++ *Интерфейсы *Программирование микроконтроллеров *Гаджеты DIY или Сделай сам
Из песочницы
Tutorial

Своё устройство на микроконтроллере я начал "пилить" еще в начале 2019-го. Тогда я даже не думал, что захочу связать его с компьютером, но устройство постоянно эволюционирует, и вот настала пора. Причём нужно не просто связать, а написать своё фирменное ПО, которое будет управлять устройством через USB. С подобной задачей я столкнулся впервые, а беглый поиск в сети выдал такие результаты, после которых появилось ещё больше вопросов и каша в голове.

Читать далее
Всего голосов 19: ↑13 и ↓6 +7
Просмотры 8.3K
Комментарии 30

Зачем нужен отчёт MISRA Compliance и как его получить в PVS-Studio?

Блог компании PVS-Studio Информационная безопасность *C++ *C *Программирование микроконтроллеров *

Если вы не понаслышке знаете о MISRA и хотели бы понимать, соответствует ли ваш проект какому-то из стандартов ассоциации MISRA, то есть решение. Имя ему - MISRA Compliance. С недавних пор PVS-Studio научился генерировать отчёт соответствия по этому стандарту, и хочется поделиться тем, как это делается. Возможно, кому-то это упростит жизнь.

Читать далее
Всего голосов 8: ↑6 и ↓2 +4
Просмотры 1.2K
Комментарии 2

Создаем новое ключевое слово в C++

C++ *Компиляторы *
Tutorial

C++ - один из языков, который можно назвать "легендарным". Его история насчитывает несколько десятилетий, принципы программирования на нем революционным образом менялись не раз, а черновик стандарта уже разросся до 1800+ страниц мелкого шрифта.

На C++ есть много хороших библиотек. Но нередко изменения в самом языке делали неактуальными большие куски кода, потому что они становились менее надёжными и быстрыми по сравнению с функционалом в самом языке. Правки в стандарт имеют несоизмеримо более сильное влияние, чем любая библиотека.

В этой статье мы в учебных целях напишем для C++ поддержку нового ключевого слова defer, которое будет работать во многом аналогично такому в языках Go и Swift. Это будет сделано через правку исходного кода Clang.

Создать!
Всего голосов 88: ↑86 и ↓2 +84
Просмотры 17K
Комментарии 43

Сеттер или геттер-ссылка — как сделать правильный выбор?

Блог компании OTUS Программирование *C++ *
Перевод

Когда вы создаете класс, вам часто приходится реализовывать методы доступа к одному или нескольким атрибутам этого класса для того, чтобы можно было редактировать их.

Читать далее
Всего голосов 12: ↑7 и ↓5 +2
Просмотры 2.1K
Комментарии 6

C++ — это замечательно, и вот почему

Блог компании OTUS Программирование *C++ *
Перевод

C++ — один из самых непонятных языков в современной поп-культуре разработчиков программного обеспечения. Люди часто сравнивают его с C, потому что это "низкоуровневый" язык. Следовательно, он получил репутацию эзотерического языка, который интересует только параноиков производительности. Это далеко не так. Я программирую на C++ в качестве основного языка уже некоторое время, и опыт разработчика на самом деле очень хорош — гораздо лучше, чем можно было себе представить.

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

Читать далее
Всего голосов 45: ↑25 и ↓20 +5
Просмотры 19K
Комментарии 104

C++20 в 2020: Модули

Блог компании OTUS Программирование *C++ *
Перевод

Разработка C++20 идет полным ходом, и это принесет немало новых возможностей. У нас есть библиотека ranges, корутины, концепции и новая библиотека форматирования строк. Но, возможно, самой большой потенциальной возможностью повлиять на структуру и архитектуру нашего кода являются модули.

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

Немного истории

Язык C++ был создан на основе языка C, и поэтому он унаследовал от него многие особенности — прежде всего, препроцессор и концепцию разделения заголовочных и исходных файлов. Директивы препроцессора — это набор инструкций, которые выполняются компилятором в каждой единице трансляции перед началом компиляции. Вы можете определить их, потому что любая строка кода, начинающаяся с символа #, является таковой.

Модули C++ — это попытка уменьшить потребность в одной конкретной директиве препроцессора, #include. #include позволяет нам разделить исходный код на логические части — в частности, интерфейс (обычно расположенный в файле ".h" или "header") и реализацию (обычно расположенную в файле ".cpp" или "source"). Разделение на заголовочный и исходный файлы дает огромное количество преимуществ, включая:

Читать далее
Всего голосов 15: ↑13 и ↓2 +11
Просмотры 6.2K
Комментарии 4

e-Legion рекомендует: интересные IT события этой осени

Блог компании e-Legion C++ *DevOps *IT-компании

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

Прочь осеннюю хандру! Для поднятия морального духа и для увеличения вовлеченности в IT-просвещение мы собрали подборку интересных  IT-ивентов приближающейся осени 2021.

Читать далее
Всего голосов 4: ↑4 и ↓0 +4
Просмотры 830
Комментарии 0

Красивое дерево PATRICIA (Реализация на C++)

C++ *Визуализация данных Хранение данных *Хранилища данных *Учебный процесс в IT
Из песочницы
Tutorial

Забытое, сложное, изумительное, красивое дерево со звуком ломающихся коленок.

Прострелить колени о патрицию
Всего голосов 16: ↑16 и ↓0 +16
Просмотры 4.4K
Комментарии 7

Использование STL для обработки сигналов в реальном времени. Доклад в Яндексе

Блог компании Яндекс Высокая производительность *C++ *Звук
Компьютерные игры, обработка аудиосигналов в режиме реального времени и другие подобные приложения низкой задержки требуют, чтобы код был не только корректным. Он также должен исчислять требуемый результат надёжно за детерминированный срок выполнения. В этом докладе head of technology в компании Cradle Тимур Думлер timuraudio рассмотрел, в какой степени стоит использовать стандартную библиотеку С++ для создания приложений с подобными «real-time» ограничениями. Какие инструменты из стандартной библиотеки можно применять с уверенностью, что они не будут блокировать поток, ждать освобождения мьютекса, не будут выделять или освобождать память и совершать другие действия с недетерминированной задержкой? Каких средств из набора стандартной библиотеки следует избегать и почему? По пути Тимур обсудил малоизвестные и неожиданные аспекты этих привычных инструментов.

— Всем привет, меня зовут Тимур Думлер. Хочу сказать, что я обычно делаю доклады на английском языке. Это всего второй раз в жизни, когда я докладываю на русском, мне это немножко непривычно. Спасибо большое, что подключились, сегодня мы поговорим про использование стандартной библиотеки C++ для обработки сигналов в real-time.
Читать дальше →
Всего голосов 10: ↑9 и ↓1 +8
Просмотры 3.3K
Комментарии 2

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