Spotted in Software and Programming:
To write an Operating System, you have to understand how the computer works. Right there, you have an advantage over everyone else. I don't know how many times I have to say it, but you cannot become a programmer unless you know how the hardware works. At the very least, how the CPU works. I find it amazing that some people graduate Computer Science with a degree and have no clue how computers work. Hardware programmers know the difference between a right shift for signed numbers and unsigned numbers. They are two different operators even though the symbol is the same in higher languages. In Java, they had to add an operator. Hardware programmers are frustrated that there's no operator that will give you both the quotient and the remainder at the same time. Hardware programmers find it annoying that you don't have access to the carry bit or other CPU flags in higher languages. Hardware programmers hate that they can't multiply two 32-bit numbers together and get the 64-bit result in higher languages. Same goes for dividing 64-bit integer with a 32-bit integer. Everything mentioned here should be standard in every programming language. This is what people who've only used high level languages don't get. That you're in shackles. You're being restrained. I don't need a safety net. I know what I'm doing. I don't have to be protected from myself. And I know many of you reading this don't need to be protected either.
Hmm - I wonder if this guy is an expert on every component in his house - including every tool he ever uses for something. Not to mention that 32 bit or 64 bit integers are simply lower level abstractions - higher level languages move you up a few levels so that you can worry about solving business problems.
Read the rest of his post - he's so buried in hardware trivia - the sort that is meaningless for most application problems - that it's amusing. As other people have said, an awful lot of software development is moving records back and forth from a database, with user interaction to make appropriate changes. Why exactly do I care about the graphics adaptor, or the way the CPU works for that?
Moving upstream to a portable language - like Java, or Smalltalk, for example - allows you to write an application that can move from one OS to another. I'd guess that any business that's evaluating a move to Linux, or to Mac OS X cares a whole lot more about that than they do about the trivia this guy frets over. Or even the ones contemplating their next OS upgrade.
I will agree that we don't need stupid shackles - but the ones I want removed have been - at least in languages like Smalltalk and Ruby.