Computers execute machine code. It is difficult for humans to read, write and debug machine code
Assembly code instructions are equivalent to machine code but easier for humans to work with
assembly code and machine code instructions have a 1:1 relationship
Assembly code is a low level language. Translating assembly code instructions into machine code is done by an assembler. Each processor has its own instruction set and so the object code produced will be hardware specific
A compiler translates a whole program written in a high level language into executable machine code, going through several stages. The resulting machine code is called object code. The object code produced is also hardware specific
Compiled high level languages include Visual Basic and C++
An interpreter also translates code written in a high level language into machine code. However, the interpreter does this line by line rather than translating the whole program before any of it can be executed
Interpreted high level languages include JavaScript and PHP