Demystifying computer programming

Alonso Del Arte
2 min readFeb 20, 2024
Photo by Fengyou Wan on Unsplash

Has anyone ever asked you to explain how you would tell a robot how to make your favorite pizza? This idiotic exercise makes the point that computers are very precise but somehow also sarcastic like Greek gods in mythology. Which is of course preposterous.

I was asked this question many years ago by people who have no business assessing applicants for enrollment at a “coding” “boot camp.” I’ve since heard this question asked in a couple of different contexts.

When I was interviewed by an actual computer programming instructor at an actually good programming school, she didn’t ask me dumb questions like that one about the pizza-making robot.

Supposedly, the correct answer to the dumb question about the pizza-making robot is one in which you invent the hypothetical robot’s instruction set on the fly, being careful to demonstrate that you’re thinking as precisely and as sarcastically as the hypothetical robot supposedly would.

That’s not how actual robots, such as CNC machines, work. Actual computers don’t work that way either.

A microchip intended to serve as a central processing unit (CPU) has an associated instruction set. The instructions in the instruction set tend to be extremely small operations: multiply register A by register B; check if register A is 0 then jump if it is; push register C onto the stack; jump unconditionally (goto); etc. Even just counting from 1 to 10 is too advanced to be a single instruction on a microchip.

The advantage of the microchip is that it can do thousands or even millions of small operations in a second. A computer program groups together several of these small operations into subroutines for larger and larger operations.

People don’t think in terms of small operations involving registers and stacks. So programming languages like Java and Python, with their associated compilers and runtimes, enable us to take a higher level view of what our program needs to do, and not worry about the little details of what needs to be in what register for the result of one small operation to be carried over to the next small operation.

There’s nothing magical about a computer or any of the programs it runs. The programs are just a bunch of small operations, grouped into subroutines grouped into functionalities that hopefully make sense to the human users of the program.

To present computer systems as magical black boxes is a serious disservice to learners, who might then regard the craft of programming as more akin to wizardry than to engineering.

--

--

Alonso Del Arte

is a Java and Scala developer from Detroit, Michigan. AWS Cloud Practitioner Foundational certified