Skip to main content
EnglandComputer ScienceSyllabus dot point

How are programming languages classified and what are the main paradigms?

Understand the classification of programming languages by level (low and high) and by paradigm (imperative, object-oriented, declarative and functional), and the use of machine code and assembly language.

A focused answer to AQA A-Level Computer Science 4.6.4, covering the classification of programming languages by level (low and high) and by paradigm (imperative, object-oriented, declarative and functional), and the use of machine code and assembly language.

Generated by Claude Opus 4.88 min answer

Reviewed by: AI editorial process; not yet individually human-reviewed

Have a quick question? Jump to the Q&A page

Jump to a section
  1. What this dot point is asking
  2. Classification by level
  3. Classification by paradigm
  4. Why high-level languages need translation

What this dot point is asking

AQA wants you to classify programming languages by level (low-level machine code and assembly, and high-level languages) and by paradigm (imperative, object-oriented, declarative and functional), and to describe machine code and assembly language.

Classification by level

The level of a language is really a measure of abstraction: a high-level statement such as adding two named variables might correspond to several machine instructions (load, load, add, store), so one line of high-level code hides a sequence of low-level operations. This is why high-level languages are more productive but give up the precise control over registers and memory that assembly offers. Low-level languages remain important where that control matters, such as device drivers, embedded systems and performance-critical routines.

Classification by paradigm

The clearest dividing line is between imperative and declarative. An imperative solution to "get all customers over 18" would write an explicit loop that checks each record and builds a result list; a declarative solution (SQL) simply states the condition and lets the database engine decide how to find the matching rows. Object-oriented programming sits inside the imperative family because it still describes step-by-step behaviour, but organises that behaviour around objects; functional programming overlaps with declarative because it emphasises what is computed rather than mutable step-by-step state.

Why high-level languages need translation

A high-level language cannot run directly on the processor, which only understands machine code, so it must be translated by a compiler, interpreter or assembler before or during execution. High-level code gains portability and clarity at the cost of this translation step and usually some loss of fine control over the hardware compared with assembly. This is the link to the translation topic: the level of a language determines what kind of translator it needs, with assembly using an assembler and high-level languages using a compiler or interpreter.

Exam-style practice questions

Practice questions written in the style of AQA exam questions on this dot point, with worked answer explainers. The year tag is the paper they imitate, not the source.

AQA 20194 marksExplain the difference between a low-level and a high-level language, and give one advantage of each.
Show worked answer →

A low-level language is close to the hardware. Machine code is the binary the processor executes directly, and assembly language uses mnemonics that map roughly one-to-one to machine instructions; both are processor-specific. A high-level language uses constructs close to human language (such as loops and named variables) and must be translated before it runs.

An advantage of a low-level language is fine control over the hardware and efficient, fast code, which matters for device drivers and embedded systems. An advantage of a high-level language is that it is easier and faster to write, read and maintain, and is portable across different machines because the translator handles the machine-specific detail.

Markers reward the closeness-to-hardware versus closeness-to-human distinction and a valid advantage of each (control or speed for low-level; ease or portability for high-level).

AQA 20214 marksDescribe the imperative, object-oriented, declarative and functional programming paradigms, stating one defining feature of each.
Show worked answer →

Imperative: the program is a sequence of commands stating how to achieve a result, using variables, assignment and loops; its defining feature is explicit step-by-step control flow. Object-oriented: a style within the imperative family that organises code around objects bundling attributes and methods; its defining feature is the class and object structure with encapsulation and inheritance. Declarative: the program states what result is wanted rather than the steps, as in SQL; its defining feature is describing the goal, leaving the method to the system. Functional: the program is built from functions applied to data, avoiding changing state; its defining feature is the use of pure functions and immutability.

Markers reward a correct distinguishing feature for each of the four paradigms, particularly the how-versus-what contrast between imperative and declarative.

Related dot points

Sources & how we know this