Low-Level vs High-Level · Compilers · Interpreters · Assemblers
CSZoneEdexcel GCSE Computer Science 1CP2
Types of Programming Language
High-Level vs Low-Level
High-level languages (e.g. Python, Java): English-like syntax, easier to write/read, portable across hardware, auto-manages memory. Must be translated to machine code before execution.
Low-level languages: close to machine code. Includes assembly language (uses mnemonics like MOV, ADD) and machine code (binary 0s and 1s).
Why low-level?More control over hardware; faster execution; used in embedded systems and device drivers
Translators
Converting Source Code to Machine Code
Compiler: translates the entire program at once into machine code before running. Produces a standalone executable file. Errors all reported at the end. Fast at runtime.
Interpreter: translates and executes code line by line. No executable file. Stops at first error. Slower but easier to debug. Python uses an interpreter.
Assembler: converts assembly language mnemonics into machine code. One-to-one translation.
Compiler vs Interpreter
Key Differences
Compiler: translates all at once; produces executable; runs fast; errors found only after full compilation
Interpreter: translates line by line; no executable needed; stops at first error; slower runtime
Compiled languages: C, C++. Interpreted: Python (technically bytecode-compiled then interpreted)
Some languages use both: Java compiles to bytecode, then a JVM interprets it
Exam Practice
Have a go at this question
Edexcel-style question
Describe one advantage and one disadvantage of using an interpreter compared to a compiler.
2 marks
Advantage: the interpreter stops at the first error, making it easier to identify and debug issues line by line [1]. Disadvantage: interpreted programs run more slowly than compiled ones because translation happens at runtime rather than in advance [1].
Key Takeaways
What to Remember
High-level: human-readable, portable; Low-level: close to hardware, harder to write
Compiler: whole program at once → executable → fast runtime
Interpreter: line by line → no executable → stops at first error → easier debugging
Assembler: converts assembly (mnemonics) to machine code (binary)