Programming languages (Edexcel GCSE Computer Science): Revision Notes
Programming languages
What are programming languages?
A programming language is essentially a way for humans to communicate with computers. It's made up of specific set of instructions and syntax rules that tell a computer exactly what to do. Think of it like learning a foreign language - you need to follow certain grammar rules and use the right vocabulary for the computer to understand you.
Just like human languages have grammar rules and vocabulary, programming languages have their own syntax and keywords that must be used correctly for the computer to understand your instructions.
Programming languages fall into two main categories based on how close they are to human language versus machine language: low-level and high-level languages.
Low-level languages
Low-level languages work very close to a computer's hardware. This means they speak almost directly to the computer's processor, making them powerful but challenging to use.
Machine code
Machine code is the most basic programming language that computers understand. It's written entirely in binary - just 1s and 0s. Every simple programme, even one that does something basic, needs thousands of these binary digits. This makes machine code extremely difficult for humans to read, write, or debug.
Example: Machine Code Instruction
A simple instruction might look like: 10110000 01100001
This binary code represents a specific operation that the CPU can execute directly, but it's nearly impossible for humans to understand without translation.
Assembly language
Assembly language makes things slightly easier for programmers. Instead of using pure binary, it uses short, memorable keywords called mnemonics to represent instructions. These mnemonics are much easier for humans to remember than binary codes.
Example: Assembly Language
Instead of binary code, you might write: MOV AXE, 61h
This instruction moves the hexadecimal value 61 into the AXE register - much more readable than its binary equivalent.
However, assembly language still needs to be translated into machine code before the CPU can execute it, just like machine code but with an extra translation step.
Uses of low-level languages
Low-level languages are typically used for:
- Device drivers - software that helps your operating system communicate with hardware
- Firmware - the basic software that runs embedded systems like washing machines or car computers
- System software where direct hardware control is essential
Low-level languages are chosen when you need maximum efficiency and direct hardware control, even though they're much more difficult to programme in.
High-level languages
High-level languages are much closer to human language, making them far more programmer-friendly. Popular examples include Java, Python, and C++.
Key characteristics
High-level languages are problem-oriented, which means they let programmers focus on solving the actual problem rather than worrying about how the computer's hardware will handle it. They use familiar keywords like print, if, and return that make sense to humans.
Translation requirement
Unlike machine code, programmes written in high-level languages must be translated before a CPU can run them. This translation process converts the human-friendly code into machine code that the processor can understand.
Interestingly, a single line of high-level code often requires multiple machine-code instructions to implement. This shows how much work the translation process does behind the scenes.
Uses of high-level languages
Today, most software development uses high-level languages because they:
- Come with libraries of ready-made functions
- Include integrated development environments (IDEs) with helpful tools
- Have editing tools that make writing and debugging code much easier
Comparing low-level and high-level languages

This comparison shows the key trade-offs between the two types of languages. Low-level languages give you more control and efficiency but are much harder to work with, while high-level languages prioritise ease of use and portability over raw performance.
Worked examples and exam tips
Exam Question Style: "A programme written in a high-level language will run on computers with different types of CPU, whereas one written in a low-level language is machine-specific. Explain this difference."
Answer Approach: High-level languages focus on the programme logic rather than specific computer architecture. When translated, the same high-level code can be converted to work with different CPU types. Low-level languages, however, use the specific instruction set of a particular CPU, making them tied to that hardware.
Common Exam Scenario: "A programme is needed to control an embedded system with very limited on-chip memory. Explain one reason why a programmer may decide to write the programme in a low-level language."
Key Point to Remember: Low-level languages interact directly with hardware, allowing for efficient memory usage - crucial when memory is severely limited.
When answering exam questions about language choice, always consider the specific requirements: efficiency vs. ease of development, hardware constraints, and portability needs.
Key Points to Remember:
- Programming languages are tools that let humans give instructions to computers using specific syntax rules
- Low-level languages work close to hardware - they're efficient but difficult to use and machine-specific
- High-level languages are programmer-friendly and portable but less memory efficient and require translation
- Machine code uses pure binary, while assembly language uses memorable mnemonics
- Most modern software uses high-level languages because they're easier to develop and maintain