What I've learnt has substantially changed the way I write code. In my first years as a programmer I tried to avoid mistakes, but I hadn't made enough of them yet to discover the best ways to prevent them. Now I know better. I know there are some things that bring you into trouble very quickly. Other things will silently wait for the worst moment - maybe months or years later, to come to the surface in the form of even more original problems. Disorganized code, uninitialized variables, pointer arithmetics, implicit casts, syntactic overloading, inheritance in which functions hide other functions, too complex expressions, unclear function or class semantics... the list of things which you'd better avoid in the first place has become rather long during the years.
I decided to start a blog where I'll organize and share my experiences and ideas, so that I won't forget them. As a plus, you'll be able to read them and give me your feedback. I will appreciate any comments you leave in this place. I'm sure I can learn a lot from them!
There are already many C++ blogs, often written by people who know much more about software and C++ than I'll ever do. I hope my contribution will add some practical aspects which I feel may be useful, especially for novice programmers.
Software programs have two kinds of audience. They are written for a computer to execute them, but also for people to read and hopefully understand them in the future. The best programs are those which work well in both ways – the machine does its job, and humans can make that work evolve into something which suits new needs.
We write software to change the world, because programs are run to change something. Their lines will be spelled tomorrow with effects that we cannot fully foresee. We rise waves which will go a long way until they reach a far away shore - one which our eyes may never see.
Let’s take a dive. Welcome to The Deep Blue C++!