Ironically, I was undone here by bad pedagogy. The text I was reading said something about "`getch` being the opposite of what you expected since you'd think it gets the character from the computer and prints it to the screen, while `putchar` does the opposite of what you expected and doesn't give you the chance to put anything into the computer".
Now, clearly whoever wrote that text had their own conception of the thing, but my mental model was that the computer is executing the program so it is getting the character from me with `getch` and it is putting the character on the screen with `putchar`. So the actual functionality seemed right.
But when you combined that with the text saying that it was counter-intuitive I was like "Oh okay, got to remember it was counter-intuitive. It's the opposite of what I'd think" and so the text induced me to misunderstand. Fortunately I was a child so I learned pretty rapidly that lots of people write total crap (irrespective of the conception, the author should not have pushed it so hard) and it didn't damage my mental model at all.
Now, clearly whoever wrote that text had their own conception of the thing, but my mental model was that the computer is executing the program so it is getting the character from me with `getch` and it is putting the character on the screen with `putchar`. So the actual functionality seemed right.
But when you combined that with the text saying that it was counter-intuitive I was like "Oh okay, got to remember it was counter-intuitive. It's the opposite of what I'd think" and so the text induced me to misunderstand. Fortunately I was a child so I learned pretty rapidly that lots of people write total crap (irrespective of the conception, the author should not have pushed it so hard) and it didn't damage my mental model at all.