C++ Russia, 2015

27-28 февраля 2015
Москва, Россия
Смотреть
В избранное

Sean Parent

Principal scientist в Adobe

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

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

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

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

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

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

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

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

О мероприятии

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

Для кого

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

Расписание

Развернуть все
 
Получить доступ ко всем докладам
Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €

Sean Parent

Principal scientist в 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.

Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €

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

Cтарший разработчик в Лаборатория Касперского
и ещё 1
докладчик

Практика использования 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 для упрощения решения таких задач.

Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €

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

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

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

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

Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €

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

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

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

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

Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €

Zoltán Porkoláb

Software developer в 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.

Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €

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

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

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

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

Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €

Rainer Grimm

Trainer в 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.

Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €

Bartosz Milewski

Software Architect в ‎Reliable Software

Categories for the Working C++ Programmer


Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €

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

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

Цена ошибки

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

Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €

Ivan Cukic

Сore developer в 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.

Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €
Получить доступ ко всем докладам
Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €

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

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

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

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

Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €

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

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

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.

Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €

Guntram Berti

Freelance Consultant в 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.

Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €

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

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

Библиотека 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?

Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €

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

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

С++ without new and delete

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


Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €

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

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

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

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

Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €

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

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

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

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

Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €

Билеты

Видеозапись
Доступ к записям всех докладов
Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €

Организатор

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

Организационный комитет: Сергей Платонов, conf@cpp-russia.ru, 79052927713

Похожие мероприятия

24-29 сентября 2017
Докладов 139
Просмотров 6
c++, development, код, программирование, разработка, язык программирования
25-26 августа 2017
Докладов 8
Просмотра 3
c++, development, код, программирование, разработка
24-25 февраля 2017
Докладов 26
Просмотров 9
c++, development, код, программирование, разработка
ещё