Classifications of Programming Languages
Programming languages have evolved through generations — from raw binary to natural-language-like code. Understanding this evolution helps explain why we have different types of languages today.
Learning Objectives
- 11.5.1.1 Describe generations of programming languages
- 11.5.1.2 Distinguish between low-level and high-level languages
- 11.5.1.5 Advantages and disadvantages of low-level languages
- 11.5.1.6 Advantages and disadvantages of high-level languages
Conceptual Anchor
The Language Barrier Analogy
Imagine talking to someone who only speaks binary (machine code). You'd need a translator at every step. Low-level languages are like learning their dialect — closer to their language but harder for you. High-level languages are like speaking English and having an excellent translator (compiler/interpreter) handle the conversion.
Rules & Theory
Generations of Programming Languages
| Generation | Name | Description | Example |
|---|---|---|---|
| 1GL | Machine Code | Raw binary (0s and 1s), directly executed by CPU | 01001000 01100101 |
| 2GL | Assembly | Mnemonics (ADD, MOV, SUB), 1-to-1 mapping to machine code | MOV AX, 5 |
| 3GL | High-Level | English-like syntax, portable, needs compiler/interpreter | C++, Python, Java |
| 4GL | Very High-Level | Problem-specific, closer to human language | SQL, MATLAB, R |
| 5GL | Natural Language | AI-driven, constraint-based programming | Prolog, Mercury |
Low-Level vs High-Level
| Feature | Low-Level (1GL, 2GL) | High-Level (3GL+) |
|---|---|---|
| Readability | Hard to read | Easy to read |
| Portability | Machine-specific | Portable (cross-platform) |
| Speed | Very fast execution | Slower (needs translation) |
| Memory control | Direct hardware access | Abstracted from hardware |
| Debugging | Very difficult | Easier with modern tools |
| Learning curve | Steep | Gentle |
| Use case | Drivers, OS, embedded systems | Apps, websites, games |
Same Program in Different Levels
Task: Add 5 + 3
Machine Code (1GL):
10110000 00000101
00000100 00000011
Assembly (2GL):
MOV AL, 5
ADD AL, 3
Python (3GL):
result = 5 + 3
SQL (4GL):
SELECT 5 + 3;Why Low-Level Still Matters
Operating systems, device drivers, and embedded systems (car ECU, pacemakers) use low-level languages because they need direct hardware control and maximum performance. Your microwave's firmware is probably written in C or assembly!
Common Pitfalls
Assembly = Machine Code
Assembly is NOT machine code. Assembly uses mnemonics (MOV, ADD) that are human-readable. It still needs an assembler to convert to machine code (binary).
Tasks
List the 5 generations of programming languages with an example of each.
Explain why high-level languages are portable but assembly language is not.
A game developer needs maximum performance. Should they use Python or C++? Give 3 reasons.
Self-Check Quiz
Q1: What generation is Assembly language?
Q2: Give 2 advantages of high-level languages.
Q3: Why would someone use a low-level language?