Как стать автором
Обновить
74.8

C++ *

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

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

Из серии: заглянем под капот clang-e2k/llvm-e2k из штатного дистрибутива для Эльбруса

Время на прочтение 12 мин
Количество просмотров 542
Программирование *C++ *Компиляторы *C *Процессоры
Из песочницы

Тема непосредственно самого процессора Эльбрус уже достаточно хорошо раскрыта в различных статьях, в том числе, в статьях, опубликованных на habr.ru. Кроме самого процессора Эльбрус время от времени на просторах рунета можно встретить обсуждения, посвященные вопросу портирования компилятора clang/llvm на Эльбрус. Пожалуй, данная тема еще не получала подробного освещения. Данная заметка призвана заполнить этот «пробел».

Если вкратце, то llvm из e2k-дистрибутива портируется на базе оптимизирующего компилятора LCC. Ну а тем, кому нужно больше подробностей, то добро пожаловать «под кат».

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

Новости

Три очень практичные фичи C++23

Время на прочтение 5 мин
Количество просмотров 2.5K
Блог компании OTUS C++ *
Перевод

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

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

MIDI chiptune + envelope

Уровень сложности Средний
Время на прочтение 18 мин
Количество просмотров 957
C++ *Разработка под Arduino *DIY или Сделай сам Звук Электроника для начинающих

Продолжаем добавлять функциональность к музыкальному MIDI-синтезатору на двух чипах AY-3-8910 с помощью генератора огибающей.

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

Что нам не нравится в C++

Время на прочтение 6 мин
Количество просмотров 4K
Блог компании OTUS C++ *
Перевод

Результаты ежегодного опроса Annual C++ Developer Survey "Lite" за 2023 год наконец опубликованы, и мы можем почерпнуть из них ценную информацию об опыте C++ разработчиков. Одной из самых интересных целей этого опроса является выявление ряда болевых точек, с которыми приходится иметь дело C++ разработчикам.

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

Читать далее
Всего голосов 14: ↑7 и ↓7 0
Комментарии 6

Истории

Что такое COM объект, как происходит его разработка, какие особенности реализации COM Microsoft?

Уровень сложности Средний
Время на прочтение 7 мин
Количество просмотров 3.7K
Habr Программирование *C++ *Visual Studio *ООП *
Мнение

Что такое COM объект, как происходит его разработка, какие особенности реализации COM Microsoft?

Мне попался на глаза такой вопрос:

Всем добрый день. Хотел бы получить краткие и понятные для новичка ответы на следующие вопросы:

1) Что такое COM объект?

2) Как происходит разработка COM объекта?

3) Какие особенности реализации COM Microsoft?

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

Предлагаю свой развернутый ответ. Интересно получить оценку сообщества профессионалов. Надеюсь и для новичков найдется что-то полезное.

Читать далее
Всего голосов 10: ↑2 и ↓8 -6
Комментарии 44

Многопоточность и Thread Pool в C++

Уровень сложности Простой
Время на прочтение 18 мин
Количество просмотров 5K
Программирование *C++ *Процессоры
Из песочницы

Привет, Хабр! Я неожиданно созрел для написания первой статьи тут. За время работы в сфере IT у меня появилась своя собственная библиотека на языке C++, которая медленно, но верно обрастает различными полезными модулями. Не все включаемые в нее модули написаны мною с нуля, но я всегда стараюсь так или иначе адаптировать их под свои нужды. Сегодня у меня появилось непреодолимое желание поделиться с вами некоторыми фрагментами моей библиотеки.

Читать далее
Всего голосов 10: ↑8 и ↓2 +6
Комментарии 11

Монадическая композиция Expected в C++

Уровень сложности Средний
Время на прочтение 8 мин
Количество просмотров 1.9K
Habr Программирование *C++ *Изучение языков

Продолжение статьи На грани между exceptions и std::expected.

