Does OOP reflect a “natural” way of thinking? Is it a better choice than the procedural programming paradigm?
In computer science, to say that one approach is “better” than another is to miss a great detail: I do not think that there are “better” or “natural” paradigms per se, but just apppropriate answers to certain problems in a given context.
In his 1962 book “The Structure of Nature Revolutions”, Thomas Kuhn introduces the idea of the “paradigm shift”; following this idea, human knowledge does not evolve gradually, but rather in discontinuous jumps, called “paradigm shifts” or “scientific revolutions”:
“A scientific revolution occurs, according to Kuhn, when scientists encounter anomalies which cannot be explained by the universally accepted paradigm within which scientific progress has thereto been made. The paradigm, in Kuhn’s view, is not simply the current theory, but the entire worldview in which it exists, and all of the implications which come with it. There are anomalies for all paradigms, Kuhn maintained, that are brushed away as acceptable levels of error, or simply ignored and not dealt with (a principal argument Kuhn uses to reject Karl Popper’s model of falsifiability as the key force involved in scientific change).”
(Wikipedia, 2006)
In the case of the activity of software engineering, the paradigm shift from procedural to object-orientation is quite evident, both historically and technically speaking. Continue reading →