Numeration: the act or process of numbering or counting.
Programmers learn about numbering systems. Binary, octal, decimal - these are all important in the digital world. But developers also use a special numbering system that defies logic.
A quick history lesson
According to Wikipedia, humans have been counting for at least 50,000 years. It's how we track things, from our age to our wealth.
So it is no surprise that we have used different types of numbering systems over all those years. We still see Roman numbering in legal documents e.g. paragraph xvii. But nobody expects anybody except lawyers to understand that.
Non-programmers, if they think about it, only think of the decimal numbering system.
A quick maths lesson
Our decimal system is a positional numbering system. So in a number like 222
, each digit 2
represents a different value, based on its position. Reading from the right, the digit represents 2
, 20
and 200
, in that order. It's a decimal or base-10 system, because each position represents a power of 10.
Why 10? It might be because there are ten fingers on two hands. And we learn to count by using our fingers.
Base-10 is easy, but it's not the only option. The ancient Babylonians used the sexagesimal or base-60 system. We still use that to measure time (60 seconds in a minute), angles and geographic coordinates.
Computers only have two states: on and off. That's why computers use the base-2 system, also known as binary. Octal (base-8) and hexadecimal (base-16) are best friends with binary.
When you understand the basic maths, you understand that any number can be the base of a numbering system.
The counting system that doesn't
Despite all these options, developers have invented another counting system. It is unpredictable and often irrational. It's the version-number numeral system.
In theory, there is some logic behind version numbers. There's a major version number, and a minor version number, and a build or patch version number. But then there is the marketing version number, which randomly skips numbers.
And then there is the unexplained version number. This does not match anything at all. It might happen when programmers change tools, or don't pay attention.
The South African Revenue Service confused me with their version numbers this week. It is tax year-end, so I installed the new version of the SARS e@syfile software. I stopped the installation twice, thinking I had made a mistake. The version I was installing is 7.2.3. The install process brings up a warning that says:
The application you are about to install already exists on this system. Would you like to replace the currently installed version with this one?
Installed Version: 0.0.3.0
Version to be Installed: 0.0.0.1
Aaagh! At least I know version numbers can be strange. I wonder how many people will phone the SARS call center about this. Or perhaps, like most users, they won't even read the error messages.
I'll have to wait to see if the new version works when I upload the data. SARS history does not give me confidence. There was a version of e@syfile that would only run if you had two versions of Java installed. And you will remember the Flash debacle. After 3 years of warning, Adobe Flash stopped working.But SARS had ignored the warnings and had to scramble for a solution to some of their forms.
I'll say this for government systems. They always give me something to write about!
I would love to hear your comments on this topic.