20 juillet 2018
We need a translator (compiler or interpreter) to go from source to binary code.
The Compiler | The Interpreter | |
---|---|---|
Input | takes the entire program and translates it as a whole into machine code. | takes one statement at a time. |
Workload | runs once and only needs to be called again for re-translation. | runs each time the code needs to be executed. |
Errors | generates the error message only after scanning the whole program: debugging is hard. | continues translating the program until the first error is met, in which case it stops: debugging is easy. |
Sharing | harder to share: binary may not be read by different OS, source code must be re-compiled. | easy to share: just pass the source code. |
Because at "compile time", the compiler needs to know exactly what objects are, use of variables is less flexible:
int x; // Construction: allocate // memory to the object. x = 15; // Initialisation of // the object. x = x + 1; // Do stuff. ~x; // Destruction: clear memory. // Usually implicit.