As Grady Booch puts it “the algorithmic view highlights the ordering of events, and the object-oriented view emphasizes the agents that either cause action or are the subjects upon which these operations act.”
Computer programming languages proved to be wonderful intellectual tools for solving problems. They each provided a language in which almost anything could be specified—unfortunately. Very quickly programs became unmanageably complex, to the point where it was often impossible to prove whether a program actually did what it was supposed to do. Initially, here was no guidance as to how programs in any language should be organized.