Bjarne Stroustrup: “The purpose of a programming language is to help build good systems, where “good” can be defined in many ways. My brief definition is, correct, maintainable, and adequately fast.”

Let’s see…

We will skip the “adequately fast” part since I have no idea what adequate would be for Mr. Stroustrup and besides fast/slow is determined by language compiler/interpreter implementation not by language syntax. We will assume Bjarne is just trying to off-handedly dismiss scripting and VM languages,

Moving on…

What does “correct” mean? In line with all those patterns and “best-practices” they try to teach you in all the “right” books? And, of course, maintainable goes hand-in-hand with that, too?

Well, I will have to disagree here. First of all, contrary to the popular misconception it is not “maintenance” that modern businesses care about. Thirty years ago, maybe, they wanted systems that last forever in the original version but not anymore. We live in a fast-phase business environment where demand changes all the time and so should the software that supports it.

It is not “maintenance” that you should care about but ease of future modifications! And these two are by far not the same thing.

People who think the “maintenance” way usually spend a lot of time finding “ideal” architecture that, in their minds, will serve all future needs (alas, the exact same ones they have no idea about right now) and end up with half-baked, useless monster, way late than originally planned .

People who think “ease of modifications” way employ agile methodology, write unit-tests and continuously refactor the code. Big difference.

In conclusion- in my personal opinion, “good” code is way more about the personality of the developer than underlying programming language or technology. Some people are tidy, some people are mess. Period. <

Have a nice weekend!

P.S. I give all the respect to Mr. Stroustrup for his success but other than that, let\’s just say - he is not my hero and C++ is not my favorite language :)