Code Complexity Analysis with CppDepend Tool

CppDepend is a powerful and versatile tool for analyzing code dependencies in C++. It is designed to help developers, architects, and project managers get a better understanding of the structure of their code and how different components depend on each other. With CppDepend, it is possible to visualize the relationships between different classes, methods, and other components, as well as to identify potential problems, such as tight coupling, circular dependencies, and other issues that can lead to code fragility and reduced maintainability.

Continue reading “Code Complexity Analysis with CppDepend Tool”

Discover CPPDepend 2023.1: New Features & Enhancements

CppDepend, the leading code analysis tool for C/C++ developers, announces the release of its latest version 2023.1, with exciting new features aimed at improving code quality and maintenance.

The latest version includes a Maintainability Index, which helps developers assess the maintainability of their code. The index is calculated using various metrics, including code complexity and design, and provides a single, easy-to-understand score that gives developers a quick understanding of the state of their codebase.

Continue reading “Discover CPPDepend 2023.1: New Features & Enhancements”

The Importance of C++ Distributed Build Systems

As C++ developer if you have already build a C# or a java project you could be surprised by the speed of the build compared to C++. For some C++ projects it could take few minutes and for others, it could take many hours. It depends on the project size.
And even if the compilation phase is parallelized by using the cores available, the build still take too long compared to the other languages. Here are some reasons from this good stack overflow answer: Continue reading “The Importance of C++ Distributed Build Systems”

Is the Free Lunch Over? Revisiting Herb Sutter Prediction

Back in March 2005 when herb Sutter published its famous article “The free lunch is over”  and predicted a Concurrent Programming Revolution as big as Object-Oriented Revolution. And here’s a short explanation from the article about the prediction motivation  : Continue reading “Is the Free Lunch Over? Revisiting Herb Sutter Prediction”

John Carmack: A C++ Programming Legend

Have you already seen a basketball or a soccer player plays a simple yet effective game to such a point that you say: Why couldn’t everybody play like him, he uses only easy techniques?

And as C++ programmer I had the same remark when exploring the John Carmack source code. It’s so simple, we wonder why we can ‘t develop like him.

Let’s explore some Doom3 source code choices and try to understand why the code even if it’s simple, it’s very efficient.

On November 23, 2011 id Software maintained the tradition and it released the source code of their previous engine. This source code was reviewed by many developers, here’s as an example of Doom3 feedback from fabien (orginal source): Continue reading “John Carmack: A C++ Programming Legend”

Thrashing Impact on C++ Performance: Doxygen Analysis

When the processes running on your machine attempt to allocate more memory than your system has available, the kernel begins to swap memory pages to and from the disk. This is done in order to free up sufficient physical memory to meet the RAM allocation requirements of the requestor.

Excessive use of swapping is called thrashing and is undesirable because it lowers overall system performance, mainly because hard drives are far slower than RAM. Continue reading “Thrashing Impact on C++ Performance: Doxygen Analysis”

Being a Productive C++ Developer Without Internet

As developer, How many times during a day you need to ask google for something related to your work? How to use a library? Is there a fix for an encountered problem?

Maybe the answer is at least once a day.

Currently and as developers, the internet saves us a lot of time. Whatever the problem you have, just search the right keywords in google and instantly and in many cases you have a result that matches your need. Continue reading “Being a Productive C++ Developer Without Internet”

C++ Algorithm Evolution: A Historical Flashback

Before the initial standardization in 1998, C++ was developed by Bjarne Stroustrup at Bell Labs since 1979, as an extension of the C language as he wanted an efficient and flexible language similar to C

In 1983, “C with Classes” was renamed to “C++” , adding new features that included virtual functions, function name and operator overloading, references, constants, type-safe free-store memory allocation (new/delete), improved type checking. Continue reading “C++ Algorithm Evolution: A Historical Flashback”

C++20 Concepts: Eliminating Generics Paradigm Drawbacks

As Bjarne Stroustrup points out, “C++ is a multi-paradigmed language.” It supports many different styles of programs, or paradigms, and object-oriented programming is only one of these. Some of the others are structured programming, and generic programming. In the last few years C++ experts like Andrei Alexandrescu, Scott Meyers and Herb Sutter promotes the uses of the generic programming and they qualify it as Modern C++ Design.

Here’s what say Andrei Alexandrescu about the Modern C++ design:

Modern C++ Design defines and systematically uses generic components - highly flexible design artifacts that are mixable and matchable to obtain rich behaviors with a small, orthogonal body of code.

Three assertions are interesting in his point of view: Continue reading “C++20 Concepts: Eliminating Generics Paradigm Drawbacks”