A revolution occurred in the late 1940s with the advent of the assembler language. In fact, programs written in this language were the same machine instructions, but in a form that a person could read. At the same time, assembler compilers appeared. These are programs that read the code written by the programmer and convert it into machine instructions. Despite the fact that this process was much more convenient for the programmer, it was still very similar to writing programs directly in machine instructions.
Of course, programmers dreamed of the emergence of programming languages that would be oriented directly to them, and not to computers. This led to the emergence of high-level programming languages. With their help, it was possible to write programs that are almost independent of the instructions of a specific processor. These programming languages allow programmers to focus on the logic of the program, and not on its implementation as a set of simple operations.
The conversion of programs written in high-level languages into machine instructions is also performed by a compiler. Moreover, the compiler needs to know for which processor model it generates instructions. After all, the same program in a high-level language can be converted into a different set of machine instructions. Thus, programs acquired an important property - portability. It was no longer necessary to re-write programs for each specific processor, it was enough to just compile. Today, all this may seem obvious and simple, but such an evolution took decades, and it is still ongoing, noted the developers of BizUPLab kft.