Loading…
C++Now 2016 has ended
Please visit the C++Now website.

Log in to bookmark your favorites and sync them to your phone or calendar.

tutorial [clear filter]
Tuesday, May 10
 

2:00pm

Practical Performance Practices
In the past 6 years ChaiScript's performance has been improved by nearly 100x. This was not accomplished by adding a virtual machine or performing dynamic recompilation. Instead, these increases have been accomplished by moving to more simple, cleaner, idiomatic C++ and by following some simple rules. We will outline these concepts with examples for how they both simplified code while improving performance.

Speakers
avatar for Jason Turner

Jason Turner

Developer, Trainer, Speaker
Host of C++Weekly https://www.youtube.com/c/JasonTurner-lefticus, Co-host of CppCast http://cppcast.com, Co-creator and maintainer of the embedded scripting language for C++, ChaiScript http://chaiscript.com, and author and curator of the forkable coding standards document http://cppbestpractices.com.I'm... Read More →


Tuesday May 10, 2016 2:00pm - 3:30pm
Flug Auditorium
 
Wednesday, May 11
 

11:00am

Come Stream with Me: build performant, simple, parallel applications in C++ using RaftLib
RaftLib aims to make authoring performant parallel applications in C++ simple. It utilizes the familiar semantics of stream operators to link multiple parallel actors into a single multi-threaded, streaming application. Stream processing is a compute paradigm that has been around for decades, yet until recently has failed to garner the same attention as other mainstream languages and libraries for parallel processing (e.g., C++, OpenMP, MPI). RaftLib aims to fully exploit the stream processing paradigm, enabling a full spectrum of streaming graph optimizations, while providing a platform for the exploration of integrability with legacy C/C++ code. RaftLib is built as a C++ template library, enabling programmers to utilize the robust C++ standard library, and legacy code, along with RaftLib’s parallelization framework. This session covers what RaftLib is, how it works, how to use it, and lastly we'll have some hands on application building.

Speakers
avatar for Jonathan Beard

Jonathan Beard

Staff Research Engineer, ARM Inc.
Jonathan Beard received a BS (Biology) and BA (International Studies) in 2005 from the Louisiana State University, MS (Bioinformatics) in 2010 from The Johns Hopkins University, and a PhD in Computer Science from Washington University in St. Louis in 2015. Jonathan served as a U.S... Read More →


Wednesday May 11, 2016 11:00am - 12:30pm
Bethe

4:30pm

Implementation of a multithreaded compile-time ECS in C++14
An alternative to deep inheritance trees for game and application architecture design is "composition". Separating data from logic allows the code to be more reusable and more efficient, alongside additional benefits. Using modern C++14 features and heavy metaprogramming, it is possible to design an efficient and user-friendly compile-time multithreaded component-based entity system library, striving for intuitive syntax and cost-free abstractions. By leveraging the compile-time knowledge regarding components and systems, the implementation can figure out what computations can run in parallel and how to efficiently store and manage components.

Speakers
avatar for Vittorio Romeo

Vittorio Romeo

Software Engineer, Bloomberg
Vittorio Romeo (B.Sc. Computer Science) has been a Software Engineer at Bloomberg for more than 3 years, working on mission-critical company C++ infrastructure and providing Modern C++ training to hundreds of fellow employees.He began programming around the age of 8 and quickly became... Read More →


Wednesday May 11, 2016 4:30pm - 6:00pm
Bethe

4:30pm

Implementing a lock-free atomic_shared_ptr
In this session, we will explore some of the possible implementation options for atomic_shared_ptr. In particular, we will examine a lock-free implementation and discuss the performance ramifications of this implementation choice.

Speakers
MM

Michael McCarty

Principal Software Engineer, Siemens PLM Software
I have been a professional C++ developer for the last 20+ years with experience in 3D graphics, software design, and concurrency.


Wednesday May 11, 2016 4:30pm - 6:00pm
Booz Allen Hamilton
 
Thursday, May 12
 

9:00am

