I read the following paragraphs about architecture from Microsoft .Net: Architecting Applications for the Enterprise, by Dino Esposito and Andrea Saltarello:
Whenever you take a declarative approach to coding rather than an
imperative approach, you are delegating some responsibilities to some
other layer of code—a layer that you don’t control entirely. So you’re
ultimately hoping that the intermediate tool will understand you
correctly and won’t encounter any trouble of its own along the way. In
software development, delegating to a third party makes development
faster, but you should guarantee that users get exactly what you want
them to.This doesn’t mean that you shouldn’t trust Visual Studio 2008 or
similar wizard-based products. The point is something else entirely.
In a large system, likely being developed by several teams, classic
declarative programming just doesn’t work. You need to have in your
presentation a layer of code that decides what to display, where to
read settings, and how to apply them. Declarative programming is still
a great option, but only if you write the engine and the wizards.
Can someone explain to me in simple words what exactly declarative and imperative programming are?
Declarative programming – What should be done
Imperative programming – How what you want should be done.
Declarative programming requires developers to say what is to be done. Imperative programming requires developers to define step by step how code should be executed.
Example: LINQ in C# is declarative.
Read here for more: http://www.informit.com/articles/article.aspx?p=1330154&seqNum=4