Programming paradigms are established conventions and practices that dictate how computer programs are structured and developed
Programming paradigms offer varied methodologies for software construction
Different paradigms are suited to different tasks, e.g. simple web applications can be achieved with light-weight procedural languages, complex enterprise-level software can only be achieved with a complex object-oriented paradigm
New paradigms arise, and existing ones adapt in response to changes in computing and software challenges
Overview of Programming Paradigms
Procedural Strengths
Efficient execution of straightforward tasks
A clear flow of control (top to bottom)
Ease of implementation for algorithms
Strong emphasis on step-by-step procedure execution
Procedural Weaknesses
Can become unwieldy for large programs
Lack of modularity can lead to code redundancy
Not ideal for applications with complex states or behaviours
Difficulty in managing and scaling the system as it grows
Object-Oriented Strengths
Enhances modularity with encapsulation
Enables real-world modelling using objects
Code reuse through inheritance
Polymorphism allows flexibility in interface design
Object Oriented Weaknesses
Can lead to unnecessary complexity
Inefficiency due to overhead (e.g., memory for objects)
Not always intuitive for all types of problems
Misuse can lead to overly complex inheritance hierarchies
Assembly Strengths
Direct control over hardware
Optimised performance due to low-level operations
A transparent understanding of how the machine operates
Potential for very efficient code
Assembly Weaknesses
Extremely steep learning curve
Hardware-specific, leading to a lack of portability
Tedious and error-prone due to manual memory management.
Difficult to write, debug, and maintain large programs