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…
Joy of Programming: Types of Bugs
In this column, we’ll look at four types of bugs, named after popular scientists. The classification is interesting — we’ll understand how strange bugs can be! Jim Gray, in his popular paper (see…
Joy of Programming: Why C is a Middle-Level Language!
C has low-level language features disguised as high-level features. We’ll look at two case studies — arrays and functions — to understand what we mean by a “middle-level language”. First, look at some…





