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

Ветеранам Хабра пора напрячься: время летит слишком быстро... В этом году нашему корпоративному блогу стукнуло 10 лет! За это время мы исследовали мир айтишки через самые разные сферы: от киберспорта и «фантазий о будущем» до классических технических «заглядываний под капот» с сотнями строк кода.

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

P.S. А вас просим оценить нас в ежегодном опросе Хабр/ЭКОПСИ. Это займёт всего 5–7 минутЧитать полностью »

Проблема: Современные планировщики вроде TBB оптимизированы для динамических workload'ов, но в реальности до 40% случаев (игровые движки, оффлайн-рендеринг) используют фиксированные DAG-графы, где важнее предсказуемость, чем гибкость.
В большинстве случаев, когда разработчику нужен параллелизм, он использует либо std::async, либо полноценный thread-пул (например, oneTBB). Эти инструменты отлично подходят для динамически растущих множеств задач, где граф неизвестен заранее и задачи могут порождать друг друга в ходе выполнения.

Но в реальных проектах довольно часто встречается совершенно другой сценарий:

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

Приветствую, уважаемый читатель. Ранее, я уже писал подобную статью (ссылка на нее есть ниже). Рекомендую прочесть ее прежде, чем переходить к этой, так как из первой части фундаментальные вещи остались не тронутыми.

ПЕРВАЯ ЧАСТЬ

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

Напомню главную задачу: фоновая программа, которая выводит в трей информацию о загрузки CPU и ОЗУ.

Как изменения были введены:

В ретроспективе 1991 года по истории C++ его создатель Бьярне Страуструп назвал отсутствие стандартного строкового типа (и некоторых других стандартных типов) в C++ 1.0 худшей ошибкой, которую он допустил при его разработке:

“the absence of those led to everybody re‑inventing the wheel and to an unnecessary diversity in the most fundamental classes”

(«Их отсутствие привело к тому, что все заново изобретали велосипед, и к ненужному разнообразию в самых фундаментальных классах»).

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

Предисловие

Привет! Наткнулся на достаточно интересную задачу по динамическому программированию с нетривиальным восстановлением ответа. Поэтому пишу эту статью, с целью помочь интересующимся.

Условие задачи

Даны две последовательности, требуется найти и вывести их НОВП (наибольшую общую возрастающую подпоследовательность).

Формат ввода
Во входном файле записаны две последовательности. Каждая последовательность описывается двумя строками следующим образом: в первой строке идет длина последовательности Читать полностью »

Недавно на подкасте Spring АйО мы обсуждали новые свитчи в Джаве - с паттерн-матчингом и деструктуризацией. Я тогда ещё выразил мнение, что всё это неправославно, по-зумерски и отход от принципов ООП.

Не от инкапсуляции, полиморфизма и наследования, а вообще от подхода. Новые свитчи будут провоцировать разработчиков писать код по-новому, а не так, как завещали нам наши далёкие предки. С нарушением традиций, норм и устоев. Как учит Кейси Муратори, если вы понимаете о ком я.

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

Это продолжение статьи “Rope-Ladder Tracker: визуальный возврат без GPS” , где я представил концепцию структурированного позиционирования по принципу “верёвочной лестницы”. Тогда это была идея, прототип и первые кадры. Сегодня — полноценная, стабильная система, готовая к интеграции в реальный дрон.

Что изменилось за это время?

Первая версия rope-ladder-tracker работала, но была хрупкой:

  • Чувствительна к освещению.

  • Сыровато обрабатывала потерю точек.

  • Не учитывала смену состояния трекинга.

  • Могла “зависнуть” при плохом кадре.

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

Приветствую читателя этой статьи. Я студент, учусь по направлению "Приборостроение", но большую часть времени занимаюсь программированием. Все таки это меня привлекает больше. Задумывался по поводу смены ОС на Arch Linux, но пока отложил эту затею в долгий ящик. Смотрел различные ролики на YouTube и заметил, что многие пользователи ставят себе Polybar, в котором можно легко настраивать информацию, выводимую на нечто похожее на Панель задач в Windows. Тогда я подумал "А почему бы не сделать такое в винде?!" и сразу начал гуглить что к чему. Попытался найти готовые аналоги, но ничего не впечатлило, поэтому решил написать свою программу на C++.

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

Три совета, как не выучить C++ за 21 день (субъективный гайд с дополнениями) - 1

Типичная проблема новичков при изучении языка программирования — они тонут в море учебных материалов. Интернет предлагает тонны статей, курсов и книг по C++, но как выбрать действительно стоящие?

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

QapDSLv2 — это язык который транслируется в обычный C++ код. Он позволяет удобно и компактно задавать грамматики/правила разбора, значительно упрощая разработку компиляторов и анализаторов.

QapGen — это генератор дерева_лексеров/парсеров описанных на QapDSLv2. Сама грамматика QapDSLv2 описана на QapDSLv2 на 100%. Поэтому QapGen как основной читатель этой грамматики сам генерирует часть своего кода(весь парсер QapDSLv2).

Основные фишки QapDSLv2 + QapGen — это:


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