HLLs are programming languages that look like natural language text. Their advantages are:
They make programming easier and more abstract, i.e. the programmer does not need to come up with the detailed machine instructions
HLL programs are machine independent. They can be run on different hardware platforms (i.e. different computers with different instruction sets):
To run a HLL program on a specific machine, it has to be translated to its machine language
This is done through the use of a compilerA program that translates a HLL program to a machine language program of a specific computer.. A Compiler is a program that translates a HLL program to a machine language program of a specific platform
The Machine language program produced by the compiler is usually referred to as the executable programA machine language program produced by a compiler or an assembler
Hence by using the appropriate compiler we can execute our HLL programs on any platform.
Mapping Between HLL and Machine Language
Translating HLL programs to machine language programs is not a one-to-one mapping
A HLL instruction (usually called a statement) will be translated to one or more machine language instructions
The number of mapped machine instructions depends on the efficiency of the compiler in producing optimized machine language programs from the HLL programs
Usually, machine language programs produced by compilers are not efficient (i.e. they contain many unnecessary instructions that increase processing and slow down execution).
Data Typing in HLL and Machine Language
High-Level Language
Machine Language
Supports many primitive data types such as integers, real, strings, characters and Boolean
Allows the programmer to define new and complex data types using the primitive data types
HLL compilers strictly enforce data typing, preventing the programmer from making mistakes.
No enforcement of any data typing, instructions just operate on binary numbers.