All of the things labelled as Posts, so that crawlers have a place to find them.
Preprocessor Case Study: Message Dispatching
Dispatching is one of those areas where I almost always rely on the preprocessor. I have done this in a variety of languages using a
Abstract Machines, Interpreters and Compilers
Abstract machines are the core of what defines a programming language. A wide variety of operating systems and plethora of hardware ensures a bewildering
What’s to love about C?
Antiquated, clunky, and unsafe. Though beloved to some, C is a language that many choose to hate. The mass opinion is indeed so negative it’s
How to choose a programming language?
Each new project, whether a standalone program, or a component for an existing program, faces a choice of programming language. Just using what is most
Everything wrong with exceptions
In my previous article I looked at a basic reason why exceptions are necessary. In retrospect it was more of a look at why simple
The Necessity of Exceptions
Exceptions often get a bad rap. They are called ineffective, inefficient, and hard to work with. In a way such accusations aren’t unfair, as most
Double-checked locking: Why doesn’t it work and how to fix it
Double-checked locking is notoriously evil. While it can be a boon to efficiency, it’s tricky to do correctly. Lurking at its core are two issues
Performance is irrelevant
Asking questions about performance online universally invites scorn and accusation. A large number of programmers apparently feel that the efficiency of code is nowadays insignificant.
Never use the “continue” keyword!
I was looking through some questions on StackOverflow last week when I came across a curious answer. In it there was a link to a
What is reference counting?
Objects are created, live for a while, and then destroyed. While creation is fairly clear, the when and how of destruction is fairly language dependent.
What’s an object? What’s a variable?
A variable is is the most fundamental concept in programming. You can’t do anything without variables. Yet most languages let you gloss over what these
Dangerous and confusing casting
Casting in C++ is a confusing jumble of unclear and dangerous operations. It mixes unrelated concepts. It introduces ambiguities and redundancies. It’s an essential but
Requirements for a Concurrent (Threaded) Library / API
Multithreaded programming in a perfect environment can be frustrating. It becomes infuriating when dealing with a plethora of libraries each with their own notion of
Mismatched Allocation and Delete Nonsense
Efficient yet confused. Powerful but unsafe. So is the nature of C++ object allocation and instantiation.
Implicit Type Promotion and Conversion
C introduced it and C++ mastered it. The hellish world of implicit conversion and type promotion. A system which silently modifies, truncates, rounds, and otherwise
The Ideal Language has “goto”
“goto”: the demonized programming construct. This little expression allows you to jump to somewhere else in the code while skipping the expressions in between. Opponents
How Polymorphism Works: Part 2: Virtual Table
In the article on “How Polymorphism Works: Part 1” we learned how to create virtual functions. The method which we chose has at one significant
How Polymorphism Works: Part 1
Polymorphism: the core of object oriented programming. Most modern languages have some concept of interfaces, virtual functions, and classes. Though each language differs in details,
No new language will stop your program from crashing
New languages try to improve the lives of programmers by simplifying some aspect of programming. Many make bold claims about eliminating certain types of errors,
The Ideal Lanuage has a way to format strings
Ultimately any program must communicate with the outside world. Be it showing the user data or sending a text based protocol, the need to format
Why Garbage Collection is not Necessary and actually Harmful
In the world of new languages it seems like garbage collection is standard feature. A way for the runtime to locate unused bits of memory
What is an atomic operation?
We all know that operations in a computer happen one after the other. Having multiple CPUs and instruction reordering tends to obfuscate the issue. Technically