There have been some additional advances lately into a new paradigm of programming to help influence code reuse. It is Aspect-Oriented (http://aosd.net) programming which allows the definition of aspects of a program so that you don't have to rewrite the validation of a string everytime you pass it to a method, or to print the name of the function you are in. This takes out a lot of repetitive code, and allow you to reuse aspect definitions. This is really a step towards the next generation, just like OO was a step forward from procedural programming.
There have been some additional advances lately into a new paradigm of programming to help influence code reuse. It is Aspect-Oriented (http://aosd.net) programming which allows the definition of aspects of a program so that you don't have to rewrite the validation of a string everytime you pass it to a method, or to print the name of the function you are in. This takes out a lot of repetitive code, and allow you to reuse aspect definitions. This is really a step towards the next generation, just like OO was a step forward from procedural programming.