х2020 Spring2019 Autumn2019 Spring2018 Autumn2018 Spring2017 Autumn2017 Spring2017 Winter2016 Autumn2016 Summer20162015

C++ CoreHard Spring 2020 Conference

C++ CoreHard Spring 2020 – очередная конференция для C++ разработчиков.

Организаторами выступает сообщество CoreHard.by , объединяющее не только С++ разработчиков, но и тех, кто интересуется С, ассемблером, промышленными контроллерами и высоконагруженными серверными решениями.

Конференция пройдет в 2 дня: 10 апреля - день мастер-классов, 11 апреля - день докладов

Официальные языки конференции: русский, английский

Билеты
Дата Мастер-класс (10.04) Конференция (11.04)
01.02.2020 - 29.02.2020 450 BYN 260 BYN
01.03.2020 - 31.03.2020 500 BYN 300 BYN
01.04.2020 - 10.04.2020 550 BYN 340 BYN

Хотите выступить с докладом? Оставляйте заявку


#CoreHardBy

Мы следуем Берлинскому кодексу поведения

Выступают

Мастер-классы, 10 апреля

  • 9:30 - 10:00

    Регистрация на мастер-классы

  • 10:00 - 14:00

    Шустрый и современный C++

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

    В любой большой кодовой базе можно встретить куски абсолютно непонятного кода. Как правило такой код пишется чтобы немного выиграть в производительности приложения... и как правило такой код не нужен в принципе, так как оптимизирует не то что нужно, не в том месте где это нужно и не так как надо.
    В ходе мастер класса мы натолкнёмся на особенности аллокаторов, оптимизаторов и имплементаций контейнеров; посмотрим на ассемблерный код; научимся правильно и понятно писать быстрые однопоточные и многопоточные приложения.
    Для курса понадобится всего лишь базовые знания C++ и компилятор с поддержкой C++11 (как минимум Visual Studio 2013, или Clang-3.3, или GCC-4.8).

  • 14:00 - 15:00

    Обед

  • 15:00 - 19:00

    Шустрый и современный C++

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

    В любой большой кодовой базе можно встретить куски абсолютно непонятного кода. Как правило такой код пишется чтобы немного выиграть в производительности приложения... и как правило такой код не нужен в принципе, так как оптимизирует не то что нужно, не в том месте где это нужно и не так как надо.
    В ходе мастер класса мы натолкнёмся на особенности аллокаторов, оптимизаторов и имплементаций контейнеров; посмотрим на ассемблерный код; научимся правильно и понятно писать быстрые однопоточные и многопоточные приложения.
    Для курса понадобится всего лишь базовые знания C++ и компилятор с поддержкой C++11 (как минимум Visual Studio 2013, или Clang-3.3, или GCC-4.8).

  • 9:30 - 10:00

    Регистрация на мастер-классы

  • 10:00 - 14:00

    Concurrency with modern C++ [English]

    Rainer Grimm

    Course Description
    This class gives you a detailed insight into the multithreading facilities of C++11, C++14, and the parallel algorithms which we got with C++17.

    Additionally, we will have a look into the C++ memory model consisting of the atomics and the various memory orders in C++. This insight will provide you with a better understanding of the general concurrency features of C++.

    Prerequisites
    Participants should have a basic knowledge of the C++ language and the fundamentals of multithreading.

    In the class, I will give you a concise introduction to the topic. This introduction provides the starting point for the exercises; therefore, you should bring your laptop with you including a C++11 or C++14 compiler.

    You will get in return the training material consisting of the presentation, the exercises, and the solutions to the exercises.

    Course Topics
    - Multithreading
    -- Threads
    -- Shared Data
    -- Mutexes and Locks
    -- Thread-safe Initialisation
    -- Thread-Local Data
    -- Condition Variables
    -- Tasks (Promises and Futures)
    -- Parallel STL
    - Memory Model

  • 14:00 - 15:00

    Обед

  • 15:00 - 19:00

    Concurrency with modern C++ [English]

    Rainer Grimm

    Course Description
    This class gives you a detailed insight into the multithreading facilities of C++11, C++14, and the parallel algorithms which we got with C++17.

    Additionally, we will have a look into the C++ memory model consisting of the atomics and the various memory orders in C++. This insight will provide you with a better understanding of the general concurrency features of C++.

    Prerequisites
    Participants should have a basic knowledge of the C++ language and the fundamentals of multithreading.

    In the class, I will give you a concise introduction to the topic. This introduction provides the starting point for the exercises; therefore, you should bring your laptop with you including a C++11 or C++14 compiler.

    You will get in return the training material consisting of the presentation, the exercises, and the solutions to the exercises.

    Course Topics
    - Multithreading
    -- Threads
    -- Shared Data
    -- Mutexes and Locks
    -- Thread-safe Initialisation
    -- Thread-Local Data
    -- Condition Variables
    -- Tasks (Promises and Futures)
    -- Parallel STL
    - Memory Model

  • 9:30 - 10:00

    Регистрация на мастер-классы

  • 10:00 - 14:00

    Modern C++ Design Patterns [English]

    Klaus Iglberger

    Design patterns have proven to be useful over several decades and knowledge about them is still very useful to design robust, decoupled systems. Modern C++, however, has profoundly changed the way we use C++, think about design and implement solutions. This hands-on training explores modern C++ design and the modern forms of the classic design patterns. It provides guidelines, idioms and best practices for sustainable and maintainable design, which enable programmers to create professional, high-quality code. Amongst others it will answer the following questions:
    - How does good C++ design with a minimum of dependencies look like?
    - Why does classical C++ design based on inheritance hierarchies fail so often?
    - What advantages does value semantics based design provide?
    - How are the classic design patterns realised in modern C++?
    - What are alternatives to the classic design patterns?

    After this course, participants will ...
    ... have an impression on the modern alternatives of classic design patterns;
    ... have gained knowledge about modern design techniques;
    ... understand how std::function, std::any, and ranges work;
    ... avoid the usual pitfalls in the context of inheritance;
    ... know about the importance of value semantics.

    Classic Design Patterns Revisited:
    - Command
    - Prototype
    - Strategy
    - Observer
    - Visitor
    - Factory
    - Decorator
    - Template Method
    - Singleton

    Modern Design Patterns:
    - Type Erasure
    - CRTP
    - Expression Templates
    - Policy Based Design

  • 14:00 - 15:00

    Обед

  • 15:00 - 19:00

    Modern C++ Design Patterns [English]

    Klaus Iglberger

    Design patterns have proven to be useful over several decades and knowledge about them is still very useful to design robust, decoupled systems. Modern C++, however, has profoundly changed the way we use C++, think about design and implement solutions. This hands-on training explores modern C++ design and the modern forms of the classic design patterns. It provides guidelines, idioms and best practices for sustainable and maintainable design, which enable programmers to create professional, high-quality code. Amongst others it will answer the following questions:
    - How does good C++ design with a minimum of dependencies look like?
    - Why does classical C++ design based on inheritance hierarchies fail so often?
    - What advantages does value semantics based design provide?
    - How are the classic design patterns realised in modern C++?
    - What are alternatives to the classic design patterns?

    After this course, participants will ...
    ... have an impression on the modern alternatives of classic design patterns;
    ... have gained knowledge about modern design techniques;
    ... understand how std::function, std::any, and ranges work;
    ... avoid the usual pitfalls in the context of inheritance;
    ... know about the importance of value semantics.

    Classic Design Patterns Revisited:
    - Command
    - Prototype
    - Strategy
    - Observer
    - Visitor
    - Factory
    - Decorator
    - Template Method
    - Singleton

    Modern Design Patterns:
    - Type Erasure
    - CRTP
    - Expression Templates
    - Policy Based Design

