It is important to think at a high level of abstraction. Different programming languages (in varying degrees) provide translate mental constructs to the level of a programming language.It is important to create a custom model for the particular problem. Model that is able to accept data, process and deliver results ( in accordance with agreed objectives ).
Programming languages are changing, evolving. Become increasingly compatible with the human way of thinking. One of this is JAVA language with abstract classes and interfaces.
Java allows programming on the abstract level (OOP). But unfortunately, not all of this benefit.
<google +- translated. I wait for the new daniweb.com wards to change their software >