Computers are very capable machines at a variety of tasks, however, they need a set of instructions to effectively perform these tasks.
The central processing unit is responsible for executing a number of instructions in the form of machine code. Independently, these instructions are very limited and relate to specific parts of the processor. Machine code comes in the form of ones and zeros. An example might be telling the CPU to load the value in an address to a register on the chip.
Writing instructions in pure binary quickly became tedious and around the late 1940’s and early 1950s the first assembly languages had been created. Assembly language now included mnemonics to represent an instruction and operands to which those instructions were performed on. An assembler is a tool that is used to convert assembly language into its lower level counterpart, machine code.
Even though the jump from binary to assembly language did help with making programs more readable and easy to design, each instruction written in assembly language still maps to one machine code instruction. Additionally, the programmer still needs a good understanding of the hardware they are using even if they are using assembly code.
This is where the next level of abstraction is different. High-level programming languages, of which there are now hundreds, allow a user to write more sophisticated programs without requiring a deep understanding of the hardware used by the machine. Each instruction in a high-level programming language will map to one or more instructions in assembly and machine languages. High-level programming languages also contain other abstractions such as variables, however, we will discuss those later.
Just as assembly language uses an assembler to generate machine code, a high-level programming language will use a compiler to generate assembly or a lower-level code.
The first high-level programming language was Autocode in 1952, written by Alick Glennie at the University of Manchester in England. The compiler was available on the manchester mark 1 computer which Glennie and Alan Turing worked on together.
Nowadays there are many widely accessible programming languages that work on a number of platforms. It is quite possible that you may have heard of Java, C, Ruby, Python, Swift or Go before, and that’s only to name a few!
There are plenty of reasons to learn a programming language, it doesn’t have to be a career.