A week from now, the CLion and ReSharper C++ teams will be visiting Bellevue, Washington, USA, for CppCon 2017, the biggest yearly event in the C++ development world!
Come and listen to the talk given by our team members, and stop by our booth in the exhibition area between Wednesday, September 27, and Thursday, September 28, for a chat or a demo of the products, and you could win a t-shirt and a license. We have some great giveaways too, so come over and grab yourself a tricky mind teaser!
Before the CppCon visit, Anastasia Kazakova, CLion Product Marketing Manager, will be in NYC and Chicago giving talks to local user groups. Both talks are also going to be included in the CppCon schedule this year. So don’t worry if you miss them the first time round you have a few chances to catch them! By the way, talking about Catch, Phil Nash (the author of the famous Catch unit testing framework, and a JetBrains developer advocate) will also be giving a talk and is eager to chat with you at our booth!
New standards to the rescue: the view through an IDE’s glasses, by Anastasia Kazakova
Chicago C/C++ Users group, Thursday, 6.30pm, September 21
CppCon 2017, Monday, 2pm, September 25
We often talk about how new language features can help developers to write more accurate and concise code. There is another type of discussion to be had on how tools help leverage language issues and support developers. How about a third perspective, on how language can help tools to do better?
As C++ tool vendors, we are able share our experience with the trickiness and peculiarities of the C++ language, including preprocessor and non-trivial parsing. It’s time now to talk about the upcoming language changes from the IDE’s point of view.
In this talk, I’ll identify the most important issues with the language from the IDE’s perspective and will show how new language standards, as well as other initiatives like C++ Core Guidelines, are helpful and beneficial to the IDEs. I’ll cover a variety of features from if constexpr to Concepts and Modules, as well as std2 and some other initiatives that are no more than proposals at this point. Come and see the language from our perspective.
Tools from the C++ eco-system to save a leg, by Anastasia Kazakova
New York C++ Developers Group, Monday, 7.30pm, September 18
CppCon 2017, Tuesday, 3.15pm, September 26
C++ gives you enough rope to shoot your leg off. Readable (and thus easy to maintain, easy to support) and error-free code in C++ is hard to achieve. And while modern C++ standards bring lots of fantastic opportunities and improvements to the language, sometimes they make the task of writing high-quality code even harder. Or can’t we just cook them right? Can the tools help?
In this talk, I’ll highlight the main trickiness of C++, including readability problems, some real-world issues, problems that grow out of C++ context-dependent parsing. I’ll then try to guide you in how to eliminate them by using tools from the C++ eco-system. This will cover code styles and supportive tools, code generation snippets, code analysis (including CLion’s inspections and Data Flow Analysis, C++ Code Guidelines, and clang-tidy checks), and refactorings. I will also take some time to discuss unit testing frameworks and dependency managers as tools which are essential for high-quality code development.
The Holy Grail – A Hash Array Mapped Trie for C++, by Phil Nash
CppCon 2017, Friday, 9am, September 29
C++ has a handful of associative containers. We started with set and map, both based on node-based red-black trees. These are fine but are not the most efficient and, in particular, suffer from more cache misses than we’d like. If we want to build persistent versions of them, it’s achievable but aggravates the problems even more and adds considerable extra complexity. (I know – I’ve done it!) C++11 brought the hash-map based unordered_set and unordered_map, which are generally much faster, with better cache locality – but can be less memory-efficient and also don’t translate so easily into persistent versions.
But there exists another general-purpose data structure that combines many of the characteristics of tree and hash tables into something that in many important ways is superior to both, and with minimal downside (they are close but not quite as fast as pure hash tables). Hash Array Mapped Tries are more memory-efficient than hash tables and, as a bonus, are trivially made persistent – with big implications for concurrency, functional programming, and other applications that benefit from being able to treat them immutably (as well as share large amounts of common state in memory at once). This talk will describe how this data structure works from the ground up, and will look at a reference implementation I am writing with the intention of proposing it as a Boost library – and possibly later for standardization. We’ll also look at how it can be used in practice, and at some of the performance characteristics.
See you in US!
The JetBrains C++ Team