I am trying to understand the abstraction that is provided by computer software. Below is my understanding. Do I have a correct understanding?
Suppose my computer has this data:
The data is stored inside my computer in a series of memory cells, each cell is at either +1 voltage or 0 voltage. For discussion purposes, I will denote the +1 voltage using the symbol 1 and the 0 voltage using the symbol 0. Each letter of the data is encoded using a scheme such as ASCII, which encodes the letter H using 8 memory cells with the following values:
0000 0100 0000 1000
Software tools residing on my computer provide me the ability to view the data in memory as text. These tools are referred to as text editors. Text editor software decodes the memory cells and then displays symbols on my screen that I recognize as letters of the alphabet (i.e., as text). For example, here is a snapshot of my screen, showing the Notepad++ text editor displaying the data as text:
Other software tools -- known as hex editors -- provide me the ability to view the data as hexadecimal symbols. Here is a snapshot of my screen showing the HxD hex editor displaying the data as hex values:
There are no words or sentences in the computer. There's only memory cells and voltages. Software tools such as Notepad++ and HxD interpret and visualize the memory cells and voltages in various ways. So what is reality?