9.1 The software stack
Software runs on hardware, and you use both to build applications and solve problems. This is true whether you are working entirely on a laptop or access computing resources on the cloud. Software is not monolithic. It begins with a layer very close to the hardware. On top of that, we implement abstractions and higher-level features to make it easier to code and develop solutions.
We have gates and circuits within the hardware and the software layers. These are the most primitive operations, and we make compositions of them into useful processes.
Assembly languages allow us to code gates into custom circuits. They let us control the underlying hardware and, in the classical case, access and use system memory. OpenQASM3 is an example of a quantum computing assembly language developed...