Конференция, 11 апреля

  • 9:30 - 10:00

    Регистрация

  • 10:00 - 10:10

    Открытие

  • 10:10 - 11:10

    Embrace No-Paradigm Programming! [English]

    Klaus Iglberger

    What kind of language is C++? Is it a procedural programming language? An object-oriented programming language? A functional programming language? A generic programming language? All of those? None of those? In this talk I’ll analyse why it is increasingly hard to answer these questions, especially since the advent of “Modern C++”. I’ll demonstrate by example that the good solutions, i.e. the solutions that promote loose coupling, ease of use, ease of maintenance, and performance, are not firmly rooted in either one of the traditional paradigms. The examples will raise doubt whether it is reasonable to try to assign C++ to any one of the paradigms. Instead, they may be an indication that we should embrace no-paradigm programming.

  • 11:30 - 12:30

    Best practices in modern C++ [English]

    Rainer Grimm

    I want to start with a question: Why do we need Guidelines such as the C++ Core Guidelines for Modern C++? My answer consists of three observations: C++ is complicated for the novice, challenging for the professional, and used in safety critical environments. Guidelines should give us the means to write type safe, bounds safe, and lifetime safe code by design. My presentation gives you a concise insight into the lifesaving rules of the C++ Core Guidelines to write safe C++ code by design. I cover in my presentation topics such as interfaces, functions, classes and class hierarchies, resource management, Expressions and statements, error handling, constants and immutability, templates and generic programming, concurrency and the standard library.

  • 12:50 - 13:50

    Настоящее и будущее copy elision

    Антон Полухин и Роман Русяев

    Copy elision - важная и неотъемлемая языковая оптимизация, которая позволяет нам избавляться от лишних копирований и перемещений, что благоприятно сказывается на производительности приложений. Ни один разработчик не представляет себе компилятор, который не умеет NRVO. Но насколько copy elision действительно избавляет нас от лишних конструирований копий объектов? В каких случаях он способен это делать, а в каких - нет, и почему? А можно ли что-то сделать, чтобы его улучшить, и как это улучшение повлияет на производительность наших программ и на написание кода? Данный доклад является ответом на все эти вопросы и не только. Мы расскажем о новом пропозале в Стандарт - ultimate copy elision, и покажем как он улучшит жизнь разработчиков на C++!

  • 14:00 - 15:00

    Обед

  • 15:00 - 16:00

    Postmodern immutable data structures [English]

    Juan Pedro Bolívar Puente

    The C++ elites have been talking for years about value semantics, immutability, and sharing by communicating. A better world without mutexes, races, observers, command patterns and so more lies ahead! When it comes to doing it in practice, it is not so easy. One of the main problem lies in our data structures... Immutable data structures don't change their values. They are manipulated by producing new values. The old values remain there, and can be read safely from multiple threads without locks. They provide structural sharing, because new and old values can share common data — they are fast to compare and can keep a compact undo-history. As such, they are great for concurrent and interactive systems: they simplify the architecture of desktop software and allow servers to scale better. They are the secret sauce behind the success of Clojure and Scala, and even the JavaScript crowd is loving it via Facebook's Immutable.js. We are presenting Immer, a C++ library implementing modern and efficient data immutable data structures. In this session, we will talk about the architectural benefits of immutability and show how a very efficient yet powerful persistent vector type can be built using state of the art structures (Relaxed Radix Balanced Trees). We will also show an example application (a text-editor) built using the architectural style here proposed. Not only is its code extremely simple, it outperforms most similar programs. Don't believe it? Come and see!

  • 16:20 - 17:20
  • 17:40 - 18:40

    Types, Tests and Total Functions - a Perfect Storm [English]

    Phil Nash

    When static vs. dynamic language debates flare up, someone invariably says that static languages are best because the compiler catches so many potential bugs. To which the dynamic language advocates say, "that doesn't happen very often, and when it does your tests will catch it - you do have tests, don't you?" Meanwhile, the debate about how to do error handling is almost as religious - do you do exceptions, error codes, assertions, contracts or something like optionals or result/ expected types? Could it be that all these concerns are related - and that understanding _how_ they are related may help us to resolve these conflicts once and for all. More importantly, can we take the best of all worlds to arrive at the nirvana of understandable, maintainable, robust, correct, code? These are the questions we will ponder, and hopefully answer.

  • 19:00 - 21:00

    Вечеринка

  • 9:30 - 10:00

    Регистрация

  • 10:10 - 11:10

    Embrace No-Paradigm Programming! [English]

    Klaus Iglberger

    What kind of language is C++? Is it a procedural programming language? An object-oriented programming language? A functional programming language? A generic programming language? All of those? None of those? In this talk I’ll analyse why it is increasingly hard to answer these questions, especially since the advent of “Modern C++”. I’ll demonstrate by example that the good solutions, i.e. the solutions that promote loose coupling, ease of use, ease of maintenance, and performance, are not firmly rooted in either one of the traditional paradigms. The examples will raise doubt whether it is reasonable to try to assign C++ to any one of the paradigms. Instead, they may be an indication that we should embrace no-paradigm programming.

  • 11:30 - 12:30
  • 12:50 - 13:50

    История развития анализатора PVS-Studio: от C++ парсера до сосулек

    Юрий Минаев

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

  • 14:00 - 15:00

    Обед

  • 15:00 - 16:00
  • 16:20 - 17:20
  • 17:40 - 18:40

    Types, Tests and Total Functions - a Perfect Storm

    Phil Nash

    When static vs. dynamic language debates flare up, someone invariably says that static languages are best because the compiler catches so many potential bugs. To which the dynamic language advocates say, "that doesn't happen very often, and when it does your tests will catch it - you do have tests, don't you?" Meanwhile, the debate about how to do error handling is almost as religious - do you do exceptions, error codes, assertions, contracts or something like optionals or result/ expected types? Could it be that all these concerns are related - and that understanding _how_ they are related may help us to resolve these conflicts once and for all. More importantly, can we take the best of all worlds to arrive at the nirvana of understandable, maintainable, robust, correct, code? These are the questions we will ponder, and hopefully answer.

  • 19:00 - 21:00

    Вечеринка

  • 9:30 - 10:00

    Регистрация

  • 10:10 - 11:10

    Embrace No-Paradigm Programming! [English]

    Klaus Iglberger

    What kind of language is C++? Is it a procedural programming language? An object-oriented programming language? A functional programming language? A generic programming language? All of those? None of those? In this talk I’ll analyse why it is increasingly hard to answer these questions, especially since the advent of “Modern C++”. I’ll demonstrate by example that the good solutions, i.e. the solutions that promote loose coupling, ease of use, ease of maintenance, and performance, are not firmly rooted in either one of the traditional paradigms. The examples will raise doubt whether it is reasonable to try to assign C++ to any one of the paradigms. Instead, they may be an indication that we should embrace no-paradigm programming.

  • 11:30 - 12:30
  • 12:50 - 13:50
  • 14:00 - 15:00

    Обед

  • 15:00 - 16:00
  • 16:20 - 17:20
  • 17:40 - 18:40

    Types, Tests and Total Functions - a Perfect Storm

    Phil Nash

    When static vs. dynamic language debates flare up, someone invariably says that static languages are best because the compiler catches so many potential bugs. To which the dynamic language advocates say, "that doesn't happen very often, and when it does your tests will catch it - you do have tests, don't you?" Meanwhile, the debate about how to do error handling is almost as religious - do you do exceptions, error codes, assertions, contracts or something like optionals or result/ expected types? Could it be that all these concerns are related - and that understanding _how_ they are related may help us to resolve these conflicts once and for all. More importantly, can we take the best of all worlds to arrive at the nirvana of understandable, maintainable, robust, correct, code? These are the questions we will ponder, and hopefully answer.

  • 19:00 - 21:00

    Вечеринка

Организаторы

  • CoreHard

Партнеры

  • DPI Solutions

Сообщества-партнеры

  • C++ Russia
  • CppCon Conference
  • Core C++ Conference

Инфопартнеры

  • Kaspersky Lab
  • DMK press