C++ Russia, 2015

February 27-28 2015
Москва, Россия
View
To favorites

Sean Parent

Principal scientist at Adobe

Виктор Петров

Cтарший разработчик at Лаборатория Касперского

Сергей Анпилов

Ведущий разработчик at Лаборатория Касперского

Дмитрий Нестерук

Технический евангелист at JetBrains

Григорий Демченко

Старший разработчик at Яндекс

About event

Topic: IT

Это независимая конференция C++ разработчиков. Организаторы собирают лучших докладчиков из России и Европы на два дня вместе. Конференция ориентирована на опытных разработчиков, никаких вводных лекций, только современный C++, матрёшки и блины!

Audience

  • CIO
  • Тимлидам
  • Разработчикам
  • Студентам технических ВУЗов
Share

Schedule

Show all
 
Get access to all talks
Purchased
In cart
0 ₽
0 ₽
$0
$0
€ 0
€ 0

Sean Parent

Principal scientist at Adobe

Better Code: Concurrency

Despite all of the recent interest, concurrency in standard C++ is still barely in its infancy. This talk uses the primitives supplied by C++14 to build a simple, reference, implementation of a task system. The goal is to learn to write software that doesn’t wait.
Sources on GitHub.

Purchased
In cart
0 ₽
0 ₽
$0
$0
€ 0
€ 0

Виктор Петров

Cтарший разработчик at Лаборатория Касперского
and 1 more
speaker

Практика использования Dependency Injection

В докладе рассказывается об опыте применения «инверсия управления» (Inversion of Control) при разработке новой версии KES. Этот подход заключается в том, что более высокоуровневый код не зависит напрямую от конкретной реализации нижележащего слоя. Вместо этого он зависит от абстрактного протокола (интерфейса), конкретный же компонент подставляется конфигурационным кодом-клиентом. Эта практика позволяет понизить loose coupling программных модулей и применяется практически в любых крупных проектах.

При разработке новой версии KES было принято решение изменить подход к реализации инверсии управления. Было решено отказаться от централизованного обобщенного реестра доступных компонентов (шаблон (паттерн) Service Locator) в пользу явной передачи зависимостей конфигуратором (ручная инъекция зависимостей (manual Dependency Injection)). При это возникли проблемы с использованием готовых библиотек Dependency Injection Frameworks. Применение подобных библиотек стало стандартом в мире разработки Java/C# за последние 10-15 лет, но в мире C++ они пока не получили подобного распространения. В докладе делается обзор и сравнение актуальных DI-Framework’ов на C++, анализируется их применимость к практическим задачам ЛК. Анализируется, что могут привнести стандарты C++11/14 для упрощения решения таких задач.

Purchased
In cart
0 ₽
0 ₽
$0
$0
€ 0
€ 0

Дмитрий Нестерук

Технический евангелист at JetBrains

Конверсия управляемых языков в С++

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

Purchased
In cart
0 ₽
0 ₽
$0
$0
€ 0
€ 0

Григорий Демченко

Старший разработчик at Яндекс

Асинхронность и сопрограммы

Как показывает практика, повсеместное применение классического, основанного на callback’ах подхода к асинхронному программированию обычно оказывается неудобным. Для упрощения написания и поддержки сложного асинхронного кода можно использовать иной подход — с использованием сопрограмм. Он значительно сокращает объём и сложность кода, превращая код из асинхронного в синхронный.

Purchased
In cart
0 ₽
0 ₽
$0
$0
€ 0
€ 0

Zoltán Porkoláb

Software developer at Ericsson

Debugging and Profiling C++ Template Metaprograms

Template metaprogramming is an emerging new direction in C++ programming for executing algorithms in compilation time. Despite all of its already proven benefits and numerous successful applications, it is yet to be accepted in industrial projects. One reason is the lack of professional software tools supporting the development of template metaprograms. A strong analogue exists between traditional runtime programs and compile-time metaprograms. This connection presents the possibility for creating development tools similar to those already used when writing runtime programs. This paper introduces Templight, a debugging framework that reveals the steps executed by the compiler during the compilation of C++ programs with templates. Templight’s features include following the instantiation chain, setting breakpoints, and inspecting metaprogram information. This framework aims to take a step forward to help template metaprogramming become more accepted in the software industry.

Purchased
In cart
0 ₽
0 ₽
$0
$0
€ 0
€ 0

