Every three years, C++ introduces new standards. Our team member, Oleksandr Syniakov, Director of the Engineering Software department, has already analyzed the latest standards and presented them in a convenient format. You can compare how code looked in previous versions and how it has changed in C++17, C++20, and C++23.
Oleksandr has been working with C++ for over 20 years, "It's the first technology I started learning because I was always interested in game development, and in the 90s, C++ was the only language used for that. So, I've witnessed all the stages of C++ development and its evolution since around 1998. Therefore, I understand its progression and the decisions the Committee made—the principal entity responsible for developing the programming language."
In this article, Oleksandr will share his insights into why C++ is forever and what is worth reading to stay up-to-date with the latest news. You will also find a document that compiles tips on using the new features.
C++ is forever. And here's why
As the head of the Engineering Software department, I constantly see how the demand for specific technologies changes in projects. And no matter what technology is in demand today, C++ is always needed. From my perspective, there are several reasons for it.
The first reason—there are many libraries for C++, more than for other languages. Whether it's graphics, mathematics, sound, or physics—everything you can think of is already there in C++ or C. It works well, has been quality-tested, verified for decades, and everyone knows about the issues, the speed, and so on.
Secondly, much of the legacy code is written in C++ and consistently requires support. Converting this code to another programming language is not feasible in this case.
The third reason: despite all the statements about the growth of processor power, its increase is facing significant challenges. Moore's Law, which observes that the number of transistors on microchips roughly doubles every two years, has been a reliable trend for decades. However, since the early 2000s, we've encountered physical and economic limitations that make it increasingly difficult to sustain this pace. Processor power continues to grow but through various means beyond just transistor scaling, such as improvements in chip architecture and parallel processing. This backdrop underscores the importance of using languages like C++, which are designed for performance and efficiency. C++ allows programmers to closely manage system resources and optimize performance critical applications, making it especially valuable in contexts where hardware advancements cannot solely be relied upon to improve performance.
Also, C++ gives you, as a programmer, full control over resources and task execution, so you can execute them 'close to the metal'. Yet, you can write understandable code and not lose speed, and this code will be executed as efficiently as possible on the processor. That's why this language is often used in the financial sector, as well as in graphical environments, and not necessarily just for games. It's movies, 3D CAD models, applications that require visual effects, and so on. Performance is needed here, and no one can show speed comparable with C++ because the philosophy of all other languages is built on a different paradigm that involves a virtual machine, which C++ doesn't have. Also, memory management, which is the programmer's job in C++, is done automatically by the compiler in other languages. And the compiler doesn't do it as efficiently as a skilled developer.
Another C++ feature is that code written even 30 years ago will compile now. Take code from a floppy disk written in the 90s, transfer it to the latest Visual Studio® environment, and it will compile and work.
Navigating a multifaceted landscape and staying informed
Currently, I see a mix of technologies in all projects our department is working on. Essentially, a C++ programmer now needs to know and use the Python®, JavaScript® languages, and the .NET platform in their daily work as well. However, I am confident that if a person knows C++, they essentially know everything else. C++ is a super-multi-paradigm language. When you find yourself, say, in .NET, you realize that you used this paradigm in C++. Obviously, not with the same code, but the philosophy and idea will be clear to you.
I believe it is essential for a developer to keep track of all the new features that appear in the programming language they work with. Besides, it is also very useful to follow what the community discusses, what questions are raised, and what changes are proposed. That's why I regularly visit the Committee's website, where updates regarding proposals for the next standard are published, as well as news related to C++, videos, lectures, podcasts, and other useful content. It's always interesting to see how the language evolves to understand how to write code for the next three years and to find out how compilers implement this support. It is important as you can write better and safer and do it more efficiently.
Additionally, the C++ community is very diverse—there are data scientists, various Microsoft®, Google®, and Facebook® gurus, and people with PhDs. They are always trying to contribute something. And when they write proposals, even if the Committee doesn't accept them later, it's still exciting to read. You can always find something new there that could potentially influence your coding style and your overall understanding of how to write programs. So, I recommend everyone who writes in C++ to check the resource periodically.
What's new in C++ standards
I have thoroughly analyzed all the latest C++ 17, C++20, and С++23 features. I would like team members to start using some of the new features to improve the quality of code and what we do in general. With each new release of the standard, the code becomes better and undergoes significant transformation.
To make it easier to assess all the changes, I have prepared a document with a comparative table showing how the old code looks, how it will look with the release of the new standard, and how it will affect you as programmers. Of course, you won't find all the new features here. I gathered them based on what would be used most frequently, excluding features that compilers haven't implemented yet and that cannot be tried out. The document will be beneficial for both juniors and seniors.
Check out the link to explore 29 new features available for use today.
Return to blog page