John Carmack On Modern C++

Winter break homework from John Carmack. Gamasutra reprint article "In-depth: Functional programming in C++":

A large fraction of the flaws in software development are due to programmers not fully understanding all the possible states their code may execute in. In a multithreaded environment, the lack of understanding and the resulting problems are greatly amplified, almost to the point of panic if you are paying attention. Programming in a functional style makes the state presented to your code explicit, which makes it much easier to reason about, and, in a completely pure system, makes thread race conditions impossible... (full article)

Also "Lessons to learn from Oculus development team when using the “Modern C++” approach":

Modern C++ doesn’t imply necessarly the overuse of templates

Andrei Alexandrescu says 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."

Modern C++ has a close relation with generic programming; probably it’s the reason that makes many developers neglect the modern C++ approach. They think that the code will be mostly implemented as templates, which makes the code difficult to read and maintain.

In the SDK, the templates represent only 20% of all types defined and most of them are related to the technical layer... (full article)

Comments (0)

This post does not have any comments. Be the first to leave a comment below.


Post A Comment

You must be logged in before you can post a comment. Login now.

Featured Product

Real Time Systems - ALL APPLICATIONS ON ONE HARDWARE PLATFORM

Real Time Systems - ALL APPLICATIONS ON ONE HARDWARE PLATFORM

The RTS Hypervisor enables work-load consolidation of both real-time and non-real-time operating systems on a single x86 based platform. Unlike traditional virtualization, we partition and allocate the hardware for each work-load and provide a "privileged" mode for real-time operating systems that guarantee zero impact to determinism while adding zero jitter. This is instrumental for work-loads such as robotic controllers managing motion control where minimum jitter is required. And, our hypervisor is designed for easy setup and configuration for any work-load consolidation scenario. This equates to deterministic real-time applications taking advantage of all the benefits of virtualization immediately, without costly implementation projects.