Monday, December 8, 2008
Bits and bytes and things like that
Being a curmudgeon I can remember back to the days of punch cards and assembly language. It seems to me as though there is a plethora of high level languages and due to this all connection to how computers work seems to have been lost. In a conversation today with a long time friend I was discussing a time when I was debugging some code. Now this was back in the days when "dual-processing" meant I had 2 VT-100 class terminals on my desk. Background - I was working at a software translation company that translated one computer language into another - the specific languages in question were Bliss-32 and C. Both were on Vax 11/785 machines, running VMS. My friends were stepping through some code and there was an error in the code that they could not decipher. The translator had a nasty habit of generating a "*4" error. That is - C would automatically increment a pointer by the size of the structure being added, whereas Bliss-32 would not. We had all become familiar with finding the "*4" bug and fixing it. This particular structure however would not comply with the normal multiples - 2, 4, 8 - all failed. I was asked to have a look. I perused the source code, looked at the translated code, re-read the source and pronounced "11" to be the appropriate divisor. Flabbergasted my friends denounced me stating I must clearly be insane - 11 is prime, how could it possibly be the right divisor. I stated please try it. They did - and it worked. Moral - if you have the source - and understand the underlying behavior of computer languages, systems and architecture, you really can understand and predict what a system will do. I understand that the world has advanced and perhaps there isn't as much use for the understanding of bits and bytes and octal and decimal, but this is precisely what makes me a curmudgeon, I like some things the way that they were.