{"id":287892,"date":"2018-08-16T14:18:41","date_gmt":"2018-08-16T10:18:41","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=287892"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=287892","title":{"rendered":"\u0414\u043e\u043a\u043b\u0430\u0434\u044b \u0441 \u0432\u0435\u0441\u0435\u043d\u043d\u0435\u0439 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438 \u0421++ Russia 2018"},"content":{"rendered":"\n<div data-io-article-url=\"https:\/\/habr.com\/company\/pvs-studio\/blog\/418645\/\" class=\"post__text post__text-html js-mediator-article\">\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/if\/m8\/km\/ifm8kmasjfgchispcdfdx3-2ax0.png\"><\/div>\n<p>  \u0421 19 \u043f\u043e 21 \u0430\u043f\u0440\u0435\u043b\u044f \u0432 \u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433\u0435 \u043f\u0440\u043e\u0448\u043b\u0430 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u044f \u0421++ Russia 2018. \u0418\u0437 \u0433\u043e\u0434\u0430 \u0432 \u0433\u043e\u0434 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0438 \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043d\u0430 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0432\u044b\u0448\u0435, \u0447\u0442\u043e \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0440\u0430\u0434\u043e\u0432\u0430\u0442\u044c. \u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0431\u0435\u0441\u0441\u043c\u0435\u043d\u043d\u043e\u043c\u0443 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0442\u043e\u0440\u0443 \u0421++ Russia \u0421\u0435\u0440\u0433\u0435\u044e \u041f\u043b\u0430\u0442\u043e\u043d\u043e\u0432\u0443 \u0437\u0430 \u0435\u0433\u043e \u0432\u043a\u043b\u0430\u0434 \u0432 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f.<br \/>  <a name=\"habracut\"><\/a><br \/>  \u041d\u0430 19 \u0430\u043f\u0440\u0435\u043b\u044f \u0431\u044b\u043b\u0438 \u0437\u0430\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043c\u0430\u0441\u0442\u0435\u0440-\u043a\u043b\u0430\u0441\u0441\u044b, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435, \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043c\u044b \u043d\u0435 \u0441\u043c\u043e\u0433\u043b\u0438 \u043f\u043e\u043f\u0430\u0441\u0442\u044c, \u0430 20-21 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043b\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u044b \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u043c \u043f\u043e\u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0438. \u0421\u0435\u0440\u0433\u0435\u0439 <a href=\"https:\/\/habr.com\/users\/sermp\/\" class=\"user_link\">sermp<\/a> \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u043b \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u0438 \u043f\u0440\u0438\u0432\u043b\u0451\u043a \u043a \u0443\u0447\u0430\u0441\u0442\u0438\u044e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0434\u043e\u043a\u043b\u0430\u0434\u0447\u0438\u043a\u043e\u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0438\u043d\u043e\u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0445 \u0441\u043f\u0438\u043a\u0435\u0440\u043e\u0432. \u041f\u0435\u0440\u0432\u044b\u0439 \u0434\u0435\u043d\u044c \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u043b Jon Kalb \u2014 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0442\u043e\u0440 CppCon \u0438 \u0430\u0432\u0442\u043e\u0440 \u043a\u043d\u0438\u0433\u0438 C++ Today: The Beast is Back. \u0412\u0442\u043e\u0440\u043e\u0439 \u0434\u0435\u043d\u044c \u043d\u0430\u0447\u0438\u043d\u0430\u043b\u0441\u044f \u0441 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 Daveed Vandevoorde, \u0447\u043b\u0435\u043d\u0430 \u043a\u043e\u043c\u0438\u0442\u0435\u0442\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u0430\u0446\u0438\u0438, \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u0430\u0432\u0442\u043e\u0440\u043e\u0432 \u043a\u043d\u0438\u0433\u0438 C++ Templates: The Complete Guide. \u0412 \u044d\u043f\u0438\u0446\u0435\u043d\u0442\u0440\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f Andrei Alexandrescu, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0441\u043b\u0435 \u0441\u0432\u043e\u0435\u0433\u043e \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u043e\u0431 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\u0445 \u0432 \u043e\u0434\u0438\u043d \u043c\u043e\u043c\u0435\u043d\u0442 \u0441\u043e\u0431\u0440\u0430\u043b \u0446\u0435\u043b\u0443\u044e \u0442\u043e\u043b\u043f\u0443 \u0438\u0437 \u0436\u0435\u043b\u0430\u044e\u0449\u0438\u0445 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u0433\u0440\u0430\u0444 \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e\u0435 \u0444\u043e\u0442\u043e. \u0412\u043f\u0435\u0440\u0432\u044b\u0435 \u0431\u044b\u043b\u0430 \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0430 \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u044f \u0434\u043e\u043a\u043b\u0430\u0434\u0430 Herb Sutter \u043f\u043e Skype, \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0435\u0433\u043e \u043e\u0431 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0435 Spaceship \u0434\u043b\u044f \u0421++20. <\/p>\n<p>  \u0425\u043e\u0442\u044f \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u044f \u043f\u0440\u043e\u0448\u043b\u0430 \u0443\u0436\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 3 \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u043d\u0430\u0437\u0430\u0434, \u0432\u0438\u0434\u0435\u043e (<a href=\"https:\/\/www.youtube.com\/playlist?list=PLZN9ZGiWZoZoFa2q0NqD6metQxavT2JYP\">\u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442<\/a>) \u043f\u043e \u043d\u0435\u0439 \u0432\u044b\u043b\u043e\u0436\u0435\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u0439\u0447\u0430\u0441, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0441\u0432\u0435\u0436\u0438\u0442\u044c \u0432\u043e\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u044f \u0438 \u043f\u043e\u0433\u0440\u0443\u0437\u0438\u0442\u044c\u0441\u044f \u0432 \u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0421++.<\/p>\n<h3>Jon Kalb. <a href=\"https:\/\/youtu.be\/aI64OFHJDc4\">C++ Today: The Beast is Back<\/a><\/h3>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/qx\/qj\/4d\/qxqj4duts1eygoh4trgst-2i8bw.png\"><\/div>\n<p>  This talk covers why engineers looking for performance choose C++. Jon presents an historical perspective of C++ focusing on what&#8217;s going on in the C++ community right now and where the language and its user base is heading. With a renewed interest in performance for both data centers and mobile devices, and the success of open source software libraries, C++ is back and it is hot. This talk explains why C++ is most software engineers&#8217; go-to language for performance. You will receive a rough historical sketch that puts C++ in perspective and covers its popularity ups and downs.<\/p>\n<h3>Arno Sch\u00f6dl. <a href=\"https:\/\/youtu.be\/OI0YFgEscGQ\">From Iterators To Ranges<\/a><\/h3>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/g2\/wi\/1c\/g2wi1czg7ulvtypu_8xqlz1irdo.png\"><\/div>\n<p>  Pairs of iterators are ubiquitous throughout the C++ library. It is generally accepted that combining such a pair into a single entity usually termed Range delivers more concise and readable code. Defining the precise semantics of such Range concept proves surprisingly tricky, however. Theoretical considerations conflict with practical ones. Some design goals are mutually incompatible altogether.<\/p>\n<h3>Jonathan Boccara. <a href=\"https:\/\/youtu.be\/tO_drboJfxs\">105 STL Algorithms in Less Than an Hour<\/a><\/h3>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/jv\/lf\/ga\/jvlfga-cdxxb3furo797y5ezpfy.png\"><\/div>\n<p>  We are all aware that we should know the STL algorithms. Including them in our designs allows us to make our code more expressive and more robust. And sometimes, in a spectacular way.<\/p>\n<p>  But do you know your STL algorithms?<\/p>\n<p>  In this talk, the author presents 105 algorithms that the STL currently has, including those added in C++11 and C++17. But more than just a listing, the point of this talk is to present the different groups of algorithms, the patterns they form in the STL, and how the algorithms relate together.<\/p>\n<p>  This kind of big picture is the best way to actually remember them all, and constitute a toolbox chock-full of ways to make our code more expressive and more robust. <\/p>\n<h3>Viktor Kirilov. <a href=\"https:\/\/youtu.be\/dY9CFugqXmo\">Interactive C++ Compilation (REPL): The Lean Way<\/a><\/h3>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/zz\/bd\/4w\/zzbd4w9yrkytmf3aqgamwc6iafw.png\"><\/div>\n<p>  Ever wanted to modify some value or execute some statement while your C++ program is running just to test something out \u2014 not trivial or possible with a debugger? Scripting languages have a REPL (read-eval-print-loop). The closest thing C++ has is cling (developed by researchers at CERN) but it is built on top of LLVM and is very cumbersome to set up. RCRL (Read-Compile-Run-Loop) is a demo project showcasing an innovative approach to doing runtime C++ compilation in a platform and compiler agnostic way which can be easily embedded. In this presentation, it is shown how to use it, how it works and how it can be modified and integrated into any application and workflow.<\/p>\n<h3>Victor Ciura. <a href=\"https:\/\/youtu.be\/RKjvIZQO71c\">Enough string_view to hang ourselves<\/a><\/h3>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/bm\/gz\/sl\/bmgzslbc51pb7tc4f-jeaoywee4.png\"><\/div>\n<p>  Wouldn&#8217;t it be nice if we had a standard C++ type to represent strings? Oh, wait\u2026 we do: std::string. Wouldn&#8217;t it be nice if we could use that standard type throughout our whole application\/project? Well\u2026 we can&#8217;t! Unless we&#8217;re writing a console app or a service. But, if we&#8217;re writing an app with GUI or interacting with modern OS APIs, chances are that we&#8217;ll need to deal with at least one other non-standard C++ string type. Depending on the platform and project, it may be CString from MFC or ATL, Platform::String from WinRT, QString from Qt, wxString from wxWidgets, etc. Oh, let&#8217;s not forget our old friend const char*, better yet const wchar_t* for the C family of APIs\u2026<\/p>\n<p>  So we ended up with two string types in our codebase. OK, that&#8217;s manageable: we stick with std::string for all platform independent code and convert back-and-forth to the other XString when interacting with system APIs or GUI code. We&#8217;ll make some unnecessary copies when crossing this bridge and we&#8217;ll end up with some funny looking functions juggling two types of strings; but that&#8217;s glue code, anyway\u2026 right?<\/p>\n<p>  It&#8217;s a good plan\u2026 until our project grows and we accumulate lots of string utilities and algorithms. Do we restrict those algorithmic goodies to std::string? Do we fallback on the common denominator const char* and lose the type\/memory safety of our C++ type? Is C++17 std::string_view the answer to all our string problems?<\/p>\n<p>  The author tries to explore the options, together, with a case study on a 15 year old Windows application: Advanced Installer (www.advancedinstaller.com) \u2014 an actively developed C++ project, modernized to C++17, thanks to clang-tidy and \u00abClang Power Tools\u00bb (<a href=\"http:\/\/www.clangpowertools.com)\">www.clangpowertools.com)<\/a>\u2026<\/p>\n<h3>Andrei Alexandrescu. <a href=\"https:\/\/youtu.be\/CGwk3i1bGQI\">Expect the expected<\/a><\/h3>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/k4\/76\/5i\/k4765i7g8pxr-u0qfvk433pbfnk.png\"><\/div>\n<p>  Writing code that is resilient upon errors has always been a pain point in all languages. Exceptions are the politically correct means to signal errors in C++, but many applications still resort to error codes for reasons related to ease of understanding, ease of handling errors locally, and efficiency of generated code.<\/p>\n<p>  This talk shows how a variety of theoretical and practical artifacts can be combined together to address error codes and exceptions in one wholesome, simple package. The generic type Expected can be used for both local (error-code-style) and centralized (exception-style) manners, drawing from the strengths of each.<\/p>\n<h3>Borislav Stanimirov. <a href=\"https:\/\/youtu.be\/-s0zYXGCfJk\">DynaMix: A New Take on Polymorphism<\/a><\/h3>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/2r\/ji\/ej\/2rjiej_ldue2ztihyhwrgy7lhaa.png\"><\/div>\n<p>  Software with very complex business logic, such as games, CAD systems, and enterprise systems, often needs to compose and modify objects at runtime \u2014 for example to add or override a method in an existing object. Standard C++ has rigid types which are defined at compile time and make this hard. On the other hand, languages with dynamic types like lua, Python, and JavaScript make this very easy. Therefore, to keep the code readable and maintainable, and accomplish complex business logic requirements, many projects use such languages alongside C++. Some drawbacks of this approach include the added complexity in a language binding layer, the performance loss from using an interpreted language, and the inevitable code duplication for many small utility functionalities.<\/p>\n<p>  DynaMix is a library which attempts to remove, or at least greatly reduce, the need for a separate scripting language by allowing the users to compose and modify polymorphic objects at runtime in C++. This talk elaborates on this problem and introduces the library and its key features to potential users or people who might benefit form the approach with an annotated example and a small demo.<\/p>\n<h3>Mikhail Matrosov. <a href=\"https:\/\/youtu.be\/5dL-fqrg1ZE\">Versatile C++ applied<\/a><\/h3>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ao\/ox\/ha\/aooxhajausoz9zfpywpbrsz8wsa.png\"><\/div>\n<p>  In C++, you can solve a single task in a multiple ways. The author picks 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. He also compares API constraints and performance of different solutions, and how they can be easily converted from one to another if the code is well-structured. During the way the author also explores applications of some useful C++17 features like constexpr if, selection statements with initializer, std::not_fn, etc. Special attention is payed to topic \u2014 standard algorithms.<\/p>\n<h3>\u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440 \u0413\u0440\u0430\u043d\u0438\u043d. <a href=\"https:\/\/youtu.be\/VHZPcz8HwZs\">\u0424\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a Software Transactional Memory<\/a><\/h3>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/d-\/ty\/uh\/d-tyuhxlhdvvelofkinuwnmpyl4.png\"><\/div>\n<p>  \u041f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u2014 \u0442\u0435\u043c\u0430 \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e\u0433\u0440\u0430\u043d\u043d\u0430\u044f \u0438 \u0433\u043b\u0443\u0431\u043e\u043a\u0430\u044f. \u0417\u0430 \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u043b\u0435\u0442 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0439 \u0431\u044b\u043b\u043e \u0432\u044b\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043e \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u0432, \u043f\u0440\u0430\u043a\u0442\u0438\u043a \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043d\u043e \u0432\u0440\u044f\u0434 \u043b\u0438 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u0447\u0438\u0442\u0430\u0442\u044c, \u0447\u0442\u043e \u044f\u0437\u044b\u043a C++ \u0443\u0441\u043f\u0435\u0432\u0430\u043b \u0437\u0430 \u044d\u0442\u0438\u043c\u0438 \u0442\u0435\u043d\u0434\u0435\u043d\u0446\u0438\u044f\u043c\u0438. \u041d\u0430\u0447\u0438\u043d\u0430\u044f \u0441\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430 C++11, \u0431\u044b\u043b\u0438 \u0432\u0432\u0435\u0434\u0435\u043d\u044b \u0442\u0430\u043a\u0438\u0435 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438 \u043a\u0430\u043a std::thread, std::atomic, std::future, std::mutex, \u0430 \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u043e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0431\u0443\u0434\u0443\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b coroutines \u2014 \u043c\u043e\u0434\u0435\u043b\u044c \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0445 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439. \u0427\u0442\u043e \u0436, \u044d\u0442\u043e \u0432\u0441\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u0432\u0435\u0449\u0438 \u0434\u043b\u044f \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f, \u2014 \u043d\u043e \u0440\u0435\u0447\u044c \u0432 \u0434\u043e\u043a\u043b\u0430\u0434\u0435 \u043f\u043e\u0439\u0434\u0435\u0442 \u043e \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0438\u043d\u043e\u0439 \u0438\u0434\u0435\u0435.<\/p>\n<p>  Software Transactional Memory (STM) \u2014 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u043e\u043d\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u2014 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0443\u0436\u0435 \u0434\u0430\u0432\u043d\u043e \u0438 \u0438\u043c\u0435\u0435\u0442 \u0440\u044f\u0434 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u044f\u0437\u044b\u043a\u043e\u0432. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e STM \u0432\u044b \u0432\u044b\u0440\u0430\u0436\u0430\u0435\u0442\u0435 \u0441\u0432\u043e\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u0430\u043d\u043d\u044b\u0445, \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0435 \u0435\u0435 \u043d\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u043e\u0442\u043e\u043a\u0430\u0445, \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043d\u043e, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u0435\u0441\u043f\u043e\u043a\u043e\u0438\u0442\u044c\u0441\u044f \u043e \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e\u0442\u043e\u043a\u043e\u0432, \u043e \u0432\u0430\u043b\u0438\u0434\u043d\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u043e \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430\u0445. STM \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u0441\u0435 \u0437\u0430 \u0432\u0430\u0441. \u0417\u0432\u0443\u0447\u0438\u0442 \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u043e, \u043e\u0434\u043d\u0430\u043a\u043e \u043d\u0435 \u0432\u0441\u0435 STM-\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b. \u0422\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0438\u043c\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0435 STM \u043e\u0447\u0435\u043d\u044c \u0441\u043b\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u044b, \u043f\u043e\u0434\u0432\u0435\u0440\u0436\u0435\u043d\u044b \u043d\u0435\u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u044b\u043c \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u044b\u043c \u0431\u0430\u0433\u0430\u043c, \u0438 \u0438\u0445 \u0442\u0440\u0443\u0434\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c. \u0421 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0432 \u043c\u0438\u0440\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0443\u0436\u0435 \u0434\u0430\u0432\u043d\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0442\u043e\u0440\u043d\u043e\u0439 STM, \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0443\u0435\u043c\u044b\u043c\u0438 \u043a\u0438\u0440\u043f\u0438\u0447\u0438\u043a\u0430\u043c\u0438, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u044b \u0441\u0442\u0440\u043e\u0438\u0442\u0435 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f. \u041a\u043e\u043c\u0431\u0438\u043d\u0430\u0442\u043e\u0440\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a STM \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u0440\u0430\u0436\u0430\u0442\u044c \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u043e\u043b\u0435\u0435 \u0433\u0438\u0431\u043a\u043e, \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u0438 \u043d\u0430\u0434\u0435\u0436\u043d\u043e. \u041f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u043e\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u0438\u044f\u0442\u043d\u044b\u043c!<\/p>\n<p>  \u0412 \u0434\u043e\u043a\u043b\u0430\u0434\u0435 \u0430\u0432\u0442\u043e\u0440 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0435\u0442 \u043e\u0431 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u0445 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0442\u043e\u0440\u043d\u043e\u0439 STM, \u043a\u0430\u043a \u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u0438 \u043a\u0430\u043a \u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0421++17.<\/p>\n<h3>Vadim Vinnik. <a href=\"https:\/\/youtu.be\/-D6tMUBFIC4\">Collection Processing. Single essence, multiple manifestations<\/a><\/h3>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/xh\/4-\/09\/xh4-09mvu7jukasuqttn0-ipifu.png\"><\/div>\n<p>  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.<\/p>\n<h3>\u0414\u043c\u0438\u0442\u0440\u0438\u0439 \u0411\u0430\u043d\u0449\u0438\u043a\u043e\u0432. <a href=\"https:\/\/youtu.be\/aN2MBmR6B3g\">\u0420\u0430\u0437\u0434\u0435\u043b\u044f\u0435\u043c\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0431\u0435\u0437 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439<\/a><\/h3>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/75\/rt\/xn\/75rtxnsxinft9v9g2bs2rtyc2sy.png\"><\/div>\n<p>  \u0410\u0432\u0442\u043e\u0440 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0435\u0442 \u043e \u0441\u0432\u043e\u0451\u043c \u043e\u043f\u044b\u0442\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0430\u043d\u0442\u0438\u0432\u0438\u0440\u0443\u0441\u043d\u043e\u0433\u043e \u0434\u0432\u0438\u0436\u043a\u0430 \u043d\u0430 C++ \u0432 \u0432\u0438\u0434\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0435\u043c\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438. \u0423\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 (runtime C++ \u0438\u043b\u0438 C). \u0412\u0441\u044f \u044d\u0442\u0430 \u0441\u0432\u044f\u0437\u043a\u0430 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u0432\u043e\u043a\u0440\u0443\u0433 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u043e\u0433\u043e toolchain&#8217;\u0430 \u043d\u0430 GCC \u0434\u043b\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0442\u0430\u0440\u0433\u0435\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f libc newlib \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0436\u0435 \u0442\u0430\u0440\u0433\u0435\u0442\u0430, \u043f\u043e\u0432\u0435\u0440\u0445 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f libstdc++. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0435\u043c\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0439 \u0442\u0443\u043b\u0447\u0435\u0439\u043d \u0441 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u043c\u0438 libgcc_s, libc, libcstdc++ (\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0441\u0431\u043e\u0440\u043a\u0435). \u0412\u0441\u0435 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441\u043e \u0441\u0440\u0435\u0434\u043e\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 ABI \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0435\u043c\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0432\u043d\u0443\u0442\u0440\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0421++ \u0431\u0435\u0437 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 (RTTI, exceptions, iostream, etc), \u0447\u0442\u043e \u0443\u0445\u043e\u0434\u0438\u0442 \u0432 libstdc++ libc (newlib)| l ibgcc-ABI. \u041f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b\u0441\u044f \u043d\u0430 \u0442\u0443\u043b\u0447\u0435\u0439\u043d\u0430\u0445 GCC\/newlib\/libstdc++ \u0434\u043b\u044f Linux, \u0438 clang\/newlib\/libc++ \u0434\u043b\u044f MacOS. \u0414\u043e\u043a\u043b\u0430\u0434 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0435\u043d \u0442\u0435\u043c, \u043a\u0442\u043e \u0445\u043e\u0447\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0421++ \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0435\u043c\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0445, \u043d\u043e \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u0435\u0431\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442\u044c \u0438\u0437-\u0437\u0430 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439.<\/p>\n<h3>\u0418\u043b\u044c\u044f \u0428\u0438\u0448\u043a\u043e\u0432. <a href=\"https:\/\/youtu.be\/mhiAXYprh34\">\u041a\u0430\u043a \u043d\u0430\u0443\u0447\u0438\u0442\u044c \u044f\u0437\u044b\u043a\u0443 C++: \u043e\u043f\u044b\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u0443\u0440\u0441\u043e\u0432 \u043d\u0430 Coursera<\/a><\/h3>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/sj\/zk\/e6\/sjzke6dn32bnehol5pyaeg9bmpe.png\"><\/div>\n<p>  \u0412 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u043f\u043e\u043b\u0443\u0442\u043e\u0440\u0430 \u043b\u0435\u0442 \u0430\u0432\u0442\u043e\u0440 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435\u043c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430 Coursera \u043e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u043c C++. \u0421\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0438\u0437 \u043f\u044f\u0442\u0438 \u043a\u0443\u0440\u0441\u043e\u0432, \u0434\u0432\u0430 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0443\u0436\u0435 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u044b, \u0430 \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u043f\u043e\u0447\u0442\u0438 \u0433\u043e\u0442\u043e\u0432.<\/p>\n<p>  \u0412 \u0434\u043e\u043a\u043b\u0430\u0434\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043d\u043e:<\/p>\n<ul>\n<li>\u0441 \u043a\u0430\u043a\u0438\u043c\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u0442\u044c\u0441\u044f \u0432 \u0440\u0430\u0431\u043e\u0442\u0435 \u043d\u0430\u0434 \u043a\u0443\u0440\u0441\u0430\u043c\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0447\u0435\u0440\u0435\u0437 3 \u043c\u0435\u0441\u044f\u0446\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0432\u044b\u0431\u0440\u043e\u0441\u0438\u043b\u0438 \u0432\u0441\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u0438 \u043d\u0430\u0447\u0430\u043b\u0438 \u0437\u0430\u043d\u043e\u0432\u043e)<\/li>\n<li>\u043a\u0430\u043a \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043a\u0443\u0440\u0441\u043e\u0432 \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u0447\u0435\u043c\u0443 \u0441\u043b\u043e\u0432\u043e \u00ab\u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u00bb \u043d\u0435 \u043f\u0440\u043e\u0437\u0432\u0443\u0447\u0430\u043b\u043e \u0432 \u0434\u0432\u0443\u0445 \u043f\u0435\u0440\u0432\u044b\u0445 \u043a\u0443\u0440\u0441\u0430\u0445 \u043d\u0438 \u0440\u0430\u0437\u0443)<\/li>\n<\/ul>\n<p>  \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0437\u0430 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430\u0434 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0432\u044b\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0441\u044f \u043d\u0430\u0431\u043e\u0440 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u044b \u0438 \u0432 \u043f\u043e\u0432\u0441\u0435\u0434\u043d\u0435\u0432\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0435:<\/p>\n<ul>\n<li>\u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u043d\u043e\u0432\u043e\u0433\u043e \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0430 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442<\/li>\n<li>\u0432\u043e \u0432\u0440\u0435\u043c\u044f code-review<\/li>\n<li>\u043f\u0440\u0438 \u043d\u0430\u0439\u043c\u0435<\/li>\n<\/ul>\n<p>  \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0430\u0432\u0442\u043e\u0440 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0445\u043e\u0447\u0435\u0442 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a \u043e\u043d\u0438 \u0434\u0435\u043b\u0430\u044e\u0442 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e, \u043d\u043e \u0438 \u043f\u043e\u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043b\u043e\u0436\u0438\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u043e\u043f\u044b\u0442 \u043d\u0430 \u043f\u043e\u0432\u0441\u0435\u0434\u043d\u0435\u0432\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438.<\/p>\n<h3>\u0418\u0432\u0430\u043d \u041f\u043e\u043d\u043e\u043c\u0430\u0440\u0451\u0432. <a href=\"https:\/\/youtu.be\/JygTADfFQ2U\">Crash \u0440\u0435\u043f\u043e\u0440\u0442\u044b Android NDK<\/a><\/h3>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/h9\/yx\/zc\/h9yxzc_vcjlymv-gzh28xsaock4.png\"><\/div>\n<p>  \u041d\u0435 \u0441\u0435\u043a\u0440\u0435\u0442, \u0447\u0442\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043d\u0430 C\/C++ \u043f\u0440\u0435\u0434\u044a\u044f\u0432\u043b\u044f\u0435\u0442 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u0438\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0443 \u043a\u043e\u0434\u0430, \u0447\u0435\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043d\u0430 Java. \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0444\u0430\u0442\u0430\u043b\u044c\u043d\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u0448\u0435. \u0412 \u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f, \u0441\u0431\u043e\u0440 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0442\u0430\u043a\u0438\u0445 \u043e\u0448\u0438\u0431\u043a\u0430\u0445 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439 \u0434\u0430\u0436\u0435 \u0434\u043b\u044f \u043e\u043f\u044b\u0442\u043d\u044b\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u0432. <\/p>\n<p>  \u0412 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u0431\u0443\u0434\u0443\u0442 \u043a\u0440\u0430\u0442\u043a\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u0443\u0436\u0435 \u0438\u043c\u0435\u044e\u0449\u0438\u0435\u0441\u044f \u043d\u0430\u0440\u0430\u0431\u043e\u0442\u043a\u0438: \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a Android, \u043a\u0430\u043a\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442. \u0412\u0442\u043e\u0440\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0443 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u00ab\u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c\u00bb: \u043a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043e\u0448\u0438\u0431\u043a\u0438, \u043a\u0430\u043a \u0440\u0430\u0441\u043a\u0440\u0443\u0442\u0438\u0442\u044c \u0441\u0442\u0435\u043a \u0432\u044b\u0437\u043e\u0432\u043e\u0432, \u043a\u0430\u043a \u0443\u0437\u043d\u0430\u0442\u044c \u043d\u043e\u043c\u0435\u0440\u0430 \u0441\u0442\u0440\u043e\u043a \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u043a\u043e\u0434\u0435. \u0411\u0443\u0434\u0435\u0442 \u0434\u0430\u043d \u043e\u0431\u0437\u043e\u0440 \u0442\u0430\u043a\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0434\u043b\u044f \u0440\u0430\u0441\u043a\u0440\u0443\u0442\u043a\u0438 \u0441\u0442\u0435\u043a\u0430, \u043a\u0430\u043a libcorkscrew, libunwind, libunwindstack. <\/p>\n<p>  \u0414\u043e\u043a\u043b\u0430\u0434 \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0435\u043d \u043a\u0430\u043a Android-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c, \u0432 \u0447\u044c\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f NDK, \u0442\u0430\u043a \u0438 \u0432\u0441\u0435\u043c \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u0434\u043b\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043a\u0440\u0443\u0433\u043e\u0437\u043e\u0440\u0430.<\/p>\n<h3>\u0424\u0451\u0434\u043e\u0440 \u041a\u043e\u0440\u043e\u0442\u043a\u0438\u0439. <a href=\"https:\/\/youtu.be\/i87W3KyZgPw\">\u041f\u0430\u043c\u044f\u0442\u044c \u2014 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044f<\/a><\/h3>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/tc\/yh\/ns\/tcyhnsqf9zd7owu6oylohlcgkqe.png\"><\/div>\n<p>  int* ptr = new int;<br \/>  *ptr = 42;<br \/>  delete ptr; <\/p>\n<p>  \u0427\u0442\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u044d\u0442\u0438 3 \u0441\u0442\u0440\u043e\u0447\u043a\u0438 \u043a\u043e\u0434\u0430? \u041c\u044b \u0437\u0430\u0433\u043b\u044f\u043d\u0435\u043c \u0432\u043d\u0443\u0442\u0440\u044c \u0430\u043b\u043b\u043e\u043a\u0430\u0442\u043e\u0440\u0430 \u043f\u0430\u043c\u044f\u0442\u0438, \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u0436\u0435\u043b\u0435\u0437\u0430 \u0447\u0442\u043e\u0431\u044b \u0434\u0430\u0442\u044c \u0438\u0441\u0447\u0435\u0440\u043f\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u044d\u0442\u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441.<\/p>\n<h3>\u0410\u043b\u0435\u043a\u0441\u0435\u0439 \u0421\u0430\u043b\u043c\u0438\u043d. <a href=\"https:\/\/youtu.be\/dFquxC6qTSA\">Memory Management Tips &amp; Tricks<\/a><\/h3>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yi\/re\/ju\/yirejuytypvwzo-ldwc-jmd4ylg.png\"><\/div>\n<p>  \u0412 2017 \u0433\u043e\u0434\u0443 \u0432\u043e\u043f\u0440\u043e\u0441 \u0432\u044b\u0431\u043e\u0440\u0430 \u0430\u043b\u043b\u043e\u043a\u0430\u0442\u043e\u0440\u0430 \u0432 C++ \u043d\u0435 \u0442\u0435\u0440\u044f\u0435\u0442 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u0412 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u043d\u043e\u0432\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u043b\u043b\u043e\u043a\u0430\u0442\u043e\u0440 \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 (std::pmr), \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 tcmalloc \u0438 jemalloc \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044e\u0442 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c\u0441\u044f, \u043a\u0430\u043a \u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u044f\u0434\u0440\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043d\u0438 \u043e\u043f\u0438\u0440\u0430\u044e\u0442\u0441\u044f. \u0414\u0430\u043d\u043d\u044b\u0439 \u0434\u043e\u043a\u043b\u0430\u0434 \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d \u00ab\u043d\u0438\u0436\u043d\u0435\u043c\u0443 \u044d\u0442\u0430\u0436\u0443\u00bb \u044d\u0442\u043e\u0439 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438: \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u043c \u0440\u0430\u0431\u043e\u0442\u044b mmap \u0438 madvise \u0432 \u044f\u0434\u0440\u0435 Linux \u0438 \u0432\u043b\u0438\u044f\u043d\u0438\u044e \u044d\u0442\u0438\u0445 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0430\u043b\u043b\u043e\u043a\u0430\u0442\u043e\u0440\u043e\u0432.<\/p>\n<h3>Herb Sutter. <a href=\"https:\/\/youtu.be\/ULkwKsag0Yk\">New in C++20: The spaceship operator<\/a><\/h3>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/jh\/ex\/dw\/jhexdwnxovbsvpbtftm3jmrofr0.png\"><\/div>\n<p>  The new spaceship was recently adopted as a language feature for C++20. In this talk, the designer and author of the spaceship proposal gives an overview of the feature, discusses its motivation and design, and walks through examples of how to use it. He gives particular emphasis to how the feature makes C++ code cleaner to write and read, faster by avoiding redundant work, and more robust by avoiding several important but subtle pitfalls in the more brittle code we previously had to write by hand without this feature.<\/p>\n<h3>\u0410\u043d\u0430\u0441\u0442\u0430\u0441\u0438\u044f \u041a\u0430\u0437\u0430\u043a\u043e\u0432\u0430. <a href=\"https:\/\/youtu.be\/e51Fr42EV9c\">\u041e\u0442\u043b\u0430\u0434\u043a\u0430 \u043a\u043e\u0434\u0430 \u043d\u0430 C++, \u0431\u0435\u0437 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438<\/a><\/h3>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/at\/na\/ve\/atnaverrgqdy-zv-xexxy6oan_g.png\"><\/div>\n<p>  \u041a\u043e\u0433\u0434\u0430 \u0441\u043c\u043e\u0442\u0440\u0438\u0448\u044c \u043d\u0430 \u0448\u0430\u0431\u043b\u043e\u043d\u044b, \u0440\u0435\u0444\u043b\u0435\u043a\u0441\u0438\u044e, \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u043a\u043e\u0434\u0430 \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438, \u043c\u0435\u0442\u0430\u043a\u043b\u0430\u0441\u0441\u044b, \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043e\u0449\u0443\u0449\u0435\u043d\u0438\u0435, \u0447\u0442\u043e C++ \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0441\u0435\u0431\u0435 \u0437\u0430\u0434\u0430\u0447\u0443 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u00ab\u0441\u043f\u0440\u044f\u0442\u0430\u0442\u044c\u00bb \u0438\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u043a\u043e\u0434 \u043e\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430. \u0410 \u043d\u0435\u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 (\u0438 \u043c\u043d\u043e\u0433\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u043e\u0442\u0432\u0435\u0442\u0432\u043b\u0435\u043d\u0438\u044f) \u043c\u043e\u0436\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043e\u0447\u0435\u043d\u044c \u043d\u0435\u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e\u0439. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u044d\u0442\u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u0438\u0437\u0431\u0430\u0432\u043b\u044f\u044e\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u043e\u0442 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e copy-paste \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f \u043f\u043e\u0445\u043e\u0436\u0438\u0445 \u0447\u0430\u0441\u0442\u0435\u0439 \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u044b, \u043d\u043e \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0432 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438.<\/p>\n<p>  \u041c\u043e\u0436\u043d\u043e \u043b\u0438 \u043e\u0442\u043b\u0430\u0436\u0438\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u0431\u0435\u0437 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0433\u043e \u0435\u0433\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430, \u0431\u0435\u0437 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430, \u0434\u0430 \u0434\u0430\u0436\u0435 \u0431\u0435\u0437 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0432\u0441\u0435\u0439 \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u044b? \u0415\u0441\u043b\u0438 \u043b\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0438\u0441\u043a\u0430 \u043e\u0448\u0438\u0431\u043e\u043a \u0432 \u043a\u043e\u0434\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435\u043b\u044c\u0437\u044f \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0438\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435? \u0415\u0441\u0442\u044c! \u0418\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 (IDE) \u043e\u0431\u043b\u0430\u0434\u0430\u044e\u0442 \u043e\u0431\u0448\u0438\u0440\u043d\u044b\u043c\u0438 \u0437\u043d\u0430\u043d\u0438\u044f\u043c\u0438 \u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b.<\/p>\n<p>  \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0434\u043e\u043a\u043b\u0430\u0434\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u00ab\u043e\u0442\u043b\u0430\u0436\u0438\u0432\u0430\u0442\u044c\u00bb \u043c\u0430\u043a\u0440\u043e\u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438, \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 typedef, \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u0442\u0438\u043f\u044b \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 (\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u043c C++ \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u00ab\u0441\u043f\u0440\u044f\u0442\u0430\u043d\u043d\u044b\u043c\u0438\u00bb), \u043e\u0442\u043b\u0430\u0436\u0438\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0432\u0435\u0442\u043a\u0438 \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432, \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043e-\u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u043c\u0443 \u0443\u043c\u043d\u043e\u0439 IDE. \u041a\u0430\u043a\u0438\u0435-\u0442\u043e \u0438\u0437 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0443\u0436\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432 CLion \u0438 ReSharper C++, \u0430 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c\u0438 \u0438\u0434\u0435\u044f\u043c\u0438 \u043d\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u043b\u043e \u0431\u044b \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043e\u0431\u0441\u0443\u0434\u0438\u0442\u044c \u0441 \u0430\u0443\u0434\u0438\u0442\u043e\u0440\u0438\u0435\u0439.<\/p>\n<h3>\u0415\u0432\u0433\u0435\u043d\u0438\u0439 \u041b\u0443\u043a\u044c\u044f\u043d\u0435\u0446. <a href=\"https:\/\/youtu.be\/04eXK4dMB1I\">\u0421\u0431\u043e\u0440\u043a\u0430 \u0432 Docker \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Conan<\/a><\/h3>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/kt\/es\/9y\/ktes9yg6zny3qia9p2qd6mksxqm.png\"><\/div>\n<p>  \u0421\u0431\u043e\u0440\u043a\u0443 C++ \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u0432\u043d\u0443\u0442\u0440\u044c docker-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c, \u0432\u043c\u0435\u0441\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0432 \u0445\u043e\u0441\u0442-\u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u043b\u0438\u0431\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u043f\u0440\u044f\u043c\u043e \u0432 docker-\u043e\u0431\u0440\u0430\u0437 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Cuda), \u043b\u0438\u0431\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 C++ \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a Conan (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Boost). \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u043c\u043e\u0435 (\u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u0435) \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u044d\u0448 Conan, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0435 \u043e\u0434\u043d\u0438 \u0438 \u0442\u0435 \u0436\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u043d\u0438 \u0438 \u0442\u0435 \u0436\u0435 \u0438\u0445 \u0441\u0431\u043e\u0440\u043a\u0438. \u0422\u0430\u043a\u0436\u0435 \u043e\u0442\u043f\u0430\u0434\u0430\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u0441\u0431\u043e\u0440\u043a\u0438 \u043e\u0442 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430 Linux, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0435\u043a\u0442, \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u2014 \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043d\u0430 \u044d\u0442\u043e\u043c \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c Docker.<\/p>\n<h3>\u0414\u0435\u043d\u0438\u0441 \u041f\u0430\u043d\u0438\u043d. <a href=\"https:\/\/youtu.be\/kUbWYdlS9v0\">\u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043c\u0435\u0442\u0430\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435: \u043f\u0438\u0448\u0435\u043c \u0433\u0435\u0442\u0435\u0440\u043e\u0433\u0435\u043d\u043d\u0443\u044e \u0445\u044d\u0448-\u0442\u0430\u0431\u043b\u0438\u0446\u0443<\/a><\/h3>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/il\/zf\/8d\/ilzf8daway7fam09ukocar1bdpw.png\"><\/div>\n<p>  \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u043c\u044b \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 std::tuple. \u041f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u044d\u0442\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u043a\u043e\u043c\u043f\u0430\u0439\u043b-\u0442\u0430\u0439\u043c \u0433\u0435\u0442\u0435\u0440\u043e\u0433\u0435\u043d\u043d\u0443\u044e \u0445\u044d\u0448-\u0442\u0430\u0431\u043b\u0438\u0446\u0443. \u0414\u0430\u043b\u0435\u0435 \u2014 \u043d\u0430 \u0435\u0435 \u043e\u0441\u043d\u043e\u0432\u0435 \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 RPC \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0442\u043e\u0442 \u0444\u0430\u043a\u0442, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u043d\u0435\u0442 type erasure.<\/p>\n<p>  \u0411\u0443\u0434\u0435\u0442 \u043c\u043d\u043e\u0433\u043e constexpr-\u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439, \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u0438 \u043d\u043e\u0432\u044b\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 C++17 (\u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e, if constexpr).<\/p>\n<h3>\u0414\u043c\u0438\u0442\u0440\u0438\u0439 \u0421\u043e\u043a\u043e\u043b\u043e\u0432. <a href=\"https:\/\/youtu.be\/uOtYE3RLm2A\">\u041a\u043e\u0434\u043e\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u043a\u0430\u043a \u0440\u0435\u0444\u043b\u0435\u043a\u0441\u0438\u044f \u0434\u043b\u044f \u0431\u0435\u0434\u043d\u044b\u0445<\/a><\/h3>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/m6\/cy\/ey\/m6cyeyyxuncuuz_jzzlzzcwj8q8.png\"><\/div>\n<p>  \u0420\u0435\u0444\u043b\u0435\u043a\u0441\u0438\u044f \u0447\u0430\u0441\u0442\u043e \u043d\u0443\u0436\u043d\u0430 \u0434\u043b\u044f \u043e\u0431\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u0441\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432, \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0431\u0430\u0437\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445. \u0414\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u043d\u0430\u043c\u0438 \u0431\u044b\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 homebrew IDL \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 C++ \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440 \u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c. Protobuf \u0441 \u043f\u0435\u0434\u0430\u043b\u044f\u043c\u0438 \u0438 \u0441\u0442\u043e\u0438\u043b\u043e \u043b\u0438 \u043e\u043d\u043e \u0442\u043e\u0433\u043e.<\/p>\n<h3>Daveed Vandevoorde. <a href=\"https:\/\/youtu.be\/YyUEVTXhYt4\">Reflective Metaprogramming in C++<\/a><\/h3>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/5c\/ho\/ie\/5choiecmddpmcbekwyekclxdmlq.png\"><\/div>\n<p>  Some time ago, the C++ standardization committee created a subgroup \u00abSG-7\u00bb to explore how to add reflection capabilities to the language. More recently, that group has added \u00abmetaprogramming\u00bb to its plate and made some significant decisions regarding the shape of the eventual solution. In this talk the author looks at the past that brought us here and examine a possible path for C++&#8217;s first-class support of \u00abreflective metaprogramming\u00bb.<\/p>\n<h3>Dietmar K\u00fchl. <a href=\"https:\/\/youtu.be\/VPOdXExEOXA\">Concept Based Testing<\/a><\/h3>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/st\/sa\/3s\/stsa3scg4ux8lm4x7avft5qzabg.png\"><\/div>\n<p>  With concepts being added to the next revision of C++ it is expected that new concepts get defined. Each concept defines a set of operations used by generic code. One such use could be a generic test verifying that all parts of a concept are defined and checking generic interactions between a concept&#8217;s operations. Ideally, such a test even works with classes only partially modelling a concept to guide the implementation of classes.<\/p>\n<p>  This presentation doesn&#8217;t use the actual concept extensions but shows how generic tests can be created using features of C++17. For the generic tests the detection idiom and constexpr if are used to determine availability of required operations and gracefully dealing with the abseence of operations. The generic tests should be able to cover basics of classes modelling a concept. Obviously, specific behaviour for classes will still require corresponding tests.<\/p>\n<h3>Simon Brand. <a href=\"https:\/\/youtu.be\/1Icr9ht_hhk\">Modern C++ Parallelism from CPU to GPU<\/a><\/h3>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/qq\/qz\/st\/qqqzstnuzvnt3ev15p-9hngj3iy.png\"><\/div>\n<p>  Parallel programming can be used to take advantage of multi-core and heterogeneous architectures and can significantly increase the performance of software. Modern C++ has gone a long way to making parallel programming easier and more accessible; providing both high-level and low-level abstractions. C++17 takes this further by providing high level parallel algorithms, and much more is expected in C++20. This talk gives an overview of the current parallelism utilities available, and looks to the future of how GPUs and heterogeneous systems can be supported through new standard library features and other standards like SYCL.<\/p>\n<h3>\u0410\u043d\u0434\u0440\u0435\u0439 \u041a\u0430\u0440\u043f\u043e\u0432. <a href=\"https:\/\/youtu.be\/QU63wpGBvjE\">\u042d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439 C++ (\u041c\u0430\u0435\u0440\u0441 \u0442\u0443\u0442 \u043d\u0438 \u043f\u0440\u0438 \u0447\u0451\u043c \ud83d\ude42<\/a><\/h3>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/rb\/lp\/mu\/rblpmu6fzwwn7hnt3cim-pipjf0.png\"><\/div>\n<p>  \u042f\u0437\u044b\u043a C++ \u0438 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0432\u043e\u043a\u0440\u0443\u0433 \u043d\u0435\u0433\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u043e\u0442 \u044f\u0437\u044b\u043a \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f. \u0425\u043e\u0447\u0435\u0442\u0441\u044f \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0442\u0440\u0438 \u0444\u0430\u043a\u0442\u043e\u0440\u0430, \u0434\u0435\u043b\u0430\u044e\u0449\u0438\u0435 \u044f\u0437\u044b\u043a C++ \u0441\u0435\u0439\u0447\u0430\u0441 \u0441\u0442\u043e\u043b\u044c \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c. <\/p>\n<ul>\n<li>\u041f\u0435\u0440\u0432\u043e\u0435: \u043d\u043e\u0432\u043e\u0432\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u044f\u0437\u044b\u043a\u0430, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0435 \u043f\u0438\u0441\u0430\u0442\u044c \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u043a\u043e\u0434.<\/li>\n<li>\u0412\u0442\u043e\u0440\u043e\u0435: \u0437\u0440\u0435\u043b\u043e\u0441\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432.<\/li>\n<li>\u0422\u0440\u0435\u0442\u044c\u0435: \u0437\u0440\u0435\u043b\u043e\u0441\u044c \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043e\u0434\u0430 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0430\u0441\u043f\u0435\u043a\u0442\u044b \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430.<\/li>\n<\/ul>\n<p>  \u042d\u0442\u043e\u0442 \u0434\u043e\u043a\u043b\u0430\u0434 \u2014 \u043e\u0434\u0430 \u044f\u0437\u044b\u043a\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f C++!<\/p>\n<h3>\u0418\u0432\u0430\u043d \u041f\u0443\u0437\u044b\u0440\u0435\u0432\u0441\u043a\u0438\u0439. <a href=\"https:\/\/youtu.be\/g7dno0SupKY\">\u0410\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0441\u0442\u044c \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438<\/a><\/h3>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/3g\/vx\/iw\/3gvxiw02427rxts0p3nza4kburu.png\"><\/div>\n<p>  \u0412 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u044b\u0441\u043e\u043a\u043e\u043d\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0445 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u044b\u0445 \u0438\u043b\u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043c\u043e\u0436\u043d\u043e \u0432\u0441\u0435 \u0447\u0430\u0449\u0435 \u0443\u0441\u043b\u044b\u0448\u0430\u0442\u044c \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u044b \u043e\u0431 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u043c \u043a\u043e\u0434\u0435, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0441\u043f\u0435\u043a\u0443\u043b\u044f\u0446\u0438\u0438 \u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 (\u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438) \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0441\u0442\u044c \u0432 \u043a\u043e\u0434\u0435, \u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0441\u0442\u0438 (\u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0441\u0442\u0438) \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u043e \u0435\u0433\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 (\u043d\u0435\u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438). \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0434\u043e\u043a\u043b\u0430\u0434\u0435 \u043c\u044b \u0441 \u0432\u0430\u043c\u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u0433\u043b\u0443\u0431\u043e\u043a\u043e \u043f\u043e\u0433\u0440\u0443\u0437\u0438\u0442\u044c\u0441\u044f \u0432 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043d\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c: \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0441\u0442\u044c; \u043a\u043e\u0433\u0434\u0430 \u043e\u043d\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442; \u043a\u0430\u043a \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u043f\u0438\u0448\u0435\u043c, \u0438 \u043d\u0430 \u044f\u0437\u044b\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c. \u041f\u043e\u0441\u0442\u0430\u0440\u0430\u0435\u043c\u0441\u044f \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u043f\u0440\u0438 \u0447\u0435\u043c \u0442\u0443\u0442 futures &amp; promises, \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043f\u0440\u043e \u043a\u043e\u0440\u0443\u0442\u0438\u043d\u044b \u0438 \u0430\u043a\u0442\u043e\u0440\u044b. \u0417\u0430\u0442\u0440\u043e\u043d\u0435\u043c JavaScript \u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u0426\u0435\u043b\u044c \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u2014 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u044f\u0432\u043d\u044b\u043c\u0438 \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0438\u0441\u0441\u044b, \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0449\u0438\u0435 \u043f\u0440\u0438 \u0442\u043e\u043c \u0438\u043b\u0438 \u0438\u043d\u043e\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u0435 \u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u0433\u043e \u0438\u043b\u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u041f\u041e.<\/p>\n<h3>\u041f\u0430\u0432\u0435\u043b \u0411\u0443\u043b\u0430\u0442\u043e\u0432. <a href=\"https:\/\/youtu.be\/hGaZ0gr1bh8\">\u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 WebAssembly: \u0441\u0442\u043e\u0438\u0442 \u043b\u0438 \u0438\u0433\u0440\u0430 \u0441\u0432\u0435\u0447?<\/a><\/h3>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/vt\/s6\/ga\/vts6gamnunde4u6qzk6p_4zqc6c.png\"><\/div>\n<p>  \u0412 \u0434\u043e\u043a\u043b\u0430\u0434\u0435 \u043f\u043e\u0439\u0434\u0435\u0442 \u0440\u0435\u0447\u044c \u043e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 WebAssembly \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430\u043c. \u041c\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0435\u043c \u043e \u043d\u0430\u0448\u0435\u043c \u043e\u043f\u044b\u0442\u0435 \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043e \u0442\u043e\u043c, \u043a\u0430\u043a\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0438 \u0438 \u043a\u0430\u043a \u043c\u044b \u0438\u0445 \u0440\u0435\u0448\u0438\u043b\u0438.<\/p>\n<p>  \u0411\u0443\u0434\u0443\u0442 \u0437\u0430\u0442\u0440\u043e\u043d\u0443\u0442\u044b \u0442\u0435\u043c\u044b:<\/p>\n<ul>\n<li>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430 \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u0445 \u0438 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430\u0445.<\/li>\n<li>\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0441\u0431\u043e\u0440\u043a\u0438 \u0432 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0441 asm.js. <\/li>\n<li>\u0412\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u043c. <\/li>\n<li>\u0421\u0431\u043e\u0440\u043a\u0438 \u043a\u0440\u0435\u0448\u0435\u0439 \u0441 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. <\/li>\n<li>\u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 VM.<\/li>\n<\/ul>\n<p>  <\/p>\n<h3>\u0414\u043c\u0438\u0442\u0440\u0438\u0439 \u041a\u043e\u0436\u0435\u0432\u043d\u0438\u043a\u043e\u0432. <a href=\"https:\/\/youtu.be\/nnGSa883Mhw\">\u041f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u0435 \u043a\u0430\u043c\u043d\u0438 CMake \u0438 \u0433\u0434\u0435 \u043e\u043d\u0438 \u043e\u0431\u0438\u0442\u0430\u044e\u0442<\/a><\/h3>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/zt\/_l\/qr\/zt_lqrmu-qimm8_m2z7g_zd2xsg.png\"><\/div>\n<p>  \u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u0431\u043e\u0440\u043a\u0438 CMake \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u043c \u0434\u0435-\u0444\u0430\u043a\u0442\u043e \u0434\u043b\u044f \u043a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 C++. \u041e\u0434\u043d\u0430\u043a\u043e \u0447\u0430\u0441\u0442\u043e \u043e\u043d\u0430 \u043f\u043e\u0434\u0432\u0435\u0440\u0433\u0430\u0435\u0442\u0441\u044f \u0441\u043f\u0440\u0430\u0432\u0435\u0434\u043b\u0438\u0432\u043e\u0439 \u043a\u0440\u0438\u0442\u0438\u043a\u0435, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0437\u0430 \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u044b\u0439 \u044f\u0437\u044b\u043a, \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0443\u044e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u0438 \u0437\u0430 \u0442\u043e, \u0447\u0442\u043e \u043e\u0434\u043d\u0438 \u0438 \u0442\u0435 \u0436\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432 \u043d\u0435\u0439 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a\u043e\u0439 \u0438\u0437 \u043d\u0438\u0445 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u0432 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u0431\u044b\u0432\u0430\u0435\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u043e. \u0410\u0432\u0442\u043e\u0440 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0435\u0442:<\/p>\n<ul>\n<li>\u0447\u0430\u0441\u0442\u044b\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0430\u043d\u0442\u0438-\u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b \u0438 \u0447\u0435\u043c \u043e\u043d\u0438 \u043f\u043b\u043e\u0445\u0438,<\/li>\n<li>\u043d\u0430 \u043a\u0430\u043a\u0438\u0445 \u0443\u0440\u043e\u0432\u043d\u044f\u0445 \u0430\u0431\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 CMake, \u0438 \u043a\u043e\u0433\u0434\u0430 \u043e\u043d\u0438 \u00ab\u043f\u0440\u043e\u0442\u0435\u043a\u0430\u044e\u0442\u00bb,<\/li>\n<li>\u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u00abModern CMake\u00bb \u0438 \u0432 \u0447\u0435\u043c \u0435\u0433\u043e \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430,<\/li>\n<li>\u043a\u0430\u043a \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0438 \u043e\u0442\u043b\u0430\u0436\u0438\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0432 CMake-\u0441\u043a\u0440\u0438\u043f\u0442\u0430\u0445 (\u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u044d\u043a\u0437\u043e\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438).<\/li>\n<\/ul>\n<p>  <\/p>\n<h3>\u0421\u0435\u0440\u0433\u0435\u0439 \u0428\u0430\u043c\u0431\u0438\u0440. <a href=\"https:\/\/youtu.be\/AkzFp6PW5iA\">\u041a\u043e\u0433\u0434\u0430 \u0445\u043e\u0440\u043e\u0448 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u043d\u044b\u0439 C++<\/a><\/h3>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/kx\/ib\/vy\/kxibvyhzvf5taodgpswkywptk9y.png\"><\/div>\n<p>  \u0427\u0438\u0441\u0442\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0441\u043b\u043e\u0435 \u2014 \u043c\u0435\u0447\u0442\u0430 \u043b\u044e\u0431\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b. \u0414\u043b\u044f \u0432\u043e\u043f\u043b\u043e\u0449\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u043c\u0435\u0447\u0442\u044b \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u0451\u043c\u043e\u0432. \u0423\u0432\u043b\u0435\u043a\u0430\u044f\u0441\u044c \u041e\u041e\u041f, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0437\u0430\u0431\u044b\u0432\u0430\u044e\u0442 \u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0437\u0430 \u0447\u0438\u0441\u0442\u043e\u0442\u043e\u0439 \u043a\u043e\u0434\u0430 \u043d\u0430 \u0441\u0442\u044b\u043a\u0435 C \u0438 C++. \u0418\u043c\u0435\u043d\u043d\u043e \u0437\u0434\u0435\u0441\u044c \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u043d\u044b\u0439 \u0441\u0442\u0438\u043b\u044c \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0432\u0435\u0441\u0442\u0438 \u043f\u043e\u0440\u044f\u0434\u043e\u043a, \u0432\u044b\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0443\u0434\u043e\u0431\u043d\u044b\u0435 \u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0435 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043b\u0435\u0433\u043a\u043e \u0441\u0442\u044b\u043a\u0443\u044e\u0442\u0441\u044f \u0441 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u041c\u044b \u0432\u044b\u044f\u0441\u043d\u0438\u043c:<\/p>\n<ul>\n<li>\u043f\u043e\u0447\u0435\u043c\u0443 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0430\u0434\u043e \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c API \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 C (\u0442\u0430\u043a\u043e\u0439 \u043a\u0430\u043a winapi, POSIX, SQLite, OpenGL, OpenSSL)<\/li>\n<li>\u043f\u043e\u0447\u0435\u043c\u0443 \u041e\u041e\u041f \u0432 \u044d\u0442\u043e\u043c \u0434\u0435\u043b\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043b\u043e\u0445\u043e<\/li>\n<li>\u043a\u0430\u043a \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043b\u043e\u0439 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438 \u043f\u043e\u0432\u0435\u0440\u0445 C-style API<\/li>\n<li>\u043a\u0430\u043a \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u043a\u043e\u043b\u0431\u0435\u043a\u0430\u043c\u0438, \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u043e\u0448\u0438\u0431\u043e\u043a \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438, \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u0438 \u0437\u0430\u043f\u0443\u0442\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c \u0434\u0430\u0436\u0435 \u0434\u043b\u044f \u0434\u0436\u0443\u043d\u0438\u043e\u0440\u0430<\/li>\n<\/ul>\n<p>  <\/p>\n<h3>\u0415\u0432\u0433\u0435\u043d\u0438\u0439 \u0417\u0443\u0435\u0432. <a href=\"https:\/\/youtu.be\/gtSxEMTubbE\">Semantic API for C++ programs<\/a><\/h3>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/-e\/wb\/d4\/-ewbd4monfzqy8msagott8iaxzu.png\"><\/div>\n<p>  \u0421\u0444\u0435\u0440\u0430 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432 \u2014 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u0430 \u044f\u0437\u044b\u043a\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u0432 \u042f\u041f \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u044f\u0437\u044b\u043a\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432. \u0421\u0440\u0435\u0434\u0438 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0437\u043d\u0430\u0447\u0438\u043c\u044b\u0445 \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u0439 \u2014 \u0443\u0447\u0430\u0441\u0442\u0438\u0435 \u0432 \u0442\u0430\u043a\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445, \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430 \u044f\u0437\u044b\u043a\u0430 \u0421++ (\u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f \u0418\u043d\u0442\u0435\u0440\u0441\u0442\u0440\u043e\u043d, \u041c\u043e\u0441\u043a\u0432\u0430, 2000), \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u044f\u0437\u044b\u043a\u0430 Zonnon \u0434\u043b\u044f .NET (ETH Zurich, 2005), \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 Swift \u0434\u043b\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b Tizen (Samsung Research Institute, \u041c\u043e\u0441\u043a\u0432\u0430, 2015).<\/p>\n<h3>Ivan \u010cuki\u0107. <a href=\"https:\/\/youtu.be\/dZyH01tyIsA\">2020: A void_t odyssey<\/a><\/h3>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/lz\/_4\/qw\/lz_4qwm76c6mz0aadcqwqcd8av8.png\"><\/div>\n<p>  C++ has always had a powerful meta-programming sub-language which allowed library developers to perform magical feats like static introspection to achieve polymorhpic execution without inheritance. The problem was that the syntax was awkward and unnecessarily verbose which made learning meta-programming a daunting task.<\/p>\n<p>  With the recent improvements to the standard, and with the features planned for C++20, meta-programming has become much easier, and meta-programs became easier to understand and reason about.<\/p>\n<p>  In this talk, the author presents a few modern techniques of meta-programming, with main focus on the magical void_t meta-function.<\/p>\n<h3>\u0415\u0432\u0433\u0435\u043d\u0438\u0439 \u041e\u0445\u043e\u0442\u043d\u0438\u043a\u043e\u0432. <a href=\"https:\/\/youtu.be\/eW9HMpzCFdE\">\u0410\u043a\u0442\u043e\u0440\u044b \u043d\u0430 C++: \u0441\u0442\u043e\u0438\u043b\u043e \u043b\u0438 \u043e\u043d\u043e \u0442\u043e\u0433\u043e?<\/a><\/h3>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/9t\/tn\/tw\/9ttntwqtinuogjfwkd0jjbqn8ko.png\"><\/div>\n<p>  \u0410\u0432\u0442\u043e\u0440 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u0443\u0436\u0435 16 \u043b\u0435\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435 Open-Source \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 SObjectizer. \u042d\u0442\u043e \u043e\u0434\u0438\u043d \u0438\u0437 \u043d\u0435\u043c\u043d\u043e\u0433\u0438\u0445 \u0436\u0438\u0432\u044b\u0445 \u0438 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u044e\u0449\u0438\u0445\u0441\u044f, \u043a\u0440\u043e\u0441\u0441-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u044b\u0445 \u0430\u043a\u0442\u043e\u0440\u043d\u044b\u0445 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432 \u0434\u043b\u044f C++. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 SObjectizer-\u0430 \u043d\u0430\u0447\u0430\u043b\u0430\u0441\u044c \u0432 2002-\u043e\u043c \u0433\u043e\u0434\u0443, \u043a\u043e\u0433\u0434\u0430 C++ \u0431\u044b\u043b \u0432 \u0447\u0438\u0441\u043b\u0435 \u0441\u0430\u043c\u044b\u0445 \u0432\u043e\u0441\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0438 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0417\u0430 \u043f\u0440\u043e\u0448\u0435\u0434\u0448\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0438 C++ \u043e\u0447\u0435\u043d\u044c \u0441\u0438\u043b\u044c\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0441\u044f, \u0438 \u0435\u0449\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u043a C++. \u0412 \u0434\u043e\u043a\u043b\u0430\u0434\u0435 \u0440\u0435\u0447\u044c \u043f\u043e\u0439\u0434\u0435\u0442 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u044d\u0442\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u043d\u0430 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0441 16-\u043b\u0435\u0442\u043d\u0435\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0435\u0439 \u0438 \u043e \u0442\u043e\u043c, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0438 \u0443\u0434\u043e\u0431\u043d\u043e \u0431\u044b\u043b\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u044f\u0437\u044b\u043a\u0430 C++. \u0414\u0430 \u0438 \u043d\u0443\u0436\u043d\u043e \u043b\u0438 \u0431\u044b\u043b\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f C++ \u0432\u043e\u043e\u0431\u0449\u0435.<\/p>\n<h3>Rainer Grimm. <a href=\"https:\/\/youtu.be\/oHA1W2OJgXA\">Best Practices for Concurrency in Modern C++<\/a><\/h3>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yk\/12\/j2\/yk12j2luup7tzp2at0vt9epwr6m.png\"><\/div>\n<p>  With the standardisation of C++11, we got in C++ a multithreading library and a memory model. The library has the basic building blocks such as atomics, threads, tasks, locks, and condition variables. The memory model provides guarantees for the thread-safe usage of this basic building blocks.<\/p>\n<p>  Seven years later, we have a lot of best practices to apply multithreading and the memory model in a safe way. The author&#8217;s talk is precisely about these best practices to general rules for concurrency, special rules for the multithreading library, and special rules for the memory model. The focus of this best practices is far beyond C++.<\/p>\n<h3>\u0410\u043b\u0435\u043a\u0441\u0435\u0439 \u041c\u0430\u043b\u043e\u0432. <a href=\"https:\/\/youtu.be\/BOHewKTd1DE\">\u041e\u043f\u044b\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e C++ \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 desktop-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439<\/a><\/h3>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/uu\/te\/59\/uute59evuanipkaccp6qabg1ari.png\"><\/div>\n<p>  \u0414\u043e\u043a\u043b\u0430\u0434 \u0431\u0443\u0434\u0435\u0442 \u0438\u0434\u0442\u0438 \u043e \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u0445 \u044f\u0437\u044b\u043a\u0430 C++ \u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a Boost \u0438 STL, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e\u0431 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0445 \u043f\u043e\u0434\u0445\u043e\u0434\u0430\u0445 \u0432 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0441 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u043b\u0438 \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0432\u0438\u0434\u0435\u043e-\u0443\u0440\u043e\u043a\u043e\u0432. <\/p>\n<ul>\n<li>\u041f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430 Model-View-Presenter<\/li>\n<li>\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u043c \u0446\u0438\u043a\u043b\u043e\u043c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430<\/li>\n<li>\u0424\u0430\u0439\u043b\u043e\u0432\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u043d\u0430 \u0443\u043c\u043d\u044b\u0445 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f\u0445<\/li>\n<\/ul>\n<p>  <\/p>\n<h3>\u0421\u0435\u0440\u0433\u0435\u0439 \u0412\u0430\u0441\u0438\u043b\u044c\u0435\u0432. <a href=\"https:\/\/youtu.be\/ORygHFn2uJk\">\u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437: \u0438\u0449\u0435\u043c \u043e\u0448\u0438\u0431\u043a\u0438\u2026 \u0438 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438?<\/a><\/h3>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/z7\/it\/1h\/z7it1hjlb46zf_4xp1pvsqlyqbq.png\"><\/div>\n<p>  \u041d\u043e\u0432\u043e\u0441\u0442\u0438 \u043e\u0431 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u043e\u0439 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0442 \u0442\u043e \u0442\u0443\u0442, \u0442\u043e \u0442\u0430\u043c. \u0421\u043e\u043f\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043f\u043e\u0442\u0435\u0440\u0438 $, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u043a\u043e\u043b\u043e\u0441\u0441\u0430\u043b\u044c\u043d\u044b. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u043c\u0435\u0441\u0442\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439, \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043d\u0435 \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0438\u0445 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f.<\/p>\n<p>  \u041e\u0434\u0438\u043d \u0438\u0437 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0431\u043e\u0440\u044c\u0431\u044b \u0441 \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438 \u0432 \u043a\u043e\u0434\u0435 \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430. \u041d\u043e \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u043d \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439? \u0418 \u0442\u0430\u043a \u043b\u0438 \u0432\u0435\u043b\u0438\u043a\u0430 \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0441\u0442\u044b\u043c\u0438 \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438 \u0438 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438 \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043a\u043e\u0434\u0430?<\/p>\n<p>  \u042d\u0442\u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043c\u044b \u0438 \u043e\u0431\u0441\u0443\u0434\u0438\u043c \u0432 \u0445\u043e\u0434\u0435 \u0434\u043e\u043a\u043b\u0430\u0434\u0430, \u0430 \u0437\u0430\u043e\u0434\u043d\u043e \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0432\u043b\u0435\u0447\u044c \u0438\u0437 \u043d\u0435\u0433\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c \u043f\u043e\u043b\u044c\u0437\u044b.<\/p>\n<p>  <b>P.S.<\/b><\/p>\n<p>  \u041e\u0442 \u0441\u0435\u0431\u044f \u0445\u043e\u0447\u0443 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u0430\u0448\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043c\u0438\u043d\u0438-\u0438\u043d\u0442\u0440\u0438\u0433\u0443 \u0432\u043e\u043a\u0440\u0443\u0433 <i>std::string<\/i>, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u0443\u044e \u0441 \u0434\u043e\u043a\u043b\u0430\u0434\u0430\u043c\u0438 \u043c\u043e\u0435\u0433\u043e \u043a\u043e\u043b\u043b\u0435\u0433\u0438 \u0410\u043d\u0434\u0440\u0435\u044f \u041a\u0430\u0440\u043f\u043e\u0432\u0430. \u0418\u0442\u0430\u043a, \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443:<\/p>\n<ol>\n<li>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u0410\u043d\u0434\u0440\u0435\u044f (C++ Russia 2016) \u00ab\u041f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0435 \u0431\u0430\u0439\u043a\u0438 \u043e\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u043a\u043e\u0434\u0430\u00bb \u0441 30:05 \u2014 <a href=\"https:\/\/youtu.be\/dDm8odp8PnA?t=30m5s\">\u0441\u0441\u044b\u043b\u043a\u0430<\/a>. <\/li>\n<li>\u041b\u0451\u0433\u043a\u0438\u0439 \u0442\u0440\u043e\u043b\u043b\u0438\u043d\u0433 \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a \u043c\u044b \u043e\u0442 \u0410\u043d\u0442\u043e\u043d\u0430 \u041f\u043e\u043b\u0443\u0445\u0438\u043d\u0430 (C++ Russia 2017) \u0432 \u0434\u043e\u043a\u043b\u0430\u0434\u0435 \u00ab\u041a\u0430\u043a \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435 \u043d\u0430\u0434\u043e: C++ \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u043e\u0432\u00bb \u0441 2:00 \u2014 <a href=\"https:\/\/youtu.be\/rJWSSWYL83U?t=2m0s\">\u0441\u0441\u044b\u043b\u043a\u0430<\/a>.<\/li>\n<li>\u0420\u0430\u0441\u0441\u043a\u0430\u0437 \u0410\u043d\u0434\u0440\u0435\u044f \u043d\u0430 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438 C++ Russia 2018, \u0447\u0442\u043e \u043c\u044b \u043d\u0435 \u0434\u0438\u043d\u043e\u0437\u0430\u0432\u0440\u044b \u0438 \u0443\u0447\u0438\u043c\u0441\u044f \u043d\u043e\u0432\u043e\u043c\u0443: \u00ab\u042d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439 C++\u00bb \u0441 12:21 \u2014 <a href=\"https:\/\/youtu.be\/QU63wpGBvjE?t=12m21s\">\u0441\u0441\u044b\u043b\u043a\u0430<\/a>.<\/li>\n<\/ol>\n<p>  \u041d\u0430 \u044d\u0442\u043e\u043c \u0432\u0441\u0451! \u041f\u0440\u0438\u044f\u0442\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u0430 \u0441 \u0434\u043e\u043a\u043b\u0430\u0434\u0430\u043c\u0438.<\/div>\n<p>        <script class=\"js-mediator-script\">!function(e){function t(t,n){if(!(n in e)){for(var r,a=e.document,i=a.scripts,o=i.length;o--;)if(-1!==i[o].src.indexOf(t)){r=i[o];break}if(!r){r=a.createElement(\"script\"),r.type=\"text\/javascript\",r.async=!0,r.defer=!0,r.src=t,r.charset=\"UTF-8\";var d=function(){var e=a.getElementsByTagName(\"script\")[0];e.parentNode.insertBefore(r,e)};\"[object Opera]\"==e.opera?a.addEventListener?a.addEventListener(\"DOMContentLoaded\",d,!1):e.attachEvent(\"onload\",d):d()}}}t(\"\/\/mediator.mail.ru\/script\/2820404\/\",\"_mediator\")}(window);<\/script>     <br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/company\/pvs-studio\/blog\/418645\/\"> https:\/\/habr.com\/company\/pvs-studio\/blog\/418645\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div data-io-article-url=\"https:\/\/habr.com\/company\/pvs-studio\/blog\/418645\/\" class=\"post__text post__text-html js-mediator-article\">\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/if\/m8\/km\/ifm8kmasjfgchispcdfdx3-2ax0.png\"><\/div>\n<p>  \u0421 19 \u043f\u043e 21 \u0430\u043f\u0440\u0435\u043b\u044f \u0432 \u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433\u0435 \u043f\u0440\u043e\u0448\u043b\u0430 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u044f \u0421++ Russia 2018. \u0418\u0437 \u0433\u043e\u0434\u0430 \u0432 \u0433\u043e\u0434 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0438 \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043d\u0430 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0432\u044b\u0448\u0435, \u0447\u0442\u043e \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0440\u0430\u0434\u043e\u0432\u0430\u0442\u044c. \u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0431\u0435\u0441\u0441\u043c\u0435\u043d\u043d\u043e\u043c\u0443 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0442\u043e\u0440\u0443 \u0421++ Russia \u0421\u0435\u0440\u0433\u0435\u044e \u041f\u043b\u0430\u0442\u043e\u043d\u043e\u0432\u0443 \u0437\u0430 \u0435\u0433\u043e \u0432\u043a\u043b\u0430\u0434 \u0432 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-287892","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/287892","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=287892"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/287892\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=287892"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=287892"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=287892"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}