In generic programming, the concept of refinement is often used to express that one abstraction builds upon another. For instance, if you have an abstract entity X
and a more detailed version Y
that includes all features of X
along with extra capabilities, Y
is said to refine X
. What is the appropriate term to describe X
in relation to Y
?
i think its the abstarction. x is just the base, the unrefined version that y builds on. not the polar opposite, but it covers the essense of the original concept.
I believe that the correct term to use is ‘abstraction’. In my own programming projects, I noticed that we usually start with an abstract definition of a concept or interface, and then we build more detailed versions that refine that initial structure. The abstraction provides a flexible foundation that can be extended, allowing for changes and enhancements in later implementations. I found this approach advantageous because it kept the design modular and maintained clarity between the core concept and its increasingly detailed refinements.