The C++ CoreHard Spring 2018 is a conference dedicated to C++ and related hardcore technologies.
The conference is being organized by the CoreHard.by community that unites not only C++ engineers, but also those who are interested in low-level development in C and Assembler, programming of controllers, Internet of Things, highload server solutions and in any kind of “hardcore” development.
The conference will take 2 days: April 7 - talks day, April 8 - master class day
Official conference languages: Russian, English
Want to present a talk? Submit a proposal
A representative of Russian working group (RG 21 RF) at C++ Standardization Committee. Author of several accepted proposals to the C++ standard. Author of the following Boost libraries: TypeIndex, DLL, Stacktrace; maintainer of Any, Conversion, LexicalCast, Variant. Author of "Boost C++ Application Development Cookbook" and "Boost C++ Application Development Cookbook, Second Edition" books.
Nicolai Josuttis (http://www.josuttis.com) is an independent systems architect, technical manager, author, and consultant. He designs mid-sized and large software systems for the telecommunication, traffic, finance, and manufacturing industries. He is well known in the C++ Community for speaking and writing with authority about C++ (being the author of 'The C++ Standard Library', 'C++ Templates', and 'C++17 - The Complete Guide') but is also an innovative presenter. He is an active member of C++ standardization committee for more than 20 years now.
Computer scientist by education, electronics engineer by passion. Worked on industry and space projects, runs a small webshop, teaches (mainly) embedded C++ programming. Likes abstraction, but hates overhead.
Ph.D, 10 years of academic experience: lectures about programming for students, including Kiev National Taras Shevchenko University. 10+ years in software development (mainly in C++ and C#), focusing on data backup and restore. Vadim is an author of books "Algorithmic Languages and Basics of Programming: C language" and "Basics of Object-Oriented Programming in C++", as well as 29 publications in theory ofprogramming; translated into Russian "Principles of Object-oriented Software Development" by Anton Eliens and "Unifying Theories of Programming" by C.A.R.Hoare and He Jifeng. Now: technical lead developer at SolarWinds, develops a project in network security area. Interested in programming: C++ and functional languages (especially Haskell).
Graduated from M.V.Lomonosov Moscow State University, faculty of Computational Mathematics and Cybernetics. Worked at the University, in the Laboratory of Computer Graphics and Multimedia, where dealt with image processing, computer vision and colour theory. Now: technical manager at Moscow R&D office of Aligh Technology. Develops and supports a CAD system for orthodontics. Speaker at C++ Russia conference. Author of NativeViewer extension for Visual Studio (http://sourceforge.net/projects/nativeviewer).
12 years of experience in IT. 6 years of mobile development. Strong knowledge of software development cycle, methodologies and practices.
Develops data backup and recovery software. In his spare time, actively contributes to Boost.Algorithm, is also interested in text processing algorithms. Devotes rest of the time to WG21 helping to improve C++.
C/C++ developer. 10 years of experience in IT. Deals with data backup and recovery software development. Has a great experience in system programming and analysis of closed systems on Windows. Now participates in driver development for Windows - in particular, file system driver.
8 years in mobile gamedev. Our game "Need a Hero" took 2 awards at DevGamm 2014, the best game at Winter Nights SPB 2014
Software developer with more than 20 years experience. Took part in engineering of 24/7 systems in domains of Industrial Control System, Telecoms and payment systems. In the latest years dedicates himself to the engineering of the OpenSource project that's making C++ multi-threaded applications development easier.
Develops, for more than 10 years, software for spaceship component test bench facilities. Works with C++ (for low-level tasks and interactions with hardware) and C#/.NET (for client side). In his spare time, enjoys embedded programming for microcontrollers.
Indie developer: mobile applications and web services. Game developer in the past (graphics programmer), was involved into serious games development as a lead developer - namely, worked on "Virtual Sochi 2014" project for Sochi Olympic Games. Work experience: 11 years. PhD in technical sciences.
C/C++ dev, embedded linux, computer vision enthusiast
Architect at PVS-Studio team. Oversees static analyzer's core development as well as Linux and macOS versions. Uses Visual Studio as well, when it's necessary.
Developer in a World of Tanks division of Wargaming company. Participated in CAD system development, as well as SCADA for an industrial control system. Now develops World of Tanks game client. In his spare time, deals with computer vision and machine learning.
C++ Standardization Committee members
Developer with 13 years of experience, entrepreneur, blockchain enthusiast. Architect and main author of a multicurrency wallet called Multy.
The author got acquainted with C++ in 1991; starting from 1992, C++ became his primary language. What was happening to the language along this time? How and why did it become so popular? How did stagnation in C++ language development begin? How has C++ lost its popularity? Is there a place for C++ in the modern world? Let us try to talk about these topics based on 25 years of programming in C++.
Along the whole history of programming, sequential elementwise processing of various kinds of collections has been and still is one of the most common practical tasks. Internal representation of the collections, as well as the algorithm used to fetch subsequent elements, may vary in a very wide range: array, linked list, tree, hash table, file et al. However, behind the variety of idioms, standard library functions, ad-hoc solutions, one can reveal the essence that remains invariant for that whole class of tasks. This talk aims to show a step-by-step transition from algorithms based on explicit description of actions over individual elements towards high-level, declarative processing tools that treat a collection as an entity and adequately reveal the logic of the domain.
In C++ you can solve a single task in a multiple ways. We will pick an actual task from production, and investigate how it can be solved with a number of tools that C++ provides: STL containers, boost.range, C++20 ranges, coroutines. We will compare API constraints and performance of different solutions, and how they can be easily converted from one to another if the code is well-structured.
Ask any tricky question to the members of C++ Standardization Committee
Data flow analysis is a technology for source code analysis, widely used in various development tools: compilers, linters, IDE. We'll talk about it exemplifying with design of a static analyzer. The talk covers classification and various kinds of data flow analysis, neighbouring technologies supporting each other, obstacles arising during development, surprises from C++ language when one tries to analyze the code. In this talk, some errors, detected in real projects using this technology, are shown in detail.
How to easy and quickly setup/update developers' environment(based on Docker) to project's crosscompilation for different targets, how to quickly switch between environments, how to organize continuous integration and testing using GitLab and Docker.
It happens sometimes that an application begins to run aparently simple computation too long consuming too much memory. As a developer, you have no idea why is it so and you are curious. Let us talk about tools that might help us to understand the weird behavior of our programs. If you are not scared with words like Valgrind, gprof, gperftools and others, - welcome!
The talk deals with code generation when compiling various constructs of the language, from simple to complex, on different platforms: from widely known as x86/x64 to less familiar like ARM and AVR. There will be also examples for very exotic processors such as PowerPC or even MicroBlaze. The main focus will be made not on data processing but rather on mapping of various code constructs onto instructions of the target platform.
3,5 blockchains in 2 MB: how, what and why. Developing cross-platform blockchain solutions
Ask any question to the members of C++ Standardization Committee
I will talk about intercepting functions in applications created in various languages and technologies. The talk will cover: basic notions application areas, interception techniques, their technical details and ready-to-use libraries.
CTO of Alis Game will tell about changes in approaches to game object processing in match 3 games over time, and how did a feature-component approach to creation of changable game objects arise; what are its upsides compared to other known and used approaches to tutorials, various modes, and to code reusing techniques.
В этом докладе я хочу рассказать о том, что Obj-C/C++ — это расширение существующих C/C++. В данном докладе будут рассмотрены особенности языка, будет рассказано про управление памятью (retain/release vs. ARC vs. shared_ptr/unique_ptr), про Swift и почему он лучше или хуже Obj-C/C++.
Ask any tricky question to the members of C++ Standardization Committee
In any large codebase you can always find pieces of code which are not totally understandable. Mostly, such kind of code is implemented when the application needs some performance boost... and, mostly, that code is not useful because it optimizes functionality in wrong place, in incorrect way and in not a good way. During our masterclass we will get to know to the allocators features, optimizers and implementations of containers; look at assembler code; learn how to correctly and clearly write fast single-threaded and multi-threaded applications. You only need a complier with C++ 11 support (at least VS 2013/Clang-3.3/GCC-4.8) and basic C++ knowledge
C++ language is changing all the time. For common practical tasks that did require special ingenuity from a programmer, new clear and neat features get introduced either into the language itself or into the standard library or into Boost library. The dark side of the language development is that many programmers cannot catch all the changes and keep using C++98 style. Except this, programmers in their everyday work often have to work with a legacy code created many years ago that could be made much shorter and more evident if use the new features. To achieve that goal, however, the language features need to become evident for the programmers first. The workshop will show features introduced into C++ 11, 14 and 17 still used not by everyone. For this workshop, participants need a laptop with an installed C++ compiler of a version supporting C++17 (and earlier standards).
C++17 is out for a year now and at least partially supported by Clang, GCC, and Visual Studio. While C++ is no revolution and changes the style of programming (as C++11 did), it is a remarkable collection of many many features both in the core language and the library. It might look that all this is easy to learn and to use. But beware, C++17 is a lot more complex than it looks like. There are nice hidden features, significant remarkable design issues, and important pitfalls (especially when combining new features). This tutorial discusses the new features with the focus of remarkable applications and traps that can occure in practice.