Здесь речь пойдёт о трюке, который ещё больше имитирует код под исключениями C++ (а так же в какой-то степени уподобляется некоторым функциональным языкам). Реализован такой трюк будет при помощи описанного в предыдущей статье типа Expected и использования монадической композиции с сопрограммами.

Читать далее
Всего голосов 12: ↑11 и ↓1 +10
Комментарии 2

[По полочкам] Алгоритмы сортировок. Часть 1

Уровень сложности Средний
Время на прочтение 3 мин
Количество просмотров 5.6K
C++ *Алгоритмы *
Из песочницы

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

В этой статье рассматриваются следующие сортировки: сортировка обменами, сортировка выбором, сортировка пузырьком, сортировка вставками.

Читать далее
Всего голосов 22: ↑17 и ↓5 +12
Комментарии 44

Программирование паяльником, пыльное железо и тонны легаси? Как на самом деле устроена разработка ПО в телекоме

Уровень сложности Простой
Время на прочтение 10 мин
Количество просмотров 4K
Блог компании YADRO Программирование *C++ *Разработка систем связи *Карьера в IT-индустрии
Мнение

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

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

Читать далее
Всего голосов 22: ↑21 и ↓1 +20
Комментарии 9

На грани между exceptions и std::expected

Уровень сложности Средний
Время на прочтение 8 мин
Количество просмотров 3.5K
C++ *
Мнение

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

Читать далее
Всего голосов 7: ↑7 и ↓0 +7
Комментарии 16

userver — что мы узнали за полгода в open-source

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 13K
Блог компании Яндекс Open source *C++ *Проектирование и рефакторинг *Управление разработкой *
Кейс
image
Прошло больше полугода с момента выхода фреймворка для C++ 🐙 userver в open-source. За это время мы многое узнали, на многом настрадались, а главное — получили много приятных сюрпризов.

И мы решили об этом написать. Рассказ будет полезен тем, кто ведёт или планирует вести свой open-source проект или занимается контрибьютами. Остальным будет интересно почитать про чужое набивание шишек и что вообще open-source даёт проекту.
Читать дальше →
Всего голосов 62: ↑61 и ↓1 +60
Комментарии 28

Сам себе игровая консоль: превращаем планшет с нерабочим тачскрином в игровой девайс из 8 кнопок и микроконтроллера

Уровень сложности Средний
Время на прочтение 9 мин
Количество просмотров 4.3K
Блог компании Timeweb Cloud Java *C++ *Разработка под Android *Разработка под Linux *
Ретроспектива
image

К сожалению, в наше время многие старые, но весьма неплохие по характеристикам гаджеты отправляются напрямую в помойку, и их владельцы не подозревают, что им можно найти применение. Сервер, мультимедийная-станция, да даже просто как TV-приставка — люди в упор не замечают сфер, где старенький планшет мог бы быть полезен. Но как быть, если посвящаешь жизнь портативным гаджетам, кодингу и копанию в железе? Правильно: сделать довольно мощную игровую консоль из старого планшета самому! Сегодня вам расскажу, как я сделал свою портативную приставку из планшета с нерабочим тачскрином, Raspberry Pi Pico и 8 кнопок! За рабочим результатом прячется несколько дней работы: поиск UART на плате, разработка контроллера геймпада на базе RPi Pico, написание приложения-сервиса, которое слушает события и отправляет их в подсистему ввода Linux в обход Android. Интересно? Тогда жду вас под катом!
Читать дальше →
Всего голосов 38: ↑38 и ↓0 +38
Комментарии 20

Blur Behind: История провалов на разных ОС

Время на прочтение 21 мин
Количество просмотров 4.1K
Блог компании VK C++ *Qt *


Привет, Хабр! Меня зовут Михаил Полукаров, я занимаюсь разработкой Desktop-версии корпоративного супераппа в команде VK Teams. Я уже писал на Хабр две статьи про использование масок, создание сложных многослойных и полупрозрачных окон и о своем опыте реализации красивых спецэффектов с использованием Qt Framework: вот первая и вторая. По просьбам читателей я решил закончить этот небольшой цикл статей описанием неудач, с которыми мне пришлось столкнуться при реализации спецэффекта Blur Behind для разных ОС.
Читать дальше →
Всего голосов 25: ↑24 и ↓1 +23
Комментарии 4

