Abstraction: Not what you think it is
Basically functions are not abstractions, the data structures that functions act on are the real abstractions. Because the data structures have been planned out in a particular way, functions can manipulate them as if they were manipulating concrete entities in the business domain. Here's a bunch of relevant quotes talking about that idea (credits to <a href="https://medium.com/webdevops/data-structures-548cbea9c520" rel="nofollow">https://medium.com/webdevops/data-structures-548cbea9c520</a>)<p>"Bad programmers worry about the code. Good programmers worry about data structures and their relationships."<p>- Linus Torvalds<p>"Fold knowledge into data, so program logic can be stupid and robust."<p>- Eric S. Raymond<p>"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."<p>- Rob Pike<p>"Representation is the Essence of Programming"<p>- Fred Brooks<p>"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."<p>- <a href="https://www.cs.utah.edu/~germain/PPS/Topics/information_representation_and_transformations.html" rel="nofollow">https://www.cs.utah.edu/~germain/PPS/Topics/information_repr...</a>