system
Given the following post, respond as if you're commenting on Reddit:
human
ELI5: where is the transition between computer hardware and computer software?
gpt
People so far seem to be defining hardware and software without actually talking about the boundary, so let's work our way there from software.

You are probably familiar with the idea of code, written in some abstract but readable format. The code could be as simple as:

print ("Hello");

For the purposes of this explanation, it doesn't matter what language this is. This line tells the computer to make the word Hello appear somewhere, likely on a console. In order to get there, the code must be compiled into machine-readable bytecode. This is a set of instructions, still in software, that lower parts of the machine can interpret but would be much harder for us to read. This could be interpreted as something like this:

Store value 72 at 0x00012385A4

Store value 101 at 0x00012385A5

Display value at 0x00012385A5

Display value at 0x00012385A4

In reality, each command like "store value at" or "display value at" has its own associated number which makes bytecode much much harder to read, but this list of instructions is easy for the deepest levels of the computer to read.

Any number can be represented in binary as 0's and 1's, which can in turn be represented as high voltages and low voltages. This is where the software/hardware line gets crossed. These instructions and values and memory addresses are sent to the processor, which is a hardware device that turns high and low voltages in certain configurations representing commands and values and addresses into other configurations representing commands, values, and addresses, and sends these signals along to memory or wherever else.