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

C++ *

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

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

Объектно-ориентированный антипаттерн

Программирование *Совершенный код *C++ *Проектирование и рефакторинг *ООП *
Перевод

Довольно часто у студентов, изучающих C++ в определённых учебных кругах, складывается мировоззрение о том, что всё должно быть объектами. Попросите их написать программу, которая считает некоторое значение - и они начнут с создания объекта ValueComputer и метода vc.computeResult().

Например: дана задача с помощью динамического программирования посчитать количество способов замостить костяшками домино прямоугольник w \times h. Студент пишет:

Читать далее
Всего голосов 22: ↑15 и ↓7 +8
Просмотры 4.5K
Комментарии 23

Новости

RVO и NRVO в C++17

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

Предположим, что в программе на C++ вы возвращаете из функции локальную переменную. Что происходит при вызове оператора return: копирование, перемещение или ни то, ни другое? От этого зависит длительность вызова функции и эффективность наших программ. Я постарался разобраться с этим вопросом и дам рекомендации по написанию функций так, чтобы повысить шансы на применение этой оптимизации компиляторами. Ну, а сокращения в названии статьи — это Return Value Optimization (RVO) и Named Return Value Optimization (NRVO).

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

Оптимизация вычислений в ЦОС (часть первая, углы)

C++ *C *
Из песочницы

Всем привет, я работаю программистом DSP контроллеров в фирме, которая занимается разработкой и производством радаров. В начале моего пути, при решении задач по интеграции алгоритмов ЦОС, приходилось по долгу искать пути оптимизации вычислений.

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

Но довольно слов, давайте к делу.

Читать далее
Всего голосов 28: ↑24 и ↓4 +20
Просмотры 2.7K
Комментарии 16

Пример описания многослойной архитектуры, основанной на использовании наборов подслоёв и иерархии моделей данных

Java *C++ *Проектирование и рефакторинг *C# *
Из песочницы

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

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

Просто о сложном — пишем тесты с Google C++ Testing Framework (GTest, GMock)

C++ *

Всем привет. Недавно по работе возникла потребность разобраться с созданием новых тестов на GTest/GMock. Конкретно мой вопрос был связан с его конструкциями типа EXPECT_CALL и моками - что это за магические штуки и как они работают. Однако, по мере изучения выяснились и другие интересные вещи, с которыми хотел бы поделиться.

Читать далее
Всего голосов 14: ↑12 и ↓2 +10
Просмотры 3.5K
Комментарии 10

Генерация лабиринтов: алгоритм Эллера

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

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

Сегодня я хотел бы рассказать о генерации идеального лабиринта - алгоритмом Эллера. Статья подойдёт всем любителям алгоритмов.

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

Быстрый переход на UNIGINE с Unreal Engine 4: первые шаги

Блог компании UNIGINE Программирование *C++ *Работа с 3D-графикой *
Tutorial

Если вы планируете переходить с иностранного софта на отечественный и ищете полноценный аналог Unreal Engine 4, то одним из вариантов может стать 3D движок UNIGINE.

Сравниваем основные термины, управление проектами, интерфейс редактора, работу со сценой, настройки проекта и многое другое под катом.

Читать далее
Всего голосов 7: ↑6 и ↓1 +5
Просмотры 4.1K
Комментарии 41

Гибкая индексация элементов в контейнере на С++ и при чём тут Boost.MultiIndex

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

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

Мультииндекснуться
Всего голосов 19: ↑19 и ↓0 +19
Просмотры 3.1K
Комментарии 21

Пишем внешнюю компоненту для 1С, NativeAPI на С++, для ОС Linux, с использованием Qt Creator

C++ * *
Из песочницы

Аннотация

В статье рассмотрен процесс создания внешней компоненты для 1С в среде Qt Creator для операционной системы Linux (ubuntu, debian, mint и им подобных). На примере компоненты для сбора данных от внешней аппаратуры и сохранение их в базе, посредством 1С. В качестве внешней аппаратуры в данном примере будем использовать Arduino UNO.

Для создания внешней компоненты понадобятся

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

Как помочь компилятору повысить быстродействие вашей программы

Блог компании МойОфис Программирование *Совершенный код *C++ *Компиляторы *
Перевод

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

Под катом старший разработчик ПО компании Google, Minhaz A V*, рассказывает об оптимизации производительности кода. Менее чем за час работы автор ускорил код на 18%, добавив в него всего пару строк. Несмотря на то, что в большинстве примеров этого материала используется C++, статья может быть полезна широкому кругу читателей.

*Обращаем ваше внимание: позиция автора не всегда может совпадать с мнением МойОфис.

Читать далее
Всего голосов 29: ↑25 и ↓4 +21
Просмотры 4.7K
Комментарии 8

Как работать с Makefile-проектами в среде CLion

