Most programming languages are designed to be applied imperatively i.e. the programmer has to lay down the sequence of steps to be taken to modify the input to the required output. This lends itself quite naturally to algorithmic thinking. On the flip side, declarative design is built around the idea …