C++ will be used for the next 50-100 years in financial services

If you're toying with the idea of learning C++ for a job in financial services, drawn by the promise of huge pay but put off by the awareness that it's really not an easy language to earn - particularly compared to Python, Rainer Grimm has a message for you: do it. C++ is deeply embedded in the financial services industry, and that's not going to change anytime soon.

"When I first started studying mathematics in 1994, my professor said to me that it wasn't worth learning FORTRAN," says Grimm. "He said FORTRAN wouldn't be used much in the future, but there's still plenty of FORTRAN around now. He said much the same about C++, but when a programming language is used as much as C++ is, it will be used for the next 50-100 years."

In banking and elsewhere, C++ is used for low latency coding applications. "The best jobs for C++ coders are in high frequency trading," says Grimm. The language is also used by games developers and automotive manufacturers. "C++ is used where you need to talk directly to hardware, in an abstract way," he adds. "There's no real alternative to it."

Grimm might be biased, but he's also in a good position to judge the programming landscape. Based in Germany, Grimm is one of the top C++ trainers in the world. Before the pandemic, he travelled globally. These days, he mostly tutors groups online. He's popular: "I'm booked up for 2022," Grimm confesses.

Should you learn C++ on your own?​

There's a reason C++ tutors like Grimm are needed. "You can learn C++ on your own, but your journey will be way, way longer [on your own than if you have a tutor]," Grimm says. "C++ is a complex language, you need to learn how to do it right instead of falling into traps."

What are the traps? Grimm says it's all about avoiding the "old techniques." - "C++ is a 40-year-old language – it was developed with hardware in mind that is now 40 years old," he says. "The language has improved a lot in the past 20 years."

The main problem with self-taught C++, or even C++ taught at universities, is that people tend to start on old versions of the language, says Grimm. At universities, this is largely because professors themselves cut their teeth on C++ '98 and think students need to start there too, but the older versions of the language require manual memory allocation which is unnecessary in the most recent iterations.

If you're learning C++, you should start on a version no older than C++ 11, says Grimm. From there you can move onto C++14 or C++20 (the most recent version). "It's very important that you start with modern C++, not with legacy C++ and that you learn by design," says Grimm. "When you're really, really, good on modern C++ you can start to think about how it was done before. But you don't start on the complex levels of abstraction. It's like when you're learning to drive a car - you need to learn how to use a brake, not how the brake works."

C++ or Python?​

Python is an easier language to learn than C++, and for this reason it tends to be the go-to language for junior coders. But Python will only get you so far, says Grimm. "Python is a good first step, but when you want to go deep into programming, you need to learn C++," he says. "Someone has to implement the infrastructure. Python is often only a wrapper around the C++ code."

C++ or Rust?​

There's also Rust, which is the up-and-coming low latency language and is particularly popular in the crypto space. Grimm is admiring of Rust. As a recent language, it avoids many of the pitfalls of C++ which he says was "designed with a mindset which no longer fits." This includes concurrency, polymorphism and memory management. "When they designed Rust, they did it right by design," says Grimm. "In C++ we have to improve the functionality with updates that extend the language."

Despite Rust's inherent advantages, Grimm says there's little chance it will replace C++ in the short term. It's simply too new. "Rust is not mature enough and cannot be certified," he says. One day, it might be a rival, but for the moment, he says learning C++ remains by far your best bet.
c-future.jpeg


By Sarah Butcher
 
Last edited:
June Headline: C++ surpasses C for the first time in history
C++ is the new number 2 in the TIOBE index. Originally, dubbed as the better and object-oriented version of C, it took C++ 39 years after its inception to beat C's popularity. C++ has never been that high in the TIOBE index, whereas C has never been that low.
This makes me happy 😂
 
June Headline: C++ surpasses C for the first time in history
C++ is the new number 2 in the TIOBE index. Originally, dubbed as the better and object-oriented version of C, it took C++ 39 years after its inception to beat C's popularity. C++ has never been that high in the TIOBE index, whereas C has never been that low.
If you look carefully, then you will see that his is actually because its popularity fell less than that of C :)
 
A summary high-impact C++ features (personal view)

C++11 is a version of the ISO/IEC 14882 standard for C++ and it replaced C++03; it was later replaced by C++14. It is a major update to the language and its goals were to improve the quality in general, in particular promoting efficiency, reliability, usability and applicability to a wide range of problems, for example by the following features:

F1: Rvalues and move constructors (avoiding deep copies and passing objects by value).

F2: constexpr (generalised constant expressions).

F3: Initialiser lists and uniform initialisation.

F4: Type inference (template metaprogramming techniques); determining the type of an expression at compile time.

F5: Object construction improvement.

F6: Explicit overrides and final.

F7: Template aliases.

F8: Variadic templates.

F9: Explicitly defaulted and deleted functions.



Other new features in C++11 are:

F10: Upgrades to standard library components.

F11: Threading facilities.

F12: Tuple types.

F13: Hash tables.

F14: Regular expressions.

F15: General purpose smart pointers.

F16: Extensible random number facility.

F17: Polymorphic wrappers for function objects.

F18: Type traits for metaprogramming.



Many of these topics have already been discussed in Duffy (2018). We shall also discuss them in this chapter as well as future chapters in this book.

C++14 is a small extension to C++11 containing bug fixes and small improvements. It was replaced by C++17.

C++17

C++17 a number of new features, too many to mention here. Some of the most important features are:

F19: Fold expressions for variadic templates.

F20: Class template argument deduction (CTAD).

F21: Optional objects.

F22: File system library based on boost::filesystem.

F23: Parallel versions of STL algorithms.

F24: Variant and Byte data types.



C++20

C++20 adds more new major features than C++14 or C++17. Some of the most important features are:



F25: Concepts (see chapter 19).

F26: Modules.

F27: New functionality for lambdas.

F28: Coroutines.

F29: Ranges.

F30: std::span (provide a view to a contiguous array).
 

Attachments

Last edited:
Back
Top