Data structures can be used as part of an abstraction. So can functions. But neither one is the abstraction.
In the case of data structures, you might use a particular data-structure as the domain of the simpler world, but it's the mapping itself that is the abstraction, and that mapping is not part of the code, it's a conceptual thing that must be documented.
All of those quotes say how important data and its representation is to a programmer, but that doesn't equate to saying data structures are abstractions, because abstractions aren't the only important thing. I'm not sure they're even the most important thing.
Building abstractions can be ery much like creating a new language.
I think a lot depends on where your cost goes. E.g. you could create hyper-optimized code that performs incredibly well, but it is also hard to maintain, next to impossible to comprehend and cannot adapt to change very well.
I believe it is possible to create code that does well on all fronts (readable, maintainable, adaptable, performant), it is just a much harder search task (you pay it with developer time/experience).
The usual way to make abstractions useful is to choose a restricted problem space, compressible enough to offset the abstraction's overhead.
And then a data scientist with expertise in differentiable programming zooms in on a motorcycle to back them up.
And then a mathematician with expertise in linear algebra time travels in from the 19th century to join the party, although they're admittedly a bit lost and confused and not much help in this particular conversation because they're not familiar with modern jargon.
Which isn't to say that those quotes aren't valid or don't express concepts worth knowing and internalizing. But they're practical statements that apply to a certain way of looking at things. A very useful one, to be sure, but not the only one. The distinction between functions and data has a tendency to disappear upon close examination.
(Almost as if the concepts of "function" and "data structure" were themselves abstractions.)
Edit. If the vertical axis is time and the horizontal plane is space, then the floating something in the middle is the 'abstraction', its shadow on the plane below is its data structure and its projection onto the vertical axis is its function. The need to compress everything into the 1-dimensional time is what creates those for-loops and ifs. The art of finding the right data structure is the art of finding the right angle at which the 'abstraction' drops a good descriptive shadow.
[edit] spelling [/edit]
You've failed to account for the interpreter and the hardware it runs on that provides operational properties necessary for human use, i.e. performance
"Syntax without representation is tyranny!"
- Gerald Jay Sussman
The decision of what a function will do over and over again is abstracting the layer below which if it weren't for the function, would have repetition of some kind. It's taking those repeated bits, and factoring out the different elements reducing them to a function call.
That said, I understand where this perspective is coming from, and perhaps "refinement" is more descriptive of a more practical approach.
That distinction sounds mildly problematic when one can turn a data structure into a function.
Ah, they're advocates for strongly-typed programming and they didn't even know it!
Maybe, but this is not at all what the article is arguing, however.
"Bad programmers worry about the code. Good programmers worry about data structures and their relationships."
- Linus Torvalds
"Fold knowledge into data, so program logic can be stupid and robust."
- Eric S. Raymond
"Data dominates. If you’ve chosen the right data structures and organized things well, the algorithms will almost always be self-evident. Data structures, not algorithms, are central to programming."
- Rob Pike
"Representation is the Essence of Programming"
- Fred Brooks
"One of the key attributes of a "Good" representation, is the ease in which it is transformed into other valid information the computer can process."
- https://www.cs.utah.edu/~germain/PPS/Topics/information_repr...