I’ve been thinking a lot about software and how it affects hardware. How is it that software, that runs on code, or some computer language, can affect the physical properties of the computer? For example what has to happen for a phone to physically shut down after pressing the shutdown button on a touch screen? Or how can it be that by pressing a button in a software, a physical movement can be made on an object? Going deeper, how can it be that a button press, or a touch can affect the state of the transistors?
This reminds me of the problem of consciousness, where in a computer a software is like the mind and that cannot phisically connect to the body.
In: 3
That’s what [drivers](https://en.wikipedia.org/wiki/Device_driver) do.
Take a mouse. For simplicity let’s say it’s connected with a wire to the computer. There will be some pins that have a voltage, and some pins that don’t. Those voltages will trigger voltages in the processor at certain memory addresses, and those voltages will trigger other voltages. Eventually the patterns of voltages (and not) will trigger voltages in the wire that connects your screen to the computer, and the pixels on your screen will power up (shine) or not based on the patterns of voltages. To the computer, it’s just voltages or not. To you, it’s patterns of black and white dots – letters on a screen that you can understand.
A transistor can trigger other transistors and propagate voltages. Software, ultimately, is just a way to power up certain transistors in the processor, so that the mouse voltages create the right kind of domino effect to fill your screen with “words”.
There are different levels of “software”. The most basic level, is “if this pin is 0, then make this pin a 1. If this pin is a 1, then make this pin also a 1.” Literally transistor by transistor programming.
The higher levels of software are “languages” that organize things in a way that’s meaningful to humans. You type in your programming language “print the screen” and it generates the 150 pages of “if this pin is 0, then make this pin a 1, and if this pin is a 1, then make this other pin a 0” code to flip the transistors as necessary to get the printer to work correctly.
Latest Answers