Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the difference between declarative and imperative paradigm in programming?

I have been searching the web looking for a definition for declarative and imperative programming that would shed some light for me. However, the language used at some of the resources that I have found is daunting - for instance at Wikipedia. Does anyone have a real-world example that they could show me that might bring some perspective to this subject (perhaps in C#)?

like image 901
Brad Avatar asked Nov 23 '09 17:11

Brad


People also ask

What is the main difference between declarative languages and imperative languages?

Declarative programming is when you say what you want, and imperative language is when you say how to get what you want.

What is imperative paradigm in programming?

Imperative programming is a software development paradigm where functions are implicitly coded in every step required to solve a problem. In imperative programming, every operation is coded and the code itself specifies how the problem is to be solved, which means that pre-coded models are not called on.

Is imperative programming declarative?

Unlike the declarative approach, imperative programming emphasizes direct instruction on how the program executes functions. The code consists of a step-by-step sequence of command imperatives.

What is declarative imperative and functional programming?

Functional is a particular kind of declarative. C, C++, Java, Javascript, BASIC, Python, Ruby, and most other programming languages are imperative. As a rule, if it has explicit loops (for, while, repeat) that change variables with explicit assignment operations at each loop, then it's imperative.


1 Answers

A great C# example of declarative vs. imperative programming is LINQ.

With imperative programming, you tell the compiler what you want to happen, step by step.

For example, let's start with this collection, and choose the odd numbers:

List<int> collection = new List<int> { 1, 2, 3, 4, 5 }; 

With imperative programming, we'd step through this, and decide what we want:

List<int> results = new List<int>(); foreach(var num in collection) {     if (num % 2 != 0)           results.Add(num); } 

Here, we're saying:

  1. Create a result collection
  2. Step through each number in the collection
  3. Check the number, if it's odd, add it to the results

With declarative programming, on the other hand, you write code that describes what you want, but not necessarily how to get it (declare your desired results, but not the step-by-step):

var results = collection.Where( num => num % 2 != 0); 

Here, we're saying "Give us everything where it's odd", not "Step through the collection. Check this item, if it's odd, add it to a result collection."

In many cases, code will be a mixture of both designs, too, so it's not always black-and-white.

like image 158
Reed Copsey Avatar answered Oct 10 '22 00:10

Reed Copsey