No, you are not mistaken, a mechanical calculator and an electronic calculator are both machines. So is a computer. Frylock’s confusion is in 1) thinking that a program is a machine and 2) that compiling a program somehow reconfigures components inside the computer. Neither of these is in any way true, and demonstrates a fundamental ignorance of the very basics of computing.
I’m sorry that you’ve gathered this impression; I’ve nowhere stated that writing a convincing chat-bot is anything but difficult. However, just because you can be fooled by a chat-bot into thinking that it’s actually a self-aware, sentient entity in the form of another human being at the end of another keyboard does not make the chat-bot self-aware or sentient. It makes it a program that can feign self-awareness. Look, if I have a sex change and enough plastic surgery to look pretty convincingly like Princess Anne, does it follow that I am in fact Princess Anne? If I meet you and fool you into thinking that I am in fact Princess Anne has that made me Princess Anne? It would be an extremely difficult thing to do and pull it off convincingly, but being able to fake it would not in fact make me Princess Anne.
No, the explanation is that you don’t know what you are talking about. A program is not a machine, and a compiled program doesn’t configure components no matter how much you wish this not to be the case. Yet again for the home audience, a compiled program is a set of instructions for the machine (the computer) to execute. If it instructs the computer that the data held at absolute address FFFFEE for a length of 10 bytes is to be interpreted by it as a floating point decimal number with two decimal places and is to be a variable called x, no component has been configured in a particular way. It is just being told to reserve a space in memory to hold this variable and how the data held there is to be interperited. If you are writing in a language that is either basic enough or free-form enough to allow you to do something normally unintended like assign to x a value of “Frylock” it will happily do so, and when you next call upon the variable x it will interpret the EBCDIC or ASCII collating sequence value of the data held there (the 1s and 0s of the EBCDIC or ASCII values of the letters F,r,y,l,o,c, and k) as a floating point variable with two decimal places because this is how the program told it to interpret this data, not because any component of the computer has been reconfigured.
You would be much more convincing if you in fact understood the terminology you are using and had a basic understanding of the subject matter.