Assembler
translates low level assembly language (source code) into machine code (object code that is executable, but is dependent on hardware) or an intermediate, byte code
Compiler
translates high level languages to machine code; scans source code to build up information to translate to object code (different compilers needed for different hardware)
Interpreter
scans one line at a time and if it contains no syntax errors, executes it
Can be run on any computer with appropriate interpreter
Bytecode