Imperative vs Declarative
What do these terms mean? They are often cited when reading introductions to various frameworks or tutorials, here is a brief overview.
Imperative (how)
Tell the computer how to do something, we have to explicitly code all the details.
In computer science, imperative programming is a programming paradigm that uses statements that change a program’s state. In much the same way that the imperative mood in natural languages expresses commands, an imperative program consists of commands for the computer to perform. Imperative programming focuses on describing how a program operates. wikipedia
A simple example, an imperative function to sum a list of numbers…
function imperativeSum(numbers) {
let total = 0;
for (let i = 0; i < numbers.length; i++) {
total += numbers[i];
}
return total;
}
imperativeSum([1, 2, 3, 4]); // 10
Declarative (what)
Here we are concerned with what we want to do, the details (the imperative stuff) are abstracted away.
In computer science, declarative programming is a programming paradigm that expresses the logic of a computation without describing its control flow. wikipedia
function declarativeSum(numbers) {
return numbers.reduce((accumulator, value) => accumulator + value);
}
declarativeSum([1, 2, 3, 4]); // 10
Benefits
- Reduce bugs
- Reduce side effects
- Minimise immutability
- More readable/cleaner code