Speaker
Jim Kowalkowski
(Fermilab)
Description
For nearly two decades, the C++ programming language has been the
dominant programming language for experimental HEP. The publication of
ISO/IEC 14882:2011, the current version of the international standard
for the C++ programming language, makes available a variety of language
and library facilities for improving the robustness, expressiveness, and
computational efficiency of C++ code. However, much of the C++ written
by the experimental HEP community does not take advantage of the
features of the language to obtain these benefits, either due to lack of
familiarity with these features or concern that these features must
somehow be computationally inefficient.
In this paper, we address some of the features of modern C++, and show
how they can be used to make programs that are both robust and
computationally efficient. We compare and contrast simple yet realistic
examples of some common implementation patterns in C, currently-typical
C++, and modern C++, and show (when necessary, down to the level of
generated assembly language code) the quality of the executable code
produced by recent C++ compilers, with the aim of allowing the HEP
community to make informed decisions on the costs and benefits of the
use of modern C++.
Author
Dr
Marc Paterno
(Fermilab)
Co-authors
Dr
Christopher Green
(Fermilab)
Jim Kowalkowski
(Fermilab)