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:
I honestly got quite dissappointed at Rust.


Not being able to do self-referencing struct is kinda pain in the ass to write a pricing model lib.
 

Daniel Duffy

C++ author, trainer
I honestly got quite dissappointed at Rust.


Not being able to do self-referencing struct is kinda pain in the ass to write a pricing model lib.
It would be for kiddy stuff in C++.

My biggest disappointment was someome telling me that I should learn Rust. I said NO and he got angry :ninja::ninja: At least he didn't mention GO.

People can get up tight about languages. Funny old world.
 
Last edited:

Daniel Duffy

C++ author, trainer
In 100 years time we will be saying "Starship Holodeck: C++ inside".

Fortran is not a good analogy (it's mostly in academia and besides it's hiding in numpy and scipy). Cobol was born 1959 and still in use. Probably 90% of all business software runs on Cobol. No kidding.
For the record, 100 years ago yours truly was a certified Cobol programmer.

41578_2018_7_Figa_HTML.jpg
 
Last edited:
People are very clannish.
I like all languages that begin with a C.

This is a nice one summary LOL. C/C++/C# are all good (I have successfully written serious production quality code with these)

I don't mind learning new lang as long as there is indeed a use case for it.

Rust is indeed a very safe language (but man... pain in the ass... fk that)
 

Daniel Duffy

C++ author, trainer
And we can add C++/CLI.

BTW What about Ada (a well-kept secret?)



Because of Ada's safety-critical support features, it is now used not only for military applications, but also in commercial projects where a software bug can have severe consequences, e.g., avionics and air traffic control, commercial rockets such as the Ariane 4 and 5, satellites and other space systems, railway transport and banking.[18] For example, the Airplane Information Management System, the fly-by-wire system software in the Boeing 777, was written in Ada.[30][31] Developed by Honeywell Air Transport Systems in collaboration with consultants from DDC-I, it became arguably the best-known of any Ada project, civilian or military.[30][31] The Canadian Automated Air Traffic System was written in 1 million lines of Ada (SLOC count). It featured advanced distributed processing, a distributed Ada database, and object-oriented design. Ada is also used in other air traffic systems, e.g., the UK's next-generation Interim Future Area Control Tools Support (iFACTS) air traffic control system is designed and implemented using SPARK Ada.[32] It is also used in the French TVM in-cab signalling system on the TGV high-speed rail system, and the metro suburban trains in Paris, London, Hong Kong and New York City.[18][33]
 
Last edited:

Daniel Duffy

C++ author, trainer
This is a nice one summary LOL. C/C++/C# are all good (I have successfully written serious production quality code with these)
Just thinking about succesful languages ... many of them are based on C syntax style. Even Java has it.

Rust seems to have gone its own way ... so developers have to change gears in learning new syntax.
 
Last edited:
Just thinking about succesful languages ... many of them are based on C syntax style. Even Java has it.

Rust seems to have gone its own way ... so developers have to change gears in learning new syntax.
syntax i am ok with Rust. Trait oriented I am also ok with.

but the lifetime is hell no... and really pissed off at the answer "you cannot do that in safe rust" every freaking time from Rust expert, even for very simple stuff like ref structs

my biggest beef with Rust is the fact that ppl claim it can do everything similar to C/C++ performance when you scale it. The reality is it is very limited to certain applicaiton when you need heavily parrallelization, and if you follow the Rust borrow rules, then you get thread-safe for free sure.

For certain application such a pricing lib when you need to deal with the "evil" boss, which requres mutations and lazy evaluation, this language simply does not offer such flexibility.

One example is Rc<RefCell<T>> vs Rc<T>, without life time, you either all mutable or all immutable, you cannot do mixed mutable (from owner) and immutable (while shared). This is simply stupid...)(%* )(@Q*Q% ^)(Q&*#^)(TQW)(R
 
Last edited:

Daniel Duffy

C++ author, trainer
"you cannot do that in safe rust" every freaking time from Rust expert, "

Rust treats you like a child/criminal.

C++ == grown-up adult.
 

Daniel Duffy

C++ author, trainer
There is no language that does everything. IBM tried it with PL/I 50 years ago. I learned PL/C at uni.



PL/I = a*Fortran + b*COBOL, a + b = 100%.

The perfect programming language goes to 11

 
Do you mean tradition finance (excel, PowerPoint stuff and just moving numbers around) or the Quantitative finance or both?

Cast your eye over the history of finance. Until the early '70s, finance used to be a sleepy backwater. The explosion of financial markets -- and by implication quant finance -- occurred after the US went off the gold standard and became completely a fiat currency. This operated in conjunction with (after 1990) the US spearheading economic globalization. This has been coming to an end the last few years and its demise -- and the demise of the dollar in world trade -- will probably only accelerate. This probably means the role of finance in all its forms will decline, maybe drastically.
 
Top