Source code is contrasted with compiled code.
Computers don’t have minds and do not “understand” commands or programs. They are calculating machines that perform various basic logical operations on binary values, and it is up to the programmers to use that in performing higher level logic.
For example, the basic logical operations a CPU can perform are AND, OR, NOT, XOR, and NAND. These kinds of things are physically created “gates” within the structure of the CPU.
An AND gate will take two inputs and output a signal only if both of the two inputs have a signal on them. An OR gate will provide an output signal if either or both of the inputs has a signal. A NOT gate will provide the opposite output as the input signal. XOR will provide an output signal if only one of the inputs has a signal but not if both do. Finally the NAND gate will provide an output signal if there is no input signal and if either of the two inputs has a signal, but not if both inputs have a signal.
As you can see these kinds of basic functions are difficult to work with in creating a complex program without many layers of abstraction. Programmers tend to work using programming languages that summarize and convert combinations of these basic binary operations into a format more easily understood and written by a human. For a computer to do anything with this it needs to be “compiled”, a process that takes this readable set of instructions and converts it into a form the CPU can process.
The readable set of instructions is the source code while the compiled code is what is actually distributed to end users. Programs exist to try to de-compile programs but context, comments (notes to explain what is being done and why), variable names, formatting, and other things helpful for understanding what a program is doing are not available. For a program that might have 80 million lines of code, not having the source code makes figuring out how things are working behind the scenes quite difficult.
Latest Answers