Discussing Modern C++ at the INFNPublished on July 8, 2017.
Bologna is always a very nice city to visit in any occasion. With its renaissance center full of art, history, and gastronomic specialties, and its very active night life, each visit can be a unique experience. If you look carefully, though, you will find that Bologna is also one of the scientific hubs of the country.
The emilian region around the city is the core of the italian biomedical and biotech industry, and the University of Bologna Alma Mater is the oldest university in the world still operating. Besides that, Bologna also hosts one of the sections of the INFN, the National Institute of Nuclear Physics, the institute that coordinates all the italian research activities in particle physics, and is one of the main players at CERN in Geneva.
Bologna is also home to the computing technologies research center of the INFN (CNAF), which runs one of the Tier 1 data centers of CERN’s LHC computing grid. CNAF has a leading role, within the INFN, in the development of middleware software for LHC Grid and Cloud computing services, and is involved in the development of software for some of the INFN experiments. Last year, thanks to my talk at Meeting C++ about functional programming in C++, I had the pleasure to meet Francesco Giacomini, a CNAF tecnologist and C++ specialist who was so kind to give two talks in Udine about how the C++ language is employed in INFN and CNAF activities. In contrast to other areas of physics, where the use of legacy languages like FORTRAN is still the norm, the C++ language is one of the most used in the particle physics community, thanks to the leading role of CERN, which in the ’90s decided to adopt C++ for LHC simulation and data analysis software like ROOT and Geant4, and almost all of experiment-specific code.
This year, on July 7th, I was glad to return the favor by visiting CNAF to give a talk about Modern C++, together with the friend of mine Matteo Cicuttin, who works at CERMICS on finite-elements numerical methods for PDEs. Matteo, like me, is a strong advocate of the use of this language in performance-sensitive applications and his work takes full advantage of modern language features and general programming techniques.
Together we outlined some important features of the language in the context of complex high-performance code, and he showed his DiSk++ library for resolution of large PDEs systems. The talk led to an interesting debate about the status of C++ tooling support and testing facilities. You can find the slides here: Part 1 and Part 2.