Software Doesn’t Exist
Let me digress for a moment: software doesn’t exist. OK, I exaggerate—but only slightly.
When you run a program, your computer loads a long series of magnetic fields from your hard drive and translates them into capacitances in RAM. Transistors in the CPU interpret those charges, sending the results out to peripherals such as your video card. More transistors in your monitor selectively allow light to shine through colored dots onto your screen.
Yet none of that is software. Software isn’t even ones and zeros; it’s magnets, electricity, and light. The only way to create software is to toggle electrical switches up and down—or to use existing software to create it for you.
You write software, though, don’t you?
Actually, you write a very detailed specification for a program that writes the software for you. This special program translates your specification into machine instructions, then directs the computer’s operating system to save those instructions as magnetic fields on the hard drive. Once they’re there, you can run your program, copy it, share it, or whatever.
You probably see the punchline coming. The specification is the source code. The program that translates the specification into software is the compiler. Jack Reeves explores the implications in his famous essay, “What is Software Design?”[61]
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access