Рубрика «c++» - 28

На современных 64-битных PC-архитектурах использование C++-исключений означает всего лишь добавление к функциям недостижимого кода с вызовами деструктора и ухудшение производительность менее чем на 1%. Такие небольшие ухудшения производительности сложно даже измерить. Обработка редких ошибок с использованием возвращаемых значений требует дополнительных операций ветвления, которые, в реалистичных сценариях, замедляют программы примерно на 5%. Такой подход, кроме того, менее удобен, чем использование исключений. Если выбрасывается исключение, то на «раскрутку» каждого кадра стека тратится примерно 2 мкс.

Коды ошибок — это гораздо медленнее, чем исключения - 1

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

«Чертовски глупое решение»: история появления языка C - 1

Как ни сложно в это поверить, C не родился в виде истрёпанного руководства в бумажной обложке.

В том или ином виде, язык C повлиял на формирование практически каждого языка программирования, разработанного с 1980-х. Некоторые языки наподобие C++, C# и Objective C должны были стать прямыми наследниками C, а другие просто переняли и адаптировали его синтаксис. Программист, перешедший с Java, PHP, Ruby, Python или Perl, почти не испытает сложностей с пониманием простых программ на C, и в этом смысле C можно воспринимать как lingua franca программистов.

Однако C не возник из ниоткуда как единый монолит программирования. История C начинается в Англии, с коллеги Алана Тьюринга и программы, игравшей в шашки.
Читать полностью »

Разработка симулятора космического корабля Союз ТМА - 1

Читать полностью »

Язык программирования C даже сегодня находится в списке наиболее популярных используемых языков, несмотря на то, что он был выпущен аж в 1972 году и по современным стандартам имеет довольно много ограничений и изъянов.

Нужна ли нам замена языка C? - 1
Популярность языков программирования в 2020 по индексу TIOBE

И это основная причина, по которой C нужно заменить. На C/C++ написано слишком много критически важного ПО, что имеет обширные последствия. Один из примеров — баги в библиотеках наподобие OpenSSL. Язык C печально известен возникновением таких проблем, как переполнения буфера. C — это язык, позволяющий выстрелить себе в ногу слишком большим количеством способов.
Читать полностью »

С++23: международный стандарт на удалёнке - 1

C++20 прошёл все бюрократические инстанции и теперь официально готов! Международный комитет переехал в онлайн, и теперь мы вовсю работаем над C++23. Под катом вас ждут:

  • std::stacktrace,
  • z и uz,
  • 61 с половиной багфикс в ядре языка,
  • string::contains,
  • Executors & Networking,
  • и прочие новости.

Читать полностью »

Небольшая плата ESP32 с дисплеем. Идея была сделать аналог референсного esp32-lyrat но в меньших размерах. На плате разведен дисплей ES8388 ADC-DAC, вывод на стерео наушники и внешний усилитель моно, а также микрофон, кнопки и джойстик

ESP32 Custom Board Mini - 1

Элементная база

8 MB Flash / 8 MB PSRAM
ST7789 Display
ES8388 ADC-DAC / PAM8302
SDCARD
CP2102
Читать полностью »

Я переводчик в компании CG Tribe в Ижевске, и я продолжаю выкладывать перевод руководства к Vulkan API. Ссылка на источник — vulkan-tutorial.com.

Эта публикация посвящена переводу раздела Drawing a triangle, а именно подразделу Setup, главам Base code и Instance.

Содержание

1. Вступление

2. Краткий обзор

3. Настройка окружения

4. Рисуем треугольник

  1. Подготовка к работе
  2. Отображение на экране
  3. Основы графического конвейера (pipeline)
  4. Отрисовка
  5. Повторное создание цепочки показа

5. Буферы вершин

  1. Описание
  2. Создание буфера вершин
  3. Staging буфер
  4. Буфер индексов

6. Uniform-буферы

  1. Дескриптор layout и буфера
  2. Дескриптор пула и sets

7. Текстурирование

  1. Изображения
  2. Image view и image sampler
  3. Комбинированный image sampler

8. Буфер глубины

9. Загрузка моделей

10. Создание мип-карт

11. Multisampling

FAQ

Политика конфиденциальности

Базовый код

Общая структура

В предыдущей главе мы рассказали, как создать проект для Vulkan, правильно его настроить и протестировать с помощью фрагмента кода. В этой главе мы начнем с самых азов.
Читать полностью »

Компиляция C-C++ на Apple M1 - 1

Заинтригованный впечатляющими бенчмарками M1, я достал последний Mac Mini, чтобы замерить скорость компиляции на C/C++.

Измеряем локальный build2 (без репозитория пакетов), который включает преимущественно код на C++ (611 единиц трансляции) с некоторыми блоками на C (29) и связками между ними (19). Такой бенчмарк требует только компилятора C++ и входит в тестовый набор Phoronix, поэтому можно сравниться с большим количеством процессоров.

Бенчмарк Phoronix в настоящее время использует build2 0.12.0, у нас 0.13.0 (текущий релиз), здесь сборка выполняется примерно на 10% медленнее.

Читать полностью »

Как SpaceX пишет софт - 1
Даглас Хёрли и Боб Бенкен в капсуле «Индевор»

Компания SpaceX ведёт стремительную разработку проектов сразу по нескольким направлениям. Первая ступень ракеты Falcon 9 после запуска полезной нагрузки в космос возвращается на Землю для повторного использования, подобное тестируют для прототипов Starship. На МКС корабль Crew Dragon доставляет экипаж, готовится второе поколение грузовиков Dragon. Рой спутников связи Starlink выдаёт больше сотни мегабит в секунду для реальных пользователей открытого бета-теста.

Все эти проекты требуют высокой степени автоматизации, за которую отвечает команда разработки программного обеспечения. Про неё специалисты SpaceX рассказывают с удовольствием: это не только важно для привлечения соискателей на открытые вакансии, но и интересно для всех остальных.
Читать полностью »

Работа с файлами в C++ с использованием Boost - 1UPD: добавил в конец поста бонус для читателей Хабра.

Привет! Я время от времени рассказываю на Хабре о решениях распространённых задач на C++ и вообще люблю делиться опытом. Поэтому даже написал целую книгу, которая называется «Разработка приложений на С++ с использованием Boost». Она может быть интересна разработчикам, которые уже немного знакомы со стандартной библиотекой языка, хотят глубже изучить Boost, упростить и повысить качество разработки приложений. Уверен, что информация, которую я собрал в книге, будет полезна — всё больше библиотек Boost становятся частью стандарта. Сегодня предлагаю прочитать главу, посвящённую работе с файлами. В ней я рассказываю о перечислении файлов в каталоге, стирании и создании файлов и каталогов, а также о самом быстром способе чтения. Надеюсь, будет интересно. И, пожалуйста, не забывайте делиться впечатлениями в комментариях.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js