Максим Хижинский

Ведущий программист at VASExperts

Конкурентные ассоциативные контейнеры

Рассмотрены известные автору подходы к реализации как lock-free, так и fine-grained lock-based set/map: хеш-таблицы, деревья. Что из подходов STL может быть реализовано в lock-free манере, а что принципиально нет. Подводные камни lock-free и их нейтрализация.

Purchased
In cart
0 ₽
0 ₽
$0
$0
€ 0
€ 0

Rainer Grimm

Trainer at Modernes C++

Multithreading done right

Multithreading with modern C++ is hard. Undefined variables, Deadlocks, Livelocks, Race Conditions, Spurious Wakeups, the Double Checked Locking Pattern, etc. And at the base is the new Memory-Modell which make the life not easier. The story of things which can go wrong is very long. In this talk I give you a tour through the things which can go wrong and show how you can avoid them.

Purchased
In cart
0 ₽
0 ₽
$0
$0
€ 0
€ 0

Bartosz Milewski

Software Architect at ‎Reliable Software

Categories for the Working C++ Programmer


Purchased
In cart
0 ₽
0 ₽
$0
$0
€ 0
€ 0

Андрей Карпов

Технический директор at Системы программной верификации

Цена ошибки

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

Purchased
In cart
0 ₽
0 ₽
$0
$0
€ 0
€ 0

Ivan Cukic

Сore developer at KDE

Natural Task Scheduling Using Futures and Continuations

We usually think about algorithms in a procedural manner – with loops,
branches and subroutines. Presenting an algorithm as an easily understandable
flow between its steps.

In the real world, where we need to reduce latency and forbid the blocking API
calls, these flows get broken. Due to the inversion of control (IoC) required
by the introduction of asynchronous APIs, the code becomes significantly more
complex. It ends up with being either a multi-agent system with lots of
messages passed around between agents, or an untangleable call-callback mess.

We will create an abstraction of the different types of asynchronous and
synchronous methods and structures that will allow us to write our programs in
a purely imperative manner, while leaving all the complexities of IoC to the
C++ compiler. The abstraction we will use is a relaxed variant of the
continuation monad. This approach will provide a similar set of features to
the await keyword proposed in N3564[1] while giving us more power, because
this abstraction will be usable not only for asynchronous execution, but will
be applicable to other monadic environments as well. And, unlike await, it can
be used with already released compilers.

We will be able to mimic all control structures provided by the host language
like serial execution, different loop types, branching and similar, along with
some more advanced ones like the different kinds of parallel execution or
automatic transaction management.

This approach eases the development in many cases like implementing the
networking clients or servers where we are not allowed to block the program
execution between sending a request and receiving a response; programs that
use a limited thread pool or thread-reusing with the producer-consumer design
pattern; programs that need to invoke an external process and handle its
output data in chunks or as a whole; programs that have more complex user (UI)
flows; distributed programs and similar.

It also eases up automatic testing, static analysis, and formal proving of
your programs, as we will demonstrate.

The work is heavily based on some of the new C++11 features like variadic
templates and lambdas, while also demonstrating some older template meta-
programming idioms like static introspection with SFINAE.

Purchased
In cart
0 ₽
0 ₽
$0
$0
€ 0
€ 0
Get access to all talks
Purchased
In cart
0 ₽
0 ₽
$0
$0
€ 0
€ 0

Денис Кормалёв

Ведущий программист at Опенсофт

Метаобъектная система Qt

Из-за возможностей метаобъектной системы некоторые аспекты Qt кажутся магическими. Но если копнуть поглубже – становится понятно, что это всего лишь удачные технические решения, выверенные многими годами существования Qt. В этом докладе будет рассмотрено как работает moc, для чего нужна метаобъектная система и почему ее не надо бояться.

Purchased
In cart
0 ₽
0 ₽
$0
$0
€ 0
€ 0

Григорий Демченко

Старший разработчик at Яндекс

Distributed Portals Using Coroutines

Common coroutines usage is to develop asynchronous code in a synchronous manner. It allows to apply several interesting idioms like code execution migration from one thread to another using user-space context switching. It appears that the migration mechanism between threads can be further extended by applying distributed coroutines approach allowing building distributed applications without using explicit serialization procedures.

