The differences between high- and low-level programming languages
What you need to know
Programming languages are divided into two levels: high-level languages (like Python, Java, C#) are designed to be readable by humans and are portable across different hardware. Low-level languages (assembly language and machine code) are closer to what the processor understands and give more direct control over hardware, but are harder to read and write.
Key points
Definition:Programming Language: a formal language used to write instructions that can be translated into machine code and executed by a computer.
HIGH-LEVEL:uses English-like keywords (e.g. print, while, if) and is easier/quicker to learn and write.
HIGH-LEVEL: PORTABLE — the same language can be used on computers with DIFFERENT hardware/processors.
HIGH-LEVEL: always needs to be translated into object code or machine code before execution.
HIGH-LEVEL: provides a higher level of abstraction — programmer doesn't have to deal with memory allocation or processor registers.
LOW-LEVEL: allows the user to directly manipulate memory and hardware.
LOW-LEVEL: specific to one type of processor — NOT portable.
LOW-LEVEL: does not need to be translated (machine code) / fast to translate (assembly). Faster execution.
LOW-LEVEL: code can be optimised, shorter, uses less memory. Can program for specific hardware.
LOW-LEVEL: requires programmer to understand the processor's registers and structure.
Machine code is pure binary (0s and 1s) that the processor executes directly.
Assembly language uses short mnemonics (e.g. ADD, MOV, LDA) and needs an assembler to translate.
Exam Tip:Common table question — 'same language on different hardware' = HIGH-LEVEL (portable). 'Directly manipulate memory' = LOW-LEVEL. 'English-like words' = HIGH-LEVEL. 'Always needs translating' = HIGH-LEVEL. 'Must be translated before processor can execute' = HIGH-LEVEL.
Exam Tip:When asked for REASONS to use low-level: direct hardware control, faster execution, optimised code, less memory. When asked for ADVANTAGES of high-level: easier to write, portable, higher abstraction.
Common Mistake:Portability is the most commonly wrong answer. HIGH-LEVEL is portable (write once, run anywhere). LOW-LEVEL is specific to one processor type.