Подвох с указателями на Default Subobject

Уровень сложности Средний
Время на прочтение 4 мин
Количество просмотров 1.5K
C++ *Разработка игр *Отладка *Unreal Engine *
Кейс

Пожалуй, любой С++ разработчик на Unreal Engine имел дело с созданием Default Subobject в конструкторе. Через этот механизм, в частности, создаются компоненты по-умолчанию для акторов. Казалось бы, какие нюансы могут быть связаны с использованием такого стандартного функционала?

Между тем, они есть. И если их не учитывать - можно получить весьма странные проблемы.

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

ОС «Сивелькирия»: архитектура

Уровень сложности Средний
Время на прочтение 21 мин
Количество просмотров 1.8K
Анализ и проектирование систем *C++ *Системное программирование *API *
Обзор

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

Читать далее
Всего голосов 7: ↑3 и ↓4 -1
Комментарии 8

Валидируем X509 сертификат с OpenSSL C++

Уровень сложности Простой
Время на прочтение 3 мин
Количество просмотров 2.3K
Open source *C++ *Разработка под Linux *
Туториал

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

Читать далее
Всего голосов 3: ↑1 и ↓2 -1
Комментарии 6

Реализация утилиты cat на C

Уровень сложности Простой
Время на прочтение 6 мин
Количество просмотров 12K
C++ **nix *C *
Из песочницы

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

Читать далее
Всего голосов 35: ↑25 и ↓10 +15
Комментарии 22

Интервью с создателем обобщённого программирования Александром Степановым

Уровень сложности Простой
Время на прочтение 9 мин
Количество просмотров 5.5K
Блог компании JUG Ru Group C++ *Интервью
Интервью

Всем привет! В сообществе C++  Александр Александрович Степанов особо не нуждается в представлениях: это создатель обобщённого программирования и Standard Template Library. Менее известно, что он построил карьеру в США, но получил образование в СССР. И сейчас, когда многие разработчики уезжают из России, особенно интересно узнать, как переезд IT-специалиста выглядел почти полвека назад, до интернета и удалёнки. Изменились ли с тех пор вызовы и трудности?

Читать далее
Всего голосов 39: ↑35 и ↓4 +31
Комментарии 36

Token-Based Authetification в автономных системах посредством Qt6 с использованием Qr-кодов. Qr-коды

Уровень сложности Средний
Время на прочтение 7 мин
Количество просмотров 1.4K
C++ *Qt *
Туториал

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

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

Разбираемся с использованием неблокируещего ввода-вывода в ОС Linux. Пишем пример сервера на голых системных вызовах

Время на прочтение 11 мин
Количество просмотров 10K
C++ *Assembler *Системное программирование **nix *

Как обычно пишут сервер, если не особо заботиться производительности? Программа запускается, затем начинает принимать входящие соединения от клиентов и для каждого клиента запускает новый поток, который занимается обслуживанием этого клиента. Если вы используете какой-нибудь, прости господи, Spring или Flask или там Poco, то он что-такое внутри себя и делает - разве что потоки можно переиспользовать, то есть брать из некого пула. Это всё довольно удобно, но не слишком эффективно. Скорее всего, ваши потоки, обслуживающие клиентов, живут недолго и большую часть времени ожидают либо получения данных от клиента, либо отправки их клиенту - то есть ждут возвращения системных вызовов. Создание потока ОС - довольно дорогая операция, как и переключение контекста между потоками ОС. Если вы хотите уметь обслуживать много клиентов эффективно, надо придумать что-то другое. Например, коллбеки. Но это довольно неудобно.

Читать далее
Всего голосов 10: ↑6 и ↓4 +2
Комментарии 16

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

Работа

QT разработчик
15 вакансий
Программист C++
152 вакансии