Обновить
256K+

C++ *

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

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

Локализация по Aruco маркерам

Время на прочтение14 мин
Охват и читатели28K
В прошлом посте мы рассказали, как проехать из точки А в точку Б, не задев при этом ничего. Но, чтобы что-то объехать, нужно понять, где находимся мы сами, и где находятся динамические препятствия (наши противники и не только).

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

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


Читать дальше →

Машина Тьюринга, как модель автоматных программ

Время на прочтение18 мин
Охват и читатели30K

Машина Тьюринга, как модель автоматных программ


1. Введение


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

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

За основу обсуждения проблем автоматного программирования возьмем недавнюю лекцию Шалыто А.А. [1] и его «программные» статьи к определению парадигмы автоматного программирования [2, 3].
Читать дальше →

Ленивая реализация обхода дерева дочерних элементов класса QObject

Время на прочтение10 мин
Охват и читатели9K

Введение


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

Читать дальше →

Обзор докладов C++ Russia Piter 2019

Время на прочтение5 мин
Охват и читатели3.2K
В совместной магистратуре ИТМО и JetBrains мы просим студентов, которые отправляются на конференцию, написать отчёт с обзором докладов.
Публикуем один из таких отчётов о конференции C++ Russia Piter 2019. Автор — студент 2 курса магистратуры Артём Хорошев.


Читать дальше →

Статическая подписка с использованием шаблона Наблюдатель на примере С++ и микроконтроллера Cortex M4

Время на прочтение12 мин
Охват и читатели9.8K


Всем доброго здравия!


В преддверии Нового года хочу продолжить рассказывать про использование С++ на микроконтроллерах, на этот раз попытаюсь рассказать про использование шаблона Наблюдатель (но далее я буду называть его Издатель-Подписчик или просто Подписчик, такой вот каламбур), а также реализацию статической подписки на С++17 и преимущества этого подхода в некоторых приложениях.

Читать дальше →

C++ Russia: как это было

Время на прочтение10 мин
Охват и читатели3.2K
Если в начале пьесы вы говорите, что на стене висит код на С++, то к концу он должен непременно выстрелить вам в ногу.

Бьярне Строуструп

С 31-го октября по 1-е ноября в Петербурге прошла конференция C++ Russia Piter – одна из масштабных конференций по программированию в России, организуемая JUG Ru Group. Среди приглашённых спикеров – члены комитета по стандартизации C++, докладчики с CppCon, авторы книг издательства O'Reilly, а также мейнтейнеры таких проектов, как LLVM, libc++ и Boost. Конференция ориентирована на опытных разработчиков на C++, желающих углубить свою экспертизу и обменяться опытом в живом общении. Студентам, аспирантам и преподавателям университетов предоставляются очень приятные скидки.

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


Читать дальше →

Индексируемое бинарное дерево

Время на прочтение4 мин
Охват и читатели15K
main

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


  • вставить новый элемент
  • удалить элемент по порядковому номеру
  • получить элемент по порядковому номеру
  • данные хранятся в сортированном виде
Читать дальше →

Панель корреляции на QtQML/Quick

Время на прочтение5 мин
Охват и читатели4.8K

Всем привет! Я — тимлид команды по разработке десктопных приложений в компании Роджии Европа. Мы разрабатываем программные решения для нефтегазовой отрасли.


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


