From the preceding discussion, you may conclude that there is a substantial difference between a functional and comparative approach to programming. While imperative programming is focused on algorithms, declarative programming is focused on the phenomena produced by these algorithms.
Imperative programming allows you to produce phenomena with the help of algorithms. Declarative programming names the phenomena you may need and then allows you to call them by name. This abstracts away all the details of the inner workings of the phenomena.
This is reflected in the separation between the approaches to data structures in different languages. Imperative programming languages, such as C++ or Java, will have their data structures, specifically, collections, implemented in a low-level manner. Typically, they will be mutable and will...