View on GitHub

papers

Публикации

Список публикаций

23.10.2021 Ленивые диапазоны и стирание типов

О том, что находится под капотом ленивых операций с разнотипными диапазонами.

14.03.2021 Ленивые операции над множествами в C++

Пример того, как проектировать ленивый диапазон, который будет производить какую-либо операцию с N множествами.

13.03.2021 Ленивые итераторы и диапазоны в C++

Краткий ликбез по итераторам, диапазонам и ленивым операциям над последовательностями.

13.06.2020 Долой циклы, или Неленивая композиция алгоритмов в C++

Об автоматах, многопоточности, неленивой модели компоновки алгоритмов, и о том, как удобно и эффективно использовать эту модель в прикладном коде.

29.02.2020 Помоги компилятору помочь тебе

О том, как максимально использовать потенциал компилятора в выявлении ошибок.

29.02.2020 Модульное тестирование, наука и математика

Об осмысленном подходе к модульному тестированию.

12.08.2019 C++ и CMake — братья навек, часть II

О подготовке независимых идинообразных модулей и связывании их между собой.

30.07.2019 CMake и C++ — братья навек

О том, как подружить систему сборки CMake и язык C++ в рамках проекта заголовочной библиотеки.

26.11.2018 Манифест жёсткого программиста

О методологиях ведения разработки ПО и рабочих отношениях.

16.05.2017 Элементы функционального программирования в C++: композиции отображений

Об инструментах, делающих компоновку функций лёгкой и приятной.

24.10.2016 Элементы функционального программирования в C++: частичное применение

О проектировании и реализации механизмов частичного применения в языке C++.

05.07.2016 Концепты для отчаявшихся

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

02.06.2016 Динамический неоднородный плотно упакованный контейнер

О контейнере, ключевые особенности которого следующие:

  1. Складываемые в контейнер типы не обязаны быть членами одной иерархии классов — это могут быть совершенно разные типы. Например, можно поместить одновременно bool, double, std::string, std::vector<int> и т.п.

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

25.11.2015 Поразрядная сортировка с человеческим лицом

О том, каким должен быть правильный интерфейс поразрядной сортировки в языке C++, и почему именно таким.