HiveBrain v1.2.0
Get Started
← Back to all entries
gotchacsharpCritical

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

Submitted by: @import:stackoverflow-api··
0
Viewed 0 times
andbetweenthedifferenceprogrammingdeclarativeimperativewhatparadigm

Problem

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#)?

Solution

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 collection = new List { 1, 2, 3, 4, 5 };


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

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


Here, we're saying:

  • Create a result collection



  • Step through each number in the collection



  • 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.

Code Snippets

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

Context

Stack Overflow Q#1784664, score: 1156

Revisions (0)

No revisions yet.