Unfortunately, computers cannot understand ordinary spoken English or any other natural language. The only language they can understand directly is called machine code: central processors operate on codes which consist of a series of binary digits (1s and 0s). In this form, the instructions are said to be in machine codes.
However, machine code as a means of communication is very difficult to write. For this reason, we use symbolic languages that are easier to understand. Then, by using a special program, these languages can be translated into machine codes. For example, the so-called assembly languages use abbreviations such as ADD, SUB, MPY to represent instructions. These mnemonic codes are like labels easily associated with the items to which they refer.
Basic languages, where the program is similar to the machine code version, are known as low-level languages. In these languages, each instruction is equivalent to a single machine code instruction, and the program is converted into machine code by a special program called an assembler. These languages are still quite complex and restricted to particular machines.
To make the programs easier to write and to overcome the problem of intercommunication between different types of machines, higher-level languages were designed such as BASIC, COBOL, FORTRAN or PASCAL. These languages are all problem-oriented rather than machine-oriented and can be converted into the machine codes of different types of computers. Programs written in one of these languages (known as source programs) are converted into a lower-level language by means of a compiler (generating the object program). On complication, each statement in a high-level language is generally translated into many machine code instructions.
People communicate instructions to the computer in symbolic languages and the easier this communication can be made the wider the application of computer will be.