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

C++ *

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

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

Руководство Google по стилю в C++. Часть 5

C++ *
Перевод
Часть 1. Вступление

Часть 4. Классы
Часть 5. Функции



Эта статья является переводом части руководства Google по стилю в C++ на русский язык.
Исходная статья (fork на github), обновляемый перевод.
Читать дальше →
Всего голосов 3: ↑2 и ↓1 +1
Просмотры 2.8K
Комментарии 3

Уроки по SDL 2: Урок 10 изменение цвета и прозрачность текстуры

C++ *Разработка игр *C *
Tutorial

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

приступим к коду:

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

Уроки по SDL 2: Урок 9 — Отрисовка части изображений

C++ *Разработка игр *C *
Tutorial

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

Читать далее
Рейтинг 0
Просмотры 985
Комментарии 0

Vulkan. Руководство разработчика. Индексный буфер

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


Я продолжаю выкладывать переводы тьюториала к Vulkan на русский язык (оригинальный текст тьюториала можно найти здесь). В сегодняшней публикации представлен перевод заключительной статьи раздела Vertex buffers, которая называется Index buffer.

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

Уроки по SDL 2: Урок 8 — прозрачный фон

C++ *Разработка игр *C *
Из песочницы

Дисклеймер: почему собрался это делать - потому что нет нигде нормального обучения, для С\С++, поэтому все бросают это дело, так как невозможно разобраться, просто ужас.

Читать далее
Всего голосов 10: ↑4 и ↓6 -2
Просмотры 1.9K
Комментарии 5

Каналы на корутинах С++

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

В предыдущей статье я описал простой путь создания генераторов на корутинах С++. На мой взгляд генераторы неплохо демонстрируют работу с такими объектами как coroutine_handle и promise_type. На этот раз речь пойдет об awaitable объектах — еще одной неотъемлемой части поддержки корутин в С++. А рассматривать мы их будем на примере реализации каналов, аналогичных каналам в GoLang. Как С++ разработчик, я не в восторге от многих решений принятых в GoLang, но в их каналы влюбился с первого взгляда. Итак, приступим!

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

MISRA C: борьба за качество и безопасность кода

Блог компании PVS-Studio C++ *IT-стандарты *C *Программирование микроконтроллеров *

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


0866_MISRA_C_ru/image1.png

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

Асинхронность в С++20. Доклад в Яндексе

Блог компании Яндекс Программирование *Совершенный код *C++ *Компиляторы *
Привет, это Григорий Демченко из WhatsApp. Мой доклад посвящён использованию сопрограмм в C++20. Я не стал говорить про низкоуровневые примитивы и то, как компилятор поддерживает сопрограммы и преобразовывает соответствующий код. Вместо этого акцент сделан на практическом применении сопрограмм для решения конкретных задач высокопроизводительных масштабируемых систем. Это именно то, ради чего создавались сопрограммы в новом стандарте, и то, с чем разработчик будет иметь дело в процессе проектирования и программирования. Я постарался рассмотреть конкретные примеры и проблемы, с которыми можно столкнуться при использовании полностью асинхронного подхода.

— О чём я сегодня расскажу? Первое — введение в асинхронность. Далее мы рассмотрим примитивы, которые можно использовать в новом стандарте, и интеграцию с планировщиками. Также немаловажным аспектом будет являться работа со старым кодом, если мы пишем новый код с использованием нового подхода. Затем я покажу бонус, достаточно интересный и необычный. И подведём итоги того, что у нас получилось.
Читать дальше →
Всего голосов 28: ↑27 и ↓1 +26
Просмотры 5K
Комментарии 6

Vulkan. Руководство разработчика. Загрузка данных через промежуточный буфер

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


Всем привет! Для тех, кто со мной не знаком, я переводчик в IT-компании CG Tribe в Ижевске. Здесь я делюсь переводами Vulkan Tutorial на русский язык.

Сегодняшняя публикация посвящена переводу статьи из раздела Vertex buffers, которая называется Staging buffer.

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

Оптимизированный доступ к GPIO. Или GPIO как constexpr класс. С++

C++ *

Добрый день, жители Хабра. Данный пост будет посвящен программированию на C++, и использованию constexpr объектов с целью повышения уровня удобства и одновременно оптимизации кода с точки зрения размера и производительности.

В процессе работы над одним из проектов, задумался: "нельзя ли сделать удобный доступ к GPIO портам на STM32, и при этом сделать его оптимальным по размеру кода и производительности". Что я хотел получить...

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

Введение в программирование: заготовка игры-платформера на SDL в 300 строк C++

Программирование *C++ *Разработка игр *
Tutorial

Этот текст предназначен для тех, кто только осваивает программирование. Я читаю лекции по C++ на первом курсе местного университета, и в качестве практикума предлагаю запрограммировать любую игру (не выношу проектов типа "софт бронирования книг в местной библиотеке"). Соответственно, чтобы помочь начинающим, я сделал некоторое количество заготовок, с которых можно стартовать свой проект. Например, заготовку олдскульного 3д шутера в 486 строк C++ я уже описывал, а вот тут можно посмотреть, что из неё сделали первокурсники.


В этот раз всё будет ещё проще, я хочу сделать заготовку под простейший платформер, вот так выглядит результат:



На данный момент проект содержит менее трёхсот строчек цпп:


ssloy@khronos:~/sdl2-demo/src$ cat *.cpp *.h | wc -l
296

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


Итак, поехали!

Читать дальше →
Всего голосов 58: ↑57 и ↓1 +56
Просмотры 12K
Комментарии 124

Работа с очень длинными числами на C++

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

Недавно я решил написать свою собственную реализацию длинной арифметики для C++. Делал просто для себя, ибо эта тема мне кажется довольно интересной. Поставил перед собой следующие задачи:

Читать далее
Всего голосов 38: ↑30 и ↓8 +22
Просмотры 11K
Комментарии 67

Разминка мозгов: свой массив на c++ без malloc

Ненормальное программирование *C++ *
Из песочницы
Пришла мне в голову интересная задачка: реализовать свой массив на c++.

Массивы — это одна из базовых структур, трудно себе представить сколько-нибудь сложную программу без них. Но что если попробовать реализовать массив самому? В голову сразу приходит список: будем в каждом элементе массива хранить указатель на следующий и хранить эти элементы в динамически выделяемой памяти на куче.

Слишком просто. Давайте обойдемся без кучи. Никаких malloc и new. Можно ли тогда сделать массив?
Да, можно ли?
Всего голосов 26: ↑10 и ↓16 -6
Просмотры 5.9K
Комментарии 27

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

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

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

Читать далее
Всего голосов 18: ↑15 и ↓3 +12
Просмотры 5.5K
Комментарии 7

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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