Purchased
In cart
0 ₽
0 ₽
$0
$0
€ 0
€ 0

Guntram Berti

Freelance Consultant at Dr. Guntram Berti CMM

Generic programming

Technical and scientific applications dealing with a high computational load today face the challenge to match the increasingly parallel nature of current and future hardware. The talk shows how the increased complexity of software can be controlled by using generic programming technologies. The process and its advantages are introduced using many concrete examples, starting from simple operations on sequences (like sum/reduce or local filters), then moving into higher-dimensional applications like image processing and finally to particle methods based on dynamic neighborhood graphs.

Purchased
In cart
0 ₽
0 ₽
$0
$0
€ 0
€ 0

Антон Полухин

Старший разработчик C++ at Яндекс

Библиотека Boost с нуля на примере Boost.DLL

Today we’ll start from the very beginning of library creation, we’ll take a look into Boost recommendations for library authors, useful tools and Boost review process.

So you’re a developer and your goal is to write a new useful high quality library. Where should you start?

First of all, you need to find a problem to be solved by your library. Then a good way for solving the problem must be found. And then goes the implementation:
* Do we care about mobile devices and MacOS/Linux/Windows?
* Do we need C++11 or C++98?
* How to organize testing?
* What tools to use?
* What else must be in your library?
* How to make the library popular and really useful?
* What steps must be done to submit library into Boost?
* How does the library review looks like?
* What goes after the acceptance?

Purchased
In cart
0 ₽
0 ₽
$0
$0
€ 0
€ 0

Михаил Матросов

Ведущий разработчик at Align Technology

С++ without new and delete

Со времён С++98 стандартные контейнеры и идиома RAII позволяли избегать использования оператора delete,
что делало код более безопасным. С приходом С++11 и умных указателей отпала необходимость использовать оператор new, что позволило практически полностью переложить управление памятью на плечи компилятора. В
докладе объясняется идеология управления памятью и ресурсами в современном С++.


Purchased
In cart
0 ₽
0 ₽
$0
$0
€ 0
€ 0

Игорь Гусаров

Эксперт по разработке программного обеспечения at Лаборатория Касперского

Оптимизация трассирования с использованием Expression templates

В докладе будет рассказано о тех фундаментальных причинах, приводящих к неоптимальному коду в продукте, будет предложен подход, лишённый найденных недостатков.
Докладываемый подход опирается на технологию Expression Templates, которая позволяет уменьшить количество действий и объём ресурсов, которые требуются для выполнения неких промежуточных действий в процессе формирования каждой записи в журнал. Эта технология используется для уменьшения количества промежуточных операций при вычислении сложных математических выражений. Новизна докладываемого подхода в том, что тот же самый принцип, на котором основана технология Expression Templates можно применить для того, чтобы целенаправленно исключить те промежуточные действия, которые в конечном итоге приводят к неоптимальному коду.
Завершается доклад обсуждением полученного эффекта, путей возможного дальнейшего развития и возможностей применения этой же технологии в других задачах.

Purchased
In cart
0 ₽
0 ₽
$0
$0
€ 0
€ 0

Константин Облаков

Разработчик at Яндекс

Практика Lock-free. RealTime-сервер

В докладе пойдёт речь о практическом применении lock-free структур и алгоритмов, которые используются в RealTime-Поиске в Яндексе. Из-за сложности теоретических исследований по lock-free и оторванности от практики часто создаётся впечатление, что это просто развлечение для знатоков computer science и не может быть использовано в реальном проекте. Будут рассмотрены проблемы традиционного подхода к lock-free и показано, как взглянув по новому на всю идею lock-free, добиться максимальной производительности, невозможной при использовании блокировок.

Purchased
In cart
0 ₽
0 ₽
$0
$0
€ 0
€ 0

Tickets

Video
Access to all videos
Purchased
In cart
0 ₽
0 ₽
$0
$0
€ 0
€ 0

Organizer

C++ User Group
http://cpp-russia.ru

Organizer committee: Сергей Платонов, conf@cpp-russia.ru, 79052927713

Similar events

September 24-29 2017
Talks 139
Views 1.72 M
c++, development, код, программирование, разработка, язык программирования
August 25-26 2017
Talks 8
Views 10.21 K
c++, development, код, программирование, разработка
February 24-25 2017
Talks 26
Views 71.82 K
c++, development, код, программирование, разработка
more