The Future Is Here: C++11 -- Bjarne Stroustrup
Prof. Stroustrup spoke at A9 last week on "The Future is Here: C++11." The video is now available on YouTube:
The Future Is Here: C++11
Special Guest Lecture by C++ Inventor Bjarne Stroustrup
March 23-28, London, UK
By Blog Staff | Aug 29, 2013 11:46 AM | Tags: None
Prof. Stroustrup spoke at A9 last week on "The Future is Here: C++11." The video is now available on YouTube:
The Future Is Here: C++11
Special Guest Lecture by C++ Inventor Bjarne Stroustrup
By Blog Staff | Aug 7, 2013 07:08 AM | Tags: None
Bjarne Stroustrup spoke at this summer's ACM International Collegiate Programming Contest World Finals held in St. Petersburg, Russia. While there, he also gave this 8-minute interview in the context of balancing efficient code with the out-of-the-box problem solving required by ICPC problem challenges.
2013 ICPC Bjarne Stroustrup
C++ inventor Bjarne Stroustrup discusses the relationship of programming languages and competition and the benefit of participating in events such as the ACM-ICPC.
By Blog Staff | Jul 28, 2013 10:29 AM | Tags: advanced
From this month's KDE Akademy conference:
Expression Templates: How I Learned to Stop Worrying and Love Template Meta-Programming (30 min video) (slides)
by Volker Krause
The speaker's opening words should be enough to get you to set aside a half hour:
"I'm going to talk about template metaprogramming in general and expression templates in particular. And that's obviously something we use every day. <laughter> You laugh, but in half an hour you will see that we actually do..."
Abstract:
Contrary to common perception, expression templates are not bizarre meta-programming theory but something you are (possibly unknowingly) using every day. We'll see what they are good for, how they work and and what to do if they don't.
Originally invented by Todd Veldhuizen for the use in the math library Blitz++, expression templates are often seen as one of those esoteric applications of C++ template meta-programming that results in completely incomprehensible code that only Marc and Thiago understand at best, and that gives you compiler errors longer than an average discussion on the right display manager.
In this talk we will try to counter this (wrong) perception, by looking at why and how this (syntactically) indeed somewhat complex code results in very elegant API and often outperforms conventional implementations. On the way we will see that C++ template meta-programming code is actually not that scary, and that template-related compiler errors aren't that bad either.
Now why would this be of interest to the average Qt or KDE developer? Well, since the introduction of QStringBuilder in Qt 4.7 we have expression templates for a very common use case, string concatenations. And if your code is somewhere in KDE Git, it's very likely Laurent enabled the use of QStringBuilder for you already. So, we are not talking about exotic theory here, but about tools you are using every day.
By NoSenseEtAl | Jul 24, 2013 07:22 AM | Tags: intermediate
[Blog suggestion by NoSenseEtAl. Text below added by editor.]
Scott Meyers gave a well-received "beta" talk last week at NWCPP on the topic below, which he described as the most complex Item he's encountered as he prepares his upcoming book Effective C++11/14:
The Universal Reference/Overloading Collision Conundrum
by Scott Meyers
Abstract:
To help address the confusion that arises when rvalue references become lvalue references through reference collapsing, Scott Meyers introduced the notion of "universal references." In this presentation, he builds on this foundation by explaining that overloading functions on rvalue references is sensible and useful, while seemingly similar overloading on universal references yields confusing, unhelpful behavior. But what do you do when you want to write a perfect forwarding function (which requires universal references), yet you want to customize its behavior for certain types? If overloading is off the table, what's on? In this talk, Scott surveys a variety of options.
Though Scott will give a one-slide overview of the idea behind universal references at the beginning of the presentation, attendees are encouraged to familiarize themselves with the notion in more detail prior to the talk. Links to written and video introductions to universal references are available here.
By marshall | Jun 27, 2013 09:54 AM | Tags: intermediate experimental advanced
Videos of the keynotes and sessions from C++Now 2013, held in May are now available.
They are available on YouTube.
By Mantosh Kumar | Jun 23, 2013 01:56 PM | Tags: stepanov performance intermediate efficiency components advanced
A wonderful video series by the inventor of the Standard Template Library (STL).
Video Series: Efficient Programming with Components
by Alexander Stepanov
Performance is essential for infrastructure software. Modern infrastructure software depends heavily on components. Therefore, writing performant code in this environment requires deep understanding of the characteristics of such components. The course will help programmers to improve performance of their code by learning how to use these existing generic components effectively. In addition, it will teach them to extend the library with new high-performance components. Along the way, participants will learn how to use C++ as a high-performance language.The course will be taught interactively with the class discussing, discovering, and developing components together.
By Blog Staff | Jun 23, 2013 10:04 AM | Tags: scalability parallel intermediate cores advanced
From the recent BoostCon/C++Now event. If you missed it there, check it out online. An updated version of this talk is also slated for the upcoming Meeting C++ this fall if you want to catch it in person.
Scaling with C++11
Edouard Alligand
As the number of cores per processor increases, software needs to be able to execute multiple tasks in parallel in order to benefit from Moore's law. This is not only a question of writing parallel algorithms, but also a matter of designing the application properly to reduce inter-thread dependencies. These dependencies may be very hard to find and are the results of decades of serial programming. Thus, writing truly scalable software is less a question of technical expertise than adopting the appropriate state of mind.
This presentation is about the design, techniques and tools used by the team who wrote the hyperscalable database "quasardb." Building upon concrete scalability challenges, the presenter will expose typical multithreading anti-patterns and how to avoid them. The topics covered include: atomics, micro locks, lock-free and wait-free containers, memory management strategies (copy on write, smart pointers, perfect forwarding...), thread local storage, asynchronous I/O, and much more!
By Blog Staff | Jun 17, 2013 08:41 AM | Tags: None
Stroustrup's ACCU keynote video is now available online.
C++11: The Future Is Here
Bjarne Stroustrup
Summary: Bjarne Stroustrup keynotes on what C++ is in general, how C++11 makes simple things even simpler, resource management, generic programming, and concurrency.
By Blog Staff | Jun 11, 2013 09:38 AM | Tags: intermediate advanced
The two latest C++ lectures by Stephan T. Lavavej, the eponymous STL, are now available:
Core C++, 8 of n
In part 8, STL digs into the do-while loop, casts, one definition rule (ODR), and his variadic template array sorter. There is a lot of information in this episode, so get comfortable, tune in, and learn.
Core C++, 9 of n
In part 9, STL digs into lambdas and other expressions. Lambdas are very useful and you've no doubt been enjoying them in your modern C++ programming. As you can imagine, STL will go deep and teach you things about lambdas that you may not know. You'll also learn a lot about order of precedence and associativity for expressions in only the way Stephan can teach you (thorough treatment). Tune in.
By marshall | Jun 10, 2013 04:09 PM | Tags: intermediate c++now boostcon
The keynote addresses for C++Now 2013 are now available.
We are confronted today with the increasing complexity of our C++ software systems. To manage this complexity and build larger applications and systems, C++ strives to form emergent structures (often found in nature, such as snowflakes' symmetrical structures), where simple patterns combine to form a remarkably complex and powerful system. These structures provide both a means to limit the complexity of each component and the essential economies of scale we rely on when developing software.
From handheld devices to warehouse-sized data centers, motivated by smaller devices and increased concerns over power consumption, we are relying upon C++ to deliver these complex systems with unmatched efficiency. Our optimizing compilers today are more important than ever before and are utterly opaque to most practicing programmers. Compounding matters, the very emergent structures which allow C++ systems to scale for humans often provide unique and unsolved challenges to optimization.
In this talk, I will start with a brief overview of how modern optimizing compilers work with C++ code at a very high level. I will then walk through the specific structures and patterns of C++ code, which are at the core of forming emergent structures out of simple, elegant elements. I will also address how these interactions can be effectively modeled and analyzed by a compiler to produce efficient final programs. All of this will be illustrated by a collection of real world case studies, which are broadly applicable and show up throughout modern C++ code bases. My goal is to give a framework for understanding these interactions both in the C++ code and the optimizing compiler, so that programmers are aware of the implications posed by these patterns. Finally, I will introduce a set of principles and techniques for designing and implementing C++ programs and libraries to specifically clear the way for modern optimizers while retaining the simplicity of each component and the power of the combined whole.
We'll discuss language life cycles, particularly as they apply to C++, from a peek at some of the very early ideas and technology behind C++ to a proposal for the next step: yet another paradigm shift, not a evolution or revolution but simply a synchronizing of meta4layers — using fertilization of the multi-cell organism as an isomorph.