Flexible thinking
Sometimes people wonder why there is Struct and Class in C++ language. They have identical functions except that all the variables defined in struct are public by default and those defined in C++ are private by default. The need for both of these to coexist seems redundant. This is where one needs to go the history of c++. The struct was very much a part of C language and to evolve in to a much richer form, Class was an invention so that it would give a choice / flexibility for people who wanted to stick to struct or change to Class. This thinking was on the assumption that the evolution of class would not be hindered by the syntactical restraints of Struct. This thought was that of Bjarne Stroustrup, the inventor of C++ in 1979 at Bell Labs. History has proved him right!
Simple flexible thinking led to the evolution of the entire evolution of classes and object oriented programming. In our thinking too I believe, if we try to accommodate a little flexibility in our thinking about the tools we develop, the analysis we do, it will lead to results beyond our imagination