Notes on abstraction in mathematics versus computer science.
https://plato.stanford.edu/entries/computer-science/#PragCorr
Colburn (1999, 2000), while keeping software and hardware apart, stresses that the former has a dual nature, it is a “concrete abstraction” as being both abstract and concrete. To define software, one needs to make reference to both a “medium of description”, i.e., the language used to express an algorithm, and a “medium of execution”, namely the circuits composing the hardware. While software is always concrete in that there is no software without a concretization in some physical medium, it is nonetheless abstract, because programmers do not consider the implementing machines in their activities: they would rather develop a program executable by any machine. This aspect is called by Colburn (1999) “enlargement of content” and it defines abstraction in computer science as an “abstraction of content”: content is enlarged rather than deleted, as happens with mathematical abstraction.