Let's make a web match-3 game in C++14 using Dependency Injection(experimental Boost.DI), Meta State Machine(experimental Boost.MSM-lite) RangeV3 and MSVC and Emscripten
Developers often complain that there is no practical usage for some design patterns like Dependency Injection. This tutorial will prove them wrong. It will show them how to use the whole potential of Dependency Injection/Meta State Machine/MSVC to make a game/app quickly with minimal maintenance as well as testing support. During this tutorial we are going to create a match-3 game for the WEB using only C++14 features, Emscripten and mentioned experimental Boost.DI/Boost.MSM-lite libraries. After this tutorial you will have more knowledge about Dependency Injection/Meta State Machine and how they fit together. On top of that you will see how to use Emscripten and C++14 in order to create cross-platform games/apps. Experimental Boost.DI Although Dependency Injection is a popular concept in Java and C# it's not a first class citizen in C++. The reasons behind this are mostly related to the missing C++ features like reflection and popular believing that Dependency Injection will slow down the execution. Well, that could have been true a few years ago, however experimental Boost.DI is going to change this belief! During this lecture you will be exposed to main features of experimental Boost.DI, such as: - how it is possible to create objects without macros and reflection support? - how there is no performance overhead when using experimental Boost.DI? - how experimental Boost.DI provides a compile time guarantee when creating objects? - how experimental Boost.DI compiles so fast? - how experimental Boost.DI gives short error messages without using concepts? After this part you would have a better understanding of the Dependency Injection and how C++14 made it possible. Experimental Boost.MSM-lite Boost has a great Boost.MSM library. Boost.MSM - eUML is even better because it provides a DSL for creating transition tables. However, it is really hard to use Boost.MSM library on a larger scale due to horrible compilation times and big executable files. Guess what, experimental Boost.MSM-lite is going to change it! During this lecture you will be shown how C++14 was used to achieve the following: - faster compilation times - up to 60x times faster than Boost.MSM - smaller executable size - up to 15x smaller - slightly better performance than Boost.MSM! - smaller memory usage - short error messages After this part you will understand what Meta State Machine is, why it is so useful and how experimental Boost.MSM-lite can achieve the above goals.

Speakers
avatar for Kris Jusiak

Kris Jusiak

Senior Software Engineer, Quantlab Financial, LLC
Kris is a Software Engineer with interest in modern C++ development, especially during compilation time where performance and quality matters. He has experience in industries such as telecommunications, games, and finance as well as being an open source enthusiast and author of the... Read More →


Thursday May 12, 2016 9:00am - 10:30am
Bethe

11:00am

Implementing `static` control flow in C++14
There has always been great interest in imperative compile-time control flow: as an example, consider all the existing `static_if` proposals and the recently accepted `constexpr_if` construct for C++17. What if you were told that it is actually possible to implement imperative control flow in C++14? In this tutorial, the implementation and design of a compile-time `static_if` branching construct and of a compile-time `static_for` iteration construct will be shown and analyzed. These constructs will then be compared to traditional solutions and upcoming C++17 features, examining advantages and drawbacks.

Speakers
avatar for Vittorio Romeo

Vittorio Romeo

Software Engineer, Bloomberg
Vittorio Romeo (B.Sc. Computer Science) has been a Software Engineer at Bloomberg for more than 3 years, working on mission-critical company C++ infrastructure and providing Modern C++ training to hundreds of fellow employees.He began programming around the age of 8 and quickly became... Read More →


Thursday May 12, 2016 11:00am - 12:30pm
Flug Auditorium

4:30pm

Preprocessor-aware Automated Refactoring
The arrival of C++11/14 and the emergence of sophisticated refactoring tools based on Clang have generated a lot of interest in using automated methods to update code to modern coding styles. One stumbling block has been the widespread use of preprocessor constructs to implement older idioms. Clang-based tools "see" the source AST after it has been preprocessed and then parsed, so they have a limited ability to refactor preprocessor-based (or interacting) idioms. Fortunately, we have some tools available that focus on the preprocessor step. The Boost.Wave library, introduced in 1.33, provides both a fully functional preprocessor and hooks for modifying generated output, or performing other actions, as it runs. Clang provides similar functionality with the pp-trace tool and PPCallbacks interface. The presenter will give an introduction to these two preprocessor tools and then demonstrate how each can be leveraged, in concert with Clang's AST rewriter, to modernize some popular preprocessor-based code idioms.

Speakers
avatar for Jeff Trull

Jeff Trull

Principal, Trull Consulting
Electronic CAD algorithmsModern C++ design patterns


Thursday May 12, 2016 4:30pm - 5:15pm
Booz Allen Hamilton

5:15pm

Why and How To Add Scripting
We will demonstrate why every C++ application can benefit from having scripting engine integration. We will then walk through the different tools you can use to integrate scripting in your C++ application. This will include the binding generator SWIG, tools such as sol2 and boost::python, and the speaker's own ChaiScript.

Speakers
avatar for Jason Turner

Jason Turner

Developer, Trainer, Speaker
Host of C++Weekly https://www.youtube.com/c/JasonTurner-lefticus, Co-host of CppCast http://cppcast.com, Co-creator and maintainer of the embedded scripting language for C++, ChaiScript http://chaiscript.com, and author and curator of the forkable coding standards document http://cppbestpractices.com.I'm... Read More →


Thursday May 12, 2016 5:15pm - 6:00pm
Flug Auditorium
 
Friday, May 13
 

11:00am

Understanding Boost.Build
Boost.Build is the build system used by the Boost C++ libraries. A basic understanding of this tool is a must for anyone who intends to submit a library to Boost. In this session, I will discuss basic usage, advanced usage, and troubleshooting.

Speakers
SW

Steven Watanabe

Steven is the author of two Boost libraries and has been an active member of the Boost community since 2005. He helps to maintain several Boost infrastructure components including Boost.Build.


Friday May 13, 2016 11:00am - 12:30pm
Bethe