GRASP Principles: Exploring Irrlicht 3D Engine

A design pattern is a general reusable solution to a commonly occurring problem within a given context in software design. Patterns are formalized best practices that the programmer can use to solve common problems when designing an application or system.

“Gang of Four” patterns are maybe the most popular ones. However, there are some basic design principles not well-known by developers, it’s the General Responsibility Assignment Software Principles, abbreviated GRASP. Continue reading “GRASP Principles: Exploring Irrlicht 3D Engine”

Explore a flexible C/C++ SonarQube plugin based on CppDepend.

Both CppDepend and SonarQube are static analyzers that offer a rule-based system to detect problems in C/C++ code. However, the CppDepend default Rules-Set has very few overlaps with the SonarQube rules

Basically, the SonarQube rules are good at analyzing what is happening inside a method, the code flow while the CppDepend code model, on which the CppDepend rules are based, is optimized for a 360 view of particular higher-scale areas including OOP, dependencies, metrics, breaking changes, mutability, naming…
Continue reading “Explore a flexible C/C++ SonarQube plugin based on CppDepend.”

C++ 17 In Detail Book Review

Since its creation, C++ evolved continuously and it passed many major milestones from the C with classes to the rise of the new standards. From 1991 to 2011 the language evolved slowly and the evolution comes from the libraries like STL and Boost. However, from 2011 many features were added to the standard, thanks to the new standards C++11, C++14, C++17, and the coming C++20. Continue reading “C++ 17 In Detail Book Review”

Open Source Projects: Tutorials for Code Quality

Quality is not something that can be easily added later. It’s preferable to take care of it from the beginning. Many companies dedicated a big budget to purchase tools with many thousands of dollars and called upon independent consultants to audit their code base and produce some reports. This is still a good initiative to improve the code quality. Continue reading “Open Source Projects: Tutorials for Code Quality”

Detect not well implemented C++ design patterns automatically.

Design patterns are solutions to software design problems you find again and again in real-world application development. Patterns are about reusable designs and interactions of objects. Some of them are very popular like singleton, factory, and strategy.  Others are not widely used like the flyweight pattern. Continue reading “Detect not well implemented C++ design patterns automatically.”

Chris Lattner: Revolutionizing the C++ World

Maybe almost all C++ developers know the LLVM infrastructure and the Clang compiler. But how many know that Chris Lattner is their creator when he was only 25 years old. How it’s possible? I remember when I was 25 years I spend my time to understand the C++ basics 🙂

The story begins with a thesis

In late 2000, Lattner joined the University of Illinois at Urbana-Champaign as a research assistant and M.Sc. student. While working with Vikram Adve, he designed and began implementing LLVM, an innovative infrastructure for optimizing compilers, which was the subject of his 2002 M.Sc. thesis. He completed his Ph.D. in 2005, researching new techniques for optimizing pointer-intensive programs and adding them to LLVM. Continue reading “Chris Lattner: Revolutionizing the C++ World”

Chasm Theory: Exploring C Longevity, C++ Rebirth & Python’s Rise

How many times do you read “C++ is dead” or “Is the C programming language still used?”, but in the reality they still very popular.

And how many times we read “WOW this newcomer programming language is the best”, but after few years nothing really happens and the new language decrease in popularity. However, there are some exceptions, the most interesting one is python which rise from a not widely used scripting language to a very popular programming language. Continue reading “Chasm Theory: Exploring C Longevity, C++ Rebirth & Python’s Rise”

Defensive programming with new C++ standards

Defensive programming is a form of defensive design intended to ensure the continuing function of a piece of software under unforeseen circumstances. Defensive programming practices are often used where high availability, safety or security is needed.

Defensive programming is an approach to improve software and source code, in terms of: Continue reading “Defensive programming with new C++ standards”