People have been calculating things for thousands of years and have always had mechanical aids to help.
When someone programs a computer, they are really communicating with it. It is an imperative and precise communication. Imperative, because the computer has no choice; it is being told what to do and will do exactly that. Precise, because a computer does not apply any interpretation to what it is being told. Human languages are vague and subject to interpretation and ambiguity. There are sentences that are legal in terms of syntax, but have no real meaning: “Which is faster, to Boston or by bus?” is a legal sentence in English that has no meaning. Such vagaries are not possible in a computer language. Computers do not think and so can’t evaluate a command that would amount to “expose the patient to a fatal dose of radiation” with any skepticism. As a result, we, as programmers, must be careful and precise in what we instruct the machine to do.
When humans communicate with each other, we use a language. Similarly, humans use languages to communicate with computers. Such languages are artificial (humans invented them for this purpose, all at once), terse (there are few, if any modifiers, and no way to express emotions or graduations of any feeling), precise (each item in the language means one thing), and written (we do not speak to the computer in a programming language).
Computer languages operate at a high level and do not represent the way the computer actually works. There are a few fundamental things that need to be known about computers. It’s not required to know how they operate electronically, but there are basic principles that should be understood to put the process of using computers in a practical context.
Source: Parker James R. (2021), Python: An Introduction to Programming, Mercury Learning and Information; Second edition.