The errors that do occur are easier to debug, simply because large classes of other errors have been ruled out. Economy of large-scale development . Data abstraction and modularization have methodological advantages for code development. Large teams of programmers can negotiate the interfaces to be implemented and then proceed separately to implement the corresponding pieces of code. Dependencies between pieces of code are minimized, and code can be locally rearranged without fear of global effects.
Polymorphism is important for reusing code modularly.
Economy of language features . Some well-designed constructions can be naturally composed in orthogonal ways. Orthogonality of language features reduces the complexity of programming languages. The learning curve for programmers is thus reduced, and the relearning effort that is constantly necessary in using complex languages is minimized as well. Let us now consider object-oriented languages and see how they compare on these metrics.