I only used the word ‘dumb’ to make the point that computers cannot yet think, abstract, choose, etc in the way that humans do - the ‘intelligence’ is only artificial.
I actually don’t disagree with anything you say in this post - I guess what is happening here is that I am putting a different interpretation on it.
Part of the problem is that computers - hardware, software, etc are becoming so complicated that the humans designing them and programming them are prone to lose control (stay with me for a while!) over what they have designed or coded.
If we go back in history to Babbage and his difference engine (and the later more complicated analytical engine), these were purely mechanical, and in fact at the start the ‘hardware’ and the ‘software’ were pretty much the same thing. The ‘hardware’ was various levers, cogs, handles, etc and the ‘software’ was how the cogs, etc were arranged, how many teeth each had, etc. You turned the handle and out popped your answer. You could see with your own eyes simply and easily that the machine was wholly deterministic and could not generate random results.
But then the very early true computers (Eniac, Colossus, etc) separated the software from the hardware and in time we had the Von Neumann model of a computer (volatile storage to hold instructions and data, a CPU or mill to process them, etc) and these were way more complicated digital electronic computers, both in hardware design and software.
As things got more and more complicated, the propensity for bugs or errors became greater and greater, and the task of finding and correcting them became more and more complicated and more and more expensive. And, I suspect, a lot of people will only think of ‘computer bugs’ as being a software thing and not a hardware thing as well.
As humans we make mistakes and compromises. And sometimes we make compromises to solve a particular problem whilst acknowledging and accepting that it will make some other situation worse.
On the 803 the machine code instruction for shifting the bits in a hardware register right (or was it left?), in other words doubling the value of the bits in a word was ‘55’. So if you had a single bit in the word representing ‘1’ the instruction ‘55 1’ would shift the bits in the word by 1 position, so the value of the word was now 2. If you used ‘55 2’ the bits would be shifted by two positions, so the value of the word would then be 4.
The 803’s boot loader (back then known as the initial instructions) basically loaded a program off five channel paper tape. Instructions and input data were coded on tape in 5 channel telecode. To fill the 803’s 39 bit word the boot loader would read a character off the tape which would then appear in the lower five bits of a 39 bit hardware register (known as the accumulator). The boot loader would then do a ‘55 5’ shifting that five bit character to the next five higher bits, making space at the lower end for the next character to be read off tape. This process continued until the accumulator registered an overflow condition (i.e. it was a 39 bit word, so you could read and shift 8 characters off tape before the last bit of the first character read ‘dropped off the end’ so to speak). When the overflow condition was detected the contents of the accumulator was stored in RAM and the whole process started again. This kept going for ages as the whole reel of paper tape was read and the program plus data slowly built up in the 803’s RAM. For a short program, this was OK - but if you were trying to load a large and complicated program, an Algol compiler for instance, well, you might as well go get a cup of coffee.
The solution to speed things up?
An FPU. If you had the optional (at huge extra cost) FPU fitted, you got a new machine code instruction, ‘65’. This worked exactly the same as the ‘55’ instruction but operated about 10 times as fast. Paper tape literally flew through the reader so fast that it remained horizontal as it came out for about 3 feet before gravity made it fall into the tape bins.
But that of course now gave programmers the opportunity, which they didn’t have without the FPU, to do math calculations with the FPU. And, as we have discussed, this compromise leads to errors when dealing with fractions.
Greater complications in computer hardware design today (e.g. GPUs,) have brought yet more opportunity for hardware bugs which deliver seemingly random and unpredictable (but in my view still not non-deterministic for the reasons I have stated above) results. I think that computer hardware and software is now so complicated, and has so many accepted compromises, that humans are now having a really hard time of ensuring that they work properly and predictably all the time. And in some cases they don’t, or perhaps even can’t.
So yes, I agree, there is in all likelihood a ‘ghost in the machine’ and we can use that to drive creativity or whatever in an AI model to such a level that it practically makes no difference to those who use it. But its still deterministic for any given set of instructions, input, rounding errors, CMOS voltages, germanium transistor bias voltages, hardware bugs, design compromises, etc, etc - and hopefully it always will be until simulated artificial intelligence in computers gives way to real intelligence (if it ever can).