On April 7 - 8, the CoreHard community held in Minsk the 8th CoreHard Spring 2018 international conference on the C ++ language and related hardcore technologies. The conference was attended by speakers from leading IT companies in Belarus, Russia, Ukraine, Germany and the Netherlands. They talked about their experiences in development and testing.
Now reports from the conference are freely available on YouTube and everyone can get acquainted with them. We thank the organizers of the conference.
The author of the report met C ++ in 1991, and since 1992, C ++ has been the main development language for the speaker. What happened to the language during this time? How and why did it become popular? How did stagnation in C ++ start? How did C ++ lose its popularity? Is there a place for C ++ in the modern world? Let's try to talk about it, based on 25 years of C ++ programming experience.
Let's talk about how the approaches to working with game objects in match 3 games have changed, and how we came to the current feature-component approach to creating changeable game objects. What are its advantages over the rest of the tried and tested approaches for creating tutorials, numerous modes, as well as code reuse.
We'll talk about the interception of functions in applications written in various languages and technologies. The report will consider: basic concepts, areas of application, types of interception methods and their technical features, ready-made libraries.
In the report, the author talks about his practical experience of compiling and using C ++ on web pages, about what needs to be done to port an application to C ++ under the web, about the limitations associated with this, about integrating C ++ code with JavaScript and other web elements pages.
3.5 blockchains in 2 megabytes: how, why and why. Features of the development of cross-platform solutions for the blockchain.
In this report, the author tells that Obj-C / C ++ is an extension of existing C / C ++. There will also be considered features of the language, talked about memory management (retain / release vs. ARC vs. shared_ptr / unique_ptr), Swift, and why it is better or worse Obj-C / C ++.
In C ++, there are many ways to solve the same problem. We will take the real problem from the author’s practice and explore a number of C ++ tools to solve it: STL containers, boost.range, C ++ 20 ranges, coroutines. We will compare solutions in terms of their interfaces and performance, and also see how one solution can be easily obtained from another if the code is properly organized. In the process, we will look at C ++ 17 features: constexpr if, selection statements with initializer, std :: not_fn, etc. Special attention will be paid to standard algorithms (my favorite topic).

Data Flow Analysis (data flows) is a technology for analyzing the source code of programs, widely used in various development tools: compilers, linters, IDE. We will talk about it on the example of the development of a static analyzer. Consider the classification and various types of Data Flow analysis, related technologies that complement each other and the problems that arise during its development, and the surprises that C ++ presents to us when we try to analyze it. During the report, we will examine several errors found in real projects using this technology.

It happens that sometimes your application starts to perform long, seemingly everyday tasks and consume a large amount of RAM. And you, as a developer, have no idea why this is happening (but you are interested). In the course of the report we will talk about the means that can understand the reasons for the strange behavior of our programs. If you are not afraid of such words as Valgrind, gprof, gperftools and many others - welcome!
How to quickly and easily set up / update environments for cross-compiling projects for different platforms (based on docker), how to quickly switch between them, how to use these building blocks to organize CI and testing (based on GitLab and Docker).
The report will consider the generation of code when compiling various language constructs, both simple and complex, on different platforms, both common x86 / x64, and those that receive less attention: ARM, AVR. There will also be examples for very exotic processors like PowerPC and even MicroBlaze. The focus will be not on data processing, but on comparing different code designs with instructions of target platforms.
Today's programming is divided into many areas that are quite far from each other. Does conceptually single programming exist at all and what is this unity based on? Answers to these and other questions are given by the author of the report.
The devil is in the detail. This also applies to C ++ 17. We get you some cool things to do. When they may lead to surprises.
Discussions
Do not miss the discussions, which raised various topics on the discussion of the Rust and C ++ languages, as well as the answers to the questions of the C ++ members of the Standardization Committee.