3 ms·
I think of things in terms of abstractions and models. Abstractions generalize commonalities into a vocabulary that can be used on any entity that is covered by
by chousuke 5y ago
I think of things in terms of abstractions and models. Abstractions generalize commonalities into a vocabulary that can be used on any entity that is covered by the abstraction. A sequence is an abstraction, but data structures themselves aren't as far as software is concerned. Data structures can be sequences, but you can't create a sequence.
A (logical) model is a simplified representation of the real thing that is still complete enough that it can be used to successfully reason about and accomplish goals with a system. A linked list datastructure is a real thing with a number of possible implementation details, but it still has a straightforward, concrete model of what it is. It's not an abstraction.
A model does not have to be abstract at all; it can be very concrete, even if it in practice hides some underlying details.
It seems common in software to either get lost in abstraction so that you forget the model, or consider the model so rigid that you miss useful, simplifying abstractions.
- specialist 5y agoI really like your description of how models enable reasoning about the problem. Ya, abstractions vs models. I'll drop the "mental" qualifier, thanks. > get lost in... Totally. Too many times, the implementation comes to be treated as the model, completely obfuscating the client's actual problem.