Обходя вопросы наследия кодовой базы — о нём я упомяну в статье — был один фундаментальный вопрос — с помощью какой технологии делать? Однозначно нам был нужен OpenGL — который уже применяется в MapView и 3d view на базе OpenSceneGraph — но очевидно, что не голый, и с элементами графического интерфейса. OSG отвалился =(. Технологию, удовлетворяющую двум требованиям — граф сцены и GUI на OpenGL — я знал только одну — Qt QML/Quick. О том, что же у нас получилось и чем нам есть поделиться — внутри.

Читать дальше →

Работа со списком Pinов, на С++ для микроконтроллеров (на примере CortexM)

Время на прочтение13 мин
Охват и читатели10K


Всем доброго здравия!


В прошлой статье я обещал написать о том, как можно работать со списком портов.
Сразу скажу, что уже все было решено до меня аж в 2010 году, вот статья: Работа с портами ввода-вывода микроконтроллеров на Си++ . Человек написавший это в 2010 просто красавчик.


Мне было немного неловко, что я будут делать то, что уже сделано 10 лет назад, поэтому я решил не дожидаться 2020 года, а сделать это в 2019, чтобы повторить решение еще пока 9 летней давности, это будет не так стремно.


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

Читать дальше →

Нейросети и золотое сечение: второй заход

Время на прочтение13 мин
Охват и читатели4.2K
Я как-то написал статью, в которой описал простейшую математическую модель эволюции нейросети и её отбора на умение складывать числа в системах счисления с основаниями 2 и золотым сечением, причём оказалось, что золотое сечение лучше работает. Так вот, мой первый опыт оказался совсем уж плохим, так как я не учёл ряд важных нюансов, связанных с тем, что ошибку стоило учитывать не на нейрон, а на бит информации, поэтому я решил улучшить свой эксперимент, и внести в него ещё несколько корректировок.
Читать дальше →

Топ 10 ошибок в проектах C++ за 2019 год

Время на прочтение8 мин
Охват и читатели17K

Picture 7

Ещё один год стремится к окончанию, поэтому настало время заварить себе кофе и перечитать обзоры ошибок за прошедший год. Конечно, на это уйдёт много времени, поэтому эта статья и была написана. Предлагаю взглянуть на наиболее интересные темные места проектов, которые встретились нам в 2019 году в проектах, написанных на C и C++.
Читать дальше →

Основа любого программирования на… пазлах

Время на прочтение8 мин
Охват и читатели12K
Приветствую, Хабровчане!

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

Как подружить PyTorch и C++. Используем TorchScript

Время на прочтение12 мин
Охват и читатели25K

Около года назад разработчики PyTorch представили сообществу TorchScript — инструмент, который позволяет с помощью пары строк кода и нескольких щелчков мыши сделать из пайплайна на питоне отчуждаемое решение, которое можно встроить в систему на C++. Ниже я делюсь опытом его использования и постараюсь описать встречающиеся на этом пути подводные камни. Особенное внимание уделю реализации проекта на Windows, поскольку, хотя исследования в ML обычно делаются на Ubuntu, конечное решение часто (внезапно!) требуется под "окошками".


Примеры кода для экспорта модели и проекта на C++, использующего модель, можно найти в репозиториии на GitHub.


Читать дальше →

Ближайшие события

C++ Russia: прошлое, настоящее и будущее

Время на прочтение8 мин
Охват и читатели3.9K


UPD: Когда мы писали эту статью, некоторые указанные в посте спикеры планировали приехать на конференцию. К сожалению, ситуация изменилась. Также из-за запрета на проведение массовых мероприятий мы перенесли конференцию на другие даты. Следите за обновлениями на сайте конференции. 13 марта мы обновили этот пост, чтобы он не содержал некорректную информацию.

В 2019-м конференция C++ Russia сильно изменилась организационно — и отзывы говорят, что к лучшему. Конец года — подходящее время, чтобы и подытожить результаты, и заглянуть в будущее: хотя до C++ Russia 2020 Moscow ещё четыре месяца, кое-что о ней уже известно.


Поэтому этот пост состоит из трёх частей:


  • «Прошлое»: как конференция развивалась и что изменилось с этого года
  • «Настоящее»: как прошла недавняя C++ Russia 2019 Piter (и какие из её лучших докладов уже доступны онлайн)
  • «Будущее»: что готовит 2020-й
Читать дальше →

Рефакторинг игры на SFML

Время на прочтение6 мин
Охват и читатели6.8K
В прошлой статье я рассказал как сделать простую игру с использованием библиотеки SFML. В конце статьи я пообещал, что продолжу и покажу как привести код программы в более правильный вид. Итак, время для рефакторинга пришло.

Первым делом я примерно прикинул, какие мне нужны классы для игры. У меня получилось, что нужен класс для работы с ресурсами игры — Assets. Из ресурсов у меня сейчас есть только загружаемый шрифт, но в будущем могут добавиться и другие ресурсы, например изображения, музыка и.т.д. Класс я сделал синглтоном, так как этот шаблон прекрасно подходит для класса Assets. За основу взял широко известный синглтон Майерса.
Читать дальше →

C++ vtables. Часть 2 (Virtual Inheritance + Compiler-Generated Code)

Время на прочтение10 мин
Охват и читатели19K

Перевод статьи подготовлен специально для студентов курса «Разработчик С++». Интересно развиваться в данном направлении? Смотрите запись мастер-класса «Практика использования Google Test Framework»!



Часть 3 — Виртуальное наследование


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

Читать дальше →

Rust превосходит по производительности C++ согласно результатам Benchmarks Game

Время на прочтение3 мин
Охват и читатели26K
В начале этого месяца случилась маленькая победа. Согласно последним результатам популярного бенчмарка, сравнивающего производительность языков программирования, Rust занимает второе место, разместившись между C и С++:

image

Для сравнения производительности используется геометрическое среднее времени выполнения 10 различных программ. Согласно последним результатам Rust превзошел С++ в 6 задачах из 10.

Под катом некоторое детали и мнение о дальнейших перспективах.
Читать дальше →

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

Время на прочтение8 мин
Охват и читатели13K
Часть 1. Вступление

Часть 8. Именование
Часть 9. Комментарии
Часть 10. Форматирование



Эта статья является переводом части руководства Google по стилю в C++ на русский язык.
Исходная статья (fork на github), обновляемый перевод.
Читать дальше →

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

Время на прочтение4 мин
Охват и читатели87K
Часть 1. Вступление
Часть 2. Заголовочные файлы
Часть 3. Область видимости
Часть 4. Классы
Часть 5. Функции
Часть 6. Специфика Google
Часть 7. Ещё возможности C++
Часть 8. Именование
Часть 9. Комментарии
Часть 10. Форматирование
Часть 11. Исключения из правил

Изменения 2019-2024


Все мы при написании кода пользуемся правилами оформления кода. Иногда изобретаются свои правила, в других случаях используются готовые стайлгайды. Хотя все C++ программисты читают на английском легче, чем на родном, приятнее иметь руководство на последнем.
Эта статья является переводом части руководства Google по стилю в C++ на русский язык.
Исходная статья (fork на github), обновляемый перевод.
Это вступительная часть руководства, в которой рассматриваются общие вопросы «Зачем?»
Также после перевода будет несколько ответов на возможные вопросы.
Читать дальше →

Затирание файлов в Java

Время на прочтение5 мин
Охват и читатели14K

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