Low level language
Translates assembly code into machine code
Translates an entire program in high level language into executable machine code (Which is called object code)
The plain text that's inoutted into the compiler
It's hardware specific, so will only run in certain environments
Translates code written in a high level language to machine code
Translates code line by line before executing
- Machine code runs faster than interpreted code
- It's hard for users to view/edit the original program, so is better for distributing finished programs
- faster to execute
- compiled code can't be read/copied by others
- can run many times without needing to execute
- Better for debugging programs as it runs line by line so detects errors more easily
- If a small error is found the program doesn't need to be recompiled, which is better when developing and testing the code
- Source code can be run on any machine with an interpreter
Using a bytecode interpreter
The machine must have a bytecode interpreter
High level languages - easier to read
- less memory efficient
- debugging is easier
Low level languages - harder to understand
- more memory eficient
- debugging is more complex