Software vs Hardware
Abstraction - Interpret or translate high-level operations into simple computer instructions
[caption id=“attachment_300” align=“aligncenter” width=“459”] Hardware and software as hierarchical views[/caption]
Types of System Software:
- Operating System - Supervising program manages the resources of a computer for the benefit of the programs that run on that computer
- Compiler - A program that translates high-level language statements into assembly language statements
- Assembler - A program that translates a symbolic version of instructions into the binary version
In order to communicate to hardware, you need to send electrical signals to it. The signals are categorized by on _and _off or 1 and 0. Moreover, hardware has a two letter alphabet with each letter as a binary digit or bit. Using bits for both instructions and data is a foundation of computing!
Even though hardware speaks in binary, humans do not which creates a barrier between programmers and their hardware. As a result, an assembler was introduced to translate machine instructions to binary.
[caption id=“attachment_332” align=“aligncenter” width=“319”] High-level to machine language[/caption]
High-level Language vs. Machine Language?
- More natural language
- Improved programmer productivity
- Allows programs to be independent of the computer