Abstraction: Not What You Think It Is
As the quoted writers show, people do not even agree what abstraction means. <...>
This situation is particularly sad for me as someone with a background in PL theory. There are a lot of topics in software engineering that are the result of accumulated intuition over decades. But we've had a pretty good definition of abstraction since 1977, originally in the context of program analysis, and — I claim — it actually translates quite well into a precise definition of “abstraction” in engineering.
TL;DR: абстракции — это сугубо умозрительные конструкции, которые не отображаются ни на какую конкретную конструкцию языка программирования напрямую, и в силу своей природы разные абстракции можно строить, не трогая исходный код вообще. Перед тем, как показать определение, автор также перечисляет вещи, которые часто называют абстракцией, но не являются ей в смысле приведённого им определения.