It’s very easy, if not natural, to think of programming as a relatively recent field; limited to the past thirty years or so, but you might be surprised to know that the term “Object-Oriented Programming” was coined by Alan Kay in the late 1960s. And the first language to be widely-recognized as being “object-oriented” was Simula which debuted in 1965!
The idea of OOP was fundamentally different than previous approaches, as well as many that came to follow. As opposed to procedural programming for instance, a top-to-bottom method of solving problems, OOP has some key benefits.
- Modularity for easier debugging and troubleshooting through encapsulation
- Ease of use for yourself and others through abstraction
- Reuse of code through inheritance
- Flexibility through polymorphism
- The ability to scale the application with fear of ‘the butterfly effect’ (one change to a program can impact and/or break the entire program, leading to difficult debugging, etc.)
You might think with all these benefits, why would anyone use anything else? OOP has its shortcomings too, and in the years that followed, languages such as C, Java, C++, and C# began to take the forefront over more object-oriented languages.
As we learn more and continue to find new ways to go about solving problems, many programmers have realized the benefit of dynamic approach. This includes of combination of the best that procedural and object-oriented paradigms have to offer! Languages, such as JavaScript, have evolved over time to support both schools of thought, leading to a great amount of flexibility and surely contributing to the language’s ubiquity in web development and much more.
Sources: https://medium.com/javascript-scene/the-forgotten-history-of-oop-88d71b9b2d9f https://neonbrand.com/website-design/procedural-programming-vs-object-oriented-programming-a-review/ https://www.roberthalf.com/blog/salaries-and-skills/4-advantages-of-object-oriented-programming https://www.youtube.com/watch?v=pTB0EiLXUC8