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

C++ *

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

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

Обзор книги “Beautiful C++: 30 Core Guidelines for Writing Clean, Safe and Fast Code”

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

Если вы знакомы с курсами Кейт Грегори (Kate Gregory) на Pluralsight, то вас не должно удивить название этой книги. Хотя многие считают C++ сложным языком, код которого зачастую очень трудно читать и поддерживать, он все-таки может быть красивым. Я не совру, если скажу, что со всеми нововведениями язык становится все сложнее. Но в то же время множество новых фич языка и его библиотек направлены сделать современный идиоматический код C++ легче в написании и понимании.

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

Беспилотный робот не в ROS

C++ *Разработка робототехники *Разработка на Raspberry Pi *Транспорт
Из песочницы

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

Читать далее
Всего голосов 13: ↑8 и ↓5 +3
Просмотры 2.4K
Комментарии 2

Holy C++

Ненормальное программирование *Совершенный код *C++ *

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

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

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

В С++ же использование union это автоматическое undefined behavior, например:

Читать далее!
Всего голосов 90: ↑63 и ↓27 +36
Просмотры 22K
Комментарии 357

Математическое решение задачи о матрице «змейкой»

Занимательные задачки C++ *Алгоритмы *Математика *Лайфхаки для гиков

Настоящая статья продолжает тему предыдущей работы (https://habr.com/ru/post/560266/)  и также посвящается особо извращенным способам заполнения двухмерных массивов согласно определенному шаблону. Создание громоздких, неуклюжих формул, без применения таких милых сердцу программиста конструкций как циклы и условия оказалось увлекательным занятием. В связи с этим, автор, уподобляясь некоторым государственным чинам (вспоминаем бородатую шутку про разницу между депутатом и программистом),  решил потратить кучу драгоценного времени на очередной интересный, но, увы, бесполезный в практическом плане проект. Речь идет о вычислении математическим путем элементов массивов, заполняемых змееподобной траекторией, или проще говоря – «тещиных» матриц.

Различают два класса этих самых матриц: обычные (злобные) и диагональные (крайне злобные).

Первый класс двухмерных массивов (здесь и далее речь идет только о квадратных матрицах) заполняется натуральными числами от 1 до N2 с левого верхнего угла построчно:

Читать далее
Всего голосов 24: ↑23 и ↓1 +22
Просмотры 7.8K
Комментарии 28

Проверяем эмулятор GPCS4, или сможем ли когда-нибудь поиграть в «Bloodborne» на PC

Блог компании PVS-Studio Open source *C++ *

Эмулятор – это приложение, способное имитировать запуск программы, предназначенной для одной платформы, на другой. Примером эмулятора является GPCS4, предназначенный для запуска игр для PS4 на PC. Недавно состоялся первый релиз GPCS4, и мы решили проверить этот проект. Давайте посмотрим, какие ошибки удалось найти PVS-Studio в исходном коде этого эмулятора.

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

SObjectizer: что это, для чего это и почему это выглядит именно так? Взгляд из 2022-го

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

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

Итак, вашему вниманию предоставляется свежий взгляд на то, что же это за инструмент, для чего он создавался и почему получился именно таким.

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

Новый механизм мониторинга компиляции в PVS-Studio для Windows

Блог компании PVS-Studio C++ *DevOps *Разработка под Windows *

В релизе PVS-Studio 7.18 утилита мониторинга компиляции для Windows получила новый механизм, который позволяет полностью устранить пропуски запусков компиляторов. В этой статье мы напомним, как наш анализатор справляется с разнообразными системами сборки и расскажем о реализации нового режима Wrap Compilers.


0954_CLMonitor_IFEO_ru/image1.png

Читать дальше →
Всего голосов 12: ↑10 и ↓2 +8
Просмотры 1.3K
Комментарии 6

WebAssembly объединит их всех

C++ *Go *WebAssembly *

Задумался о том что бы прикрутить к своему пет проекту систему плагинов на WebAssembly. Это потенциально позволит переиспользовать существующий код на Go, C++, Rust, если конечно же он есть. А так же избавится от so/dll, что удобно при распространении плагинов, когда проект представляет собой десктопное приложение и собирается под Windows, OSX, GNU/Linux. Поэтому пошел смотреть как это сделано в Envoy.

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

Во что вам обойдется конкурентная обработка. Иерархия проблем

Высокая производительность *C++ *Системное программирование *Алгоритмы *Параллельное программирование *
Перевод

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

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

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

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

Читать далее
Всего голосов 30: ↑28 и ↓2 +26
Просмотры 4.3K
Комментарии 5

Переход на UNIGINE с Unreal Engine 4: гайд для программистов

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

Специально для тех, кто ищет альтернативу Unreal Engine или Unity, мы продолжаем цикл статей про безболезненный переход на UNIGINE с зарубежных движков. В третьем выпуске рассмотрим миграцию с Unreal Engine 4 с точки зрения программиста.

Под катом: написание игровой логики, триггеры, ввод, рейкастинг и другое.

Читать далее
Всего голосов 13: ↑12 и ↓1 +11
Просмотры 2.7K
Комментарии 3

Простое руководство по атомарности в C++

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

Часто возникает путаница с тем, что же понимается в компьютерных науках под «атомарностью». Как правило, атомарность – это свойство процесса, означающее, что он совершается за один шаг или операцию. Но в языке C++  атомарность определяется гораздо более специфичным образом. На самом деле, при использовании std::atomic  с классами и типами еще не гарантируется, что весь код будет подлинно атомарным. Хотя, атомарные типы и входят в состав языка C++, сами атомарные операции должны поддерживаться на уровне того аппаратного обеспечения, на котором работает программа. Эта статья – простое руководство, помогающее понять, что же представляет собой атомарность в C++.

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

Продление жизни временных значений в С++: рецепты и подводные камни

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

Прочитав эту статью вы узнаете:

1. Способы, которыми можно продлить время жизни временного объекта в С++.

2. Рекомендации и подводные камни этого механизма, с которыми может столкнуться С++ программист, и с которыми сталкивался на работе я.

Информация из статьи может быть полезна как новичкам, так и профессионалам.

Если заинтересовало, то самое время налить чая, и погнали разбираться где тут референсы висят.

Чай готов, начинаем погружение
Всего голосов 41: ↑39 и ↓2 +37
Просмотры 8.4K
Комментарии 11

Долой указатели

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

Несколько лет назад среди C++ блоггеров завирусилась первоапрельская шутка о том, что C++ задепрекейтил указатели (например, Fluent C++ — в C++ больше не будет указателей). Что ж, поскольку C++ почти никогда ничего не депрекейтит, это была полная умора. Однако действительно ли нам до сих пор так необходимы указатели? Именно этот вопрос я и хочу осветить в сегодняшней статье.

Читать далее
Всего голосов 19: ↑9 и ↓10 -1
Просмотры 8.6K
Комментарии 57

Подсчёт слов

C++ *Алгоритмы *

В статье рассказывается о решении задачки с собеса в одну российскую IT-контору.

В первые месяцы ковидной эры так случилось, что на моей текущей на тот момент работе всем уполовинили зарплату и я, недолго думая, пошёл на рынок труда. На собесе в одну известную российскую IT-компанию я получил эту задачу. Задачку нужно было просто решить: решить корректно, не "убив" при этом скорость "так, чтобы совсем ужас был".

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

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

Константные ссылки — не всегда ваши друзья

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

Когда мы преподаем современный C++, в самом начале мы учим, что все, что не подпадает под критерии малых данных (small data)1, по умолчанию должно передаваться через константные ссылки:

Читать далее
Всего голосов 19: ↑15 и ↓4 +11
Просмотры 4.4K
Комментарии 4

Оптимизация препроцессинга и постпроцессинга нейросети Yolov5 с помощью CUDA, Thrust и Nvidia Perfomance primitives

C++ *GPGPU *Искусственный интеллект
Из песочницы

В этой статье я расскажу как мы оптимизировали препроцессинг и постпроцессинг для инференса Yolov5 на одноплатнике Jetson Nano, полностью отказавшись от OpenCV.

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

Корутины, компиляторы, кодогенерация и другие «ко...» грядущей C++ Russia

Блог компании JUG Ru Group C++ *Конференции

Как известно, в мире C++ много способов причинить себе боль, но также много высокой производительности, нетипичных амбициозных задач и прочего увлекательного хардкора. Ну и ещё известно, что плюсовиков хлебом не корми, дай немножко похоливарить про Rust или Go.

А в программе C++ Russia нашлось место всему этому: будут доклады и о производительности, и о специализированных задачах вроде систем реального времени, и о способах уменьшить боль. И ещё немножко про Rust и Go. И внезапное, но интересное: доклад про автоматизацию программирования в СССР.

В начале июня пройдёт онлайн-часть конференции, 26 июня пройдёт офлайн-часть, а сейчас про обе сразу можно узнать, какие доклады там будут.

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

Учим LLDB уточнять указатели на локальные переменные

Блог компании Питерская Вышка Программирование *C++ *

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

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

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

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

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

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

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

Читать далее
Всего голосов 34: ↑21 и ↓13 +8
Просмотры 14K
Комментарии 52

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

Работа

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