All of the things labelled as Posts, so that crawlers have a place to find them.
Parser generators, like ANTLR or Bison, seem like great tools. Yet when I have to write a parser I now tend to steer clear of
While working on Cloverleaf I came upon a problem of parsing custom operators. I would like to say that a language would allow custom infix
Beware the casual performance test, it will lie to you. It is simple to write something that gives you timings, but it is difficult to
I thought a good way to start Cloverleaf would be to write a simple expression parser. In a language expressions are those collection of symbols
Some languages hand us sharp knives and encourage us to play with them. Other languages put us in padded rooms and discourage us from doing
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 are the core of what defines a programming language. A wide variety of operating systems and plethora of hardware ensures a bewildering
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
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
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
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 is notoriously evil. While it can be a boon to efficiency, it’s tricky to do correctly. Lurking at its core are two issues
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.
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
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.
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
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
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
Efficient yet confused. Powerful but unsafe. So is the nature of C++ object allocation and instantiation.
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
“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
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