Since its creation, C++ evolved continuously and it passed many major milestones from the C with classes to the rise of the new standards. What’s the next step to evolve the C++ language? Let’s first discover the evolution of C++ over years: Continue reading “The road to the C++ fifth generation.”
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”
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.”
Since 2011 many new features were added to the standards, some of them are now very used like auto and nullptr, some others are rarely used. However, the most important changes that can bring the language to the next level are in the pipe. Continue reading “The best of C++ is what’s coming”
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”
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 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”
As software developers, we can write a lot of code each day. Each piece of code has its story, the code could be:
- Inspired by a web resource ( forum, tutorial, blog post,…)
- Inspired by an open source project from Github, Sourceforge or other.
- Copy/Pasted from the project itself.
- developed from scratch.
If you decide to start learning the modern C++ design and you come from the OOP school, you can start by looking inside the loki library.
Loki is the name of a C++ software library written by Andrei Alexandrescu as part of his book Modern C++ Design. Continue reading “Modern C++ Design: Learn with Loki Library”
The Task Scheduler schedules and coordinates tasks at run time. A task is a unit of work that performs a specific job. The Task Scheduler manages the details that are related to efficiently scheduling tasks on computers that have multiple computing resources.
Windows OS provides a preemptive kernel-mode scheduler, it’s a round-robin, priority-based mechanism that gives every task exclusive access to a computing resource for a given time period, and then switches to another task.Although this mechanism provides fairness (every thread makes forward progress), it comes at some cost of efficiency.For example, many computation-intensive algorithms do not require fairness. Instead, it is important that related tasks finish in the least overall time. Cooperative scheduling enables an application to more efficiently schedule work. Continue reading “Microsoft CRT: Deep Dive into Task Scheduler”