Joy of Programming: Calling Virtual Functions from Constructors
Calling virtual functions from constructors is problematic, and this problem can manifest itself in many ways. In this column, we’ll take a look at this problem, with specific examples. Last year, I bought…
Joy of Programming: Levels of Exception Safety
The concept of “exception safety” is important for programming in the presence of exceptions. In this article, we’ll look at different levels of exception safety, with the help of an example. Let’s first…
Joy of Programming: The ‘Broken Window’ Theory
It is common to see software projects fail. One important cause is ‘design and code rot’. In this article, let’s try understanding the causes, in the light of a popular theory. Development projects…
Joy of Programming: Bug Hunt
Every programmer knows that debugging is akin to a detective’s work. In this column, we’ll cover this “bug hunt” process with an example of how the Intel Pentium processor bug was discovered. Software…
Joy of Programming: SNAFU — Situation Normal, All Fouled Up!
The stories of software development projects in crisis are amazingly familiar to all experienced programmers and managers. In this column, we’ll look at some common aspects of projects in crisis and how they…
Joy of Programming: Language Transition Bugs
There are subtle differences between languages like C, C++, Java and C#. Programmers transitioning from one language to another should beware of such differences. When I speak to my Tamil friends in English,…
Joy of Programming: Penny Wise and Pound Foolish!
We often try to use a smaller data type to save space. Though it looks like clever programming, it can cause nasty bugs. Let’s look at an example that demonstrates this. A few…
Joy of Programming: Logical Bugs and Intuitive Thinking
Logical bugs are very common in code and are often very difficult to find and fix. In this column, we’ll look at an example of a real-world logical bug, and explore how intuitive…






