Re: C++ is complicated
jacob navia wrote:
But wasn't *inheritance* supposed to define this stuff?
Object-oriented programming and inheritance hierarchies were all the
hype in the 80's and early 90's. While certainly not the silver bullet
of programming, it was nevertheless considered one of the greatest
advances in programming.
As years passed and the overall experience on OOP and especially
inheritance grew, it became more and more clear to the programming
community in general that OOP and especially inheritance is not, after
all, such a great tool. It's very useful, and it has great ideas in
theory, but... just somehow it's not everything that it promised to be.
While there are situations where inheritance is the perfect solution,
these situations are not as abundant as once thought. OOP and
inheritance is not the silver bullet of programming, not even close.
(IMO the modular part of OOP is still extremely useful, and an inherent
part of almost any well-designed program. It just can't do everything by
itself.)
In the last decade the paradigms have shifted more towards dynamic
programming. Dynamic code/object generation (at compile time or at
runtime), dynamic creation of first-class objects (including first-class
functions), runtime type information (which allows things like
reflection), etc. Template metaprogramming can be considered a subset of
this. Also there has been a clear shift towards a more functional
approach, inspired by lambda calculus.