Timeless computer science literature classic SICP is full of wonderful knowledge gems, one of which uncovered quite early in the lecture, during discussion on the Newtown's square root approximation methods right in the first chapter. A wonderfully clear and concise explanation of general differences between the concepts of declarative and imperative knowledge emerges so naturally, it feels almost unintentional.

The square root definition serves as a perfect declarative knowledge example;

√x = the y such that y ≥ 0 and y^2 = x

Notice how the definition does not give away any clues on the possible methods of obtaining the square root values. It's sole purpose (appropriately served) is purely declarative description of the square root properties. On it's own the definition lacks certain real-world usefulness - when it comes to the square root calculation it leaves us rather empty-handed. Newtown's trial-and-error, guess-and-improve square root approximation method supplements the bare definition with an imperative square root calculation procedure, the two complementing each other rather nicely.

Apparently the computer science mainly concerns with the imperative 'how-to' procedures, while the declarative 'what-is' descriptions are common in the domain of mathematics.

On a final note, consider the following two statements:

" The required level of theoretical understanding is relative to practical implementation. "

" The key to understanding complex systems is knowing where *not* to look. "

.. and the existence of an imperative capitalist plot against the declarative faction becomes apparent.

P.S. Forming thoughts into clear and concise sentences is no easy feat, please excuse the inconvenience.