In declarative languages control is transferred to the language and hence is no longer the programmers responsibility. Program states exactly how the result is to be obtained. Destructive assignment of variables. Data structures changed by successive destructive assignments. Order of execution is crucial, commands can only be understood in context of previous computation due to side effects .
Control is the responsibility of the programmer.
Made up of sets of definitions or equations describing relations which specify what is to be computed, not how it is to be computed. Non-destructive assignment of variables. Explicit representations for data structures used. Programmer no longer responsible for control. These form the two sub-branches of the declarative family of programming languages.