A high level language is written in human-oriented English-like keywords. It allows the programmer to use meaningful variable names, predefined functions and libraries and data structures (e.g. arrays/lists). A low level language is close to the hardware, in fact it is not far off the binary instructions given to the processor. It is in many ways significantly more complicated due to the lack of predefined libraries and functions, data structures and readability. Perhaps one of the most awkward parts of L.L.L.s are the fact they change with the processor/architecture of the system. For example AMD processors would have similar but not identical low level languages to Intel processors.