In computer science and programming we talk a lot about "abstraction" by which we mean to create ever "higher" level code to that accomplishes increasingly complex task with less programmer decision making. See Opposite of verb “abstract” and noun “abstraction” for some context.
However, abstract means, "to drag away, detach, pull away, divert" which is not what programmers do when we create abstractions in software.
For example, back-in-the-day, text was represented by sequences of of byte codes e.g.
078, 111, 119, 032, 105, 115, 032, 116, 104, 101, 032, 116, 105, 109, 101
... which we "abstracted" to arrays of characters:
[N,o,w, ,i,s, ,t,h,e, ,t,i,m,e]
... which we "abstracted" to become a string:
"Now is the time"
... which in modern languages is actually a class or similar structure:
"Now is the time".methodThatManipulatesString
At each stage of "abstraction" the minutia of working with textual information didn't disappear, we didn't remove it, and we really didn't (arguably) turn the textual information into some higher platonic form. All we did was hide all the grubby details and then bolt on yet more functionality with it's own grubby details hidden away. If you dig down into any language or platform, the details are all still there.
It is somewhat analogous to a mechanical watch. The watchmakers can tell the time by looking at the gears and springs of a watch but for the rest of us, they hid the watches complexity behind the hands and face of the clock.
So, I'm looking for a term, preferably latin, conveys this idea. Programmers already use "encapsulation" but that just means, "to put in." I want a term meaning "to hide, but not remove complexity" preferably something linguistically and conceptually related to "abstraction" itself.
I think it's important in training to make sure new programmers don't think that abstracted code contain less complexity under the hood than the non-abstracted code despite it's more simple superficial appearance.