Is object oriented programming always the good way for all types of projects? Is this methodology the best suited for large projects like compilers, interpreters and other large systems? Most of the compilers are written in C so I can't see any compilers written in the object oriented method. I think OOP benefits the most in places like LOB, simulations where you can consider everything as an object. But is it really useful in all places? Also OOP can lead to inefficient code than procedural code. Not to mention that design patterns sometimes increase the complexity of design.
closed as too broad by user40980, Ixrec, gnat, Kilian Foth, TZHX Feb 16 '16 at 19:01
Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.
Lets try to understand why OOP became popular. It is because of the maintainability problem. Any large codebase has to be just as maintainable as small codebase. Since, OOP features decoupling, modularity, reuse, etc., it helps developing maintainable code. Also, nowadays performance issues are often neglected in favor of maintainability because with advanced algorithms and faster hardware, performance issues can be limited to an acceptable level.
However, there are projects for which different programming paradigms are preferred. Primarily because these projects have different goals. For instance, functional reactive programming have come to fashion for event-based and asynchronous systems development.
So, to answer your question, OOP is the most popular programming paradigm in use now. OOP programmers often times, either out of enthusiasm or ignorance, try to apply it to develop solutions that should be developed using other paradigms.