Is object oriented programming ALWAYS a good way for large projects? [closed]

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, TZHXFeb 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.

• Since version 4.8 GCC is written in C++. – Chnossos Jul 31 '14 at 10:34
• You can implement an object-oriented design in a procedural language like C. Regarding your question: there are programmers that are not convinced OOP is a better choice for any project, and prefer to use some other paradigm. – Giorgio Jul 31 '14 at 10:36
• @Fish: yes, e.g. functional programmers will not use OOP, unless they choose a hybrid functional-OO language like Scala in which you can combine the two paradigms. – Giorgio Jul 31 '14 at 10:48
• A compiler is not such a large project. – m3th0dman Jul 31 '14 at 12:25
• @Doval: I may be wrong. I found some interesting ideas in SICP. If I understand it correctly, a distinguishing feature of object-oriented programming is the use of message passing (dynamic dispatch) instead of dispatching on type using if (x instanceof ...) like in Java or using pattern-matching like in FP (see mitpress.mit.edu/sicp/full-text/book/…). A second distinguishing feature (see mitpress.mit.edu/sicp/full-text/book/book-Z-H-19.html), is the use of state, which OO has in common with procedural programming: both are imperative paradigms. – Giorgio Jul 31 '14 at 14:09