Compiler vs Interpreter: Understanding the Key Differences