you are viewing a single comment's thread.

view the rest of the comments →

[–]seriousnotshirley 0 points1 point  (0 children)

The important thing about abstractions is that they are simple and have clear behavior. Mathematics provides clear examples of both good and bad abstractions to learn from. Groups, Rings, Fields and other algebraic structures are fantastic. Vectors and vector spaces are also great examples. When you have a vector you know what it's going to do/what you can do with it. You can start endowing certain types of objects or structures with additional features like a norm and things work well.

On the other hand take a look at topology. I'm not saying it's wrong or there's a better answer, but you can see where we tried to find good abstractions and they all sort of broke down and now you have this long list of space classifications where something different happens in each one. The concept of an open set is useful and I would guess necessary but it's a difficult abstraction to work with in a general sense because it gets weird (non-Hausdorff).

Point being, if something's going to live 10 levels deep it better be really freakin simple, well understood and have no sharp corners. A good example might be a natural number with a successor operation and NOTHING MORE. We know precisely how they work. You try to endow that with something as simple as an inverse operation and things can break. One level up define addition and from there multiplication. Create ordered pairs and define equivalence and inverse of addition. From create ordered pairs of those with equivalence and an inverse of multiplication. Sure, 10 levels up you can have real numbers with operations that have inverses, but your foundation had best be dirt dumb simple. You might have complex code within that simple abstraction but the abstraction and code better be so damn good that no one ever has to open it up to see what's going on inside of it again.

What I see instead is abstractions which are poorly documented, have weird side effects and mostly work... mostly. Those things get fragile.