Программирование *C++ *C *Разработка под Linux *Системы сборки *
Tutorial

За последние несколько лет мне пришлось столкнуться с множеством вопросов, которые были сформулированы примерно так: "мой проект не открывается в среде CLion". В свою очередь, это приводило к необходимости из раза в раз объяснять разным людям примерно одно и то же. Статья имеет целью сохранить тот опыт, который был накоплен в процессе анализа десятков разных проектов. Предполагается, что официальная документация вам уже известна и не вызывает вопросов.

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

Как при помощи С++20 мы искоренили целый класс багов, возникавших во время выполнения

Блог компании Издательский дом «Питер» Программирование *C++ *Проектирование и рефакторинг *API *
Перевод

C++20 давно в ходу и поддерживается компилятором MSVC с версии 16.11, но в этой статье я расскажу не о том, как его использовать, а как с его помощью нам удалось устранить целый класс багов времени выполнения, подвесив специальную проверку во время компиляции. Давайте разберемся с этим подробнее!

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

C++ магистрали потоков и древо алгоритма

Программирование *C++ *Машинное обучение *

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

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

Концепция умного указателя static_ptr<T> в C++

Программирование *C++ *

В C++ есть несколько "умных указателей" - std::unique_ptr, std::shared_ptr, std::weak_ptr. Также есть более нестандартные умные указатели, например в boost: intrusive_ptr, local_shared_ptr.

В этой статье мы рассмотрим новый вид умного указателя, который можно назвать static_ptr. Больше всего он похож на std::unique_ptr без динамической аллокации памяти.

Читать далее
Всего голосов 37: ↑34 и ↓3 +31
Просмотры 8.3K
Комментарии 65

PProto: бинарный rpc протокол для Qt framework (часть 2)

Программирование *C++ *Сетевые технологии *

В первой части статьи было рассказано о бинарном и json форматах сериализации данных, о механизмах версионирования. В этой части речь пойдет о концепции команд, сообщениях, и механизмах их доставки.

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

Неклассические контейнеры в C++

Программирование *C++ *

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

В стандартную библиотеку C++ входит несколько контейнеров. Кроме этого, в Open Source есть несколько контейнеров, которые покрывают больше юзкейсов. Я опишу устройство интересных контейнеров вне STL и их отличия от классических контейнеров.

Читать далее
Всего голосов 68: ↑66 и ↓2 +64
Просмотры 12K
Комментарии 24

Квантовый хэдж фонд: что интересного для IT специалиста?

Python *Java *C++ *Big Data *Data Engineering *

Всем привет! Это моя первая статья на Хабр. Меня зовут Артем Сосульников и я директор по разработке ПО в Luxoft. В IT больше 15 лет: начинал как Java разработчик, прошел долгий путь от тим лида и руководителя проектов до директора по разработке ПО с сотней людей в подчинении. В связи с последними событиями в ближайшее время собираюсь с семьей переезжать на остров Пенанг в Малайзию и присоединиться к Люксофт.Малайзия. Там продолжу развитие своих проектов в квантовых хэдж фондах, куда мы теперь нанимаем людей в Сербии, Мексике и Малайзии. Буду писать статьи про жизнь в Малайзии и про работу в Люксофт.

Читать далее
Всего голосов 13: ↑3 и ↓10 -7
Просмотры 2.5K
Комментарии 13

О чём расскажут на TechTrain 2022 Spring

Блог компании JUG Ru Group Java *C++ *Разработка мобильных приложений *Конференции

14 мая мы проведём онлайн-фестиваль TechTrain, участие бесплатно (надо только зарегистрироваться).

Там будет восемь докладов, и их набор очень эклектичный. Потому что ещё мы проводим самые разные IT-конференции (от Java до дата-инжиниринга), и TechTrain связан со всеми их направлениями сразу: от каждого будет по одному докладу.

Вряд ли вы станете смотреть всю эту пёструю подборку целиком (кому важны одновременно Node.js, Spring Data, WebRTC и Selenide?) Но вот шансы на то, что среди такого разнообразия есть что-то для вас, высоки.

Поэтому публикуем всю эту программу: можно пробежаться глазами по названиям докладов, и где оно заинтересует — там изучить описание подробнее. А заодно в конце каждого описания мы указали, с какой из наших конференций связан доклад: возможно, вы захотите не только на бесплатный TechTrain, но и туда, где больше подобных докладов.

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

В апреле выйдет GNU Compiler Collection 12

Блог компании SkillFactory Программирование *C++ *Компиляторы *
Перевод

Смягчение уязвимости Trojan Source, оптимизация функций приведения типов, многомерный оператор [], подавление предупреждений о вендорных атрибутах — вот лишь некоторые возможности GCC 12. Подробностями делимся к старту курса по разработке на C++.

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

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

Работа

QT разработчик
10 вакансий
Программист C++
101 вакансия