5 ms·
You could say that an abstraction is a decision about which details of the complex world are important, or even expressible. Problems are sometimes intractable
by macrolocal 5y ago
You could say that an abstraction is a decision about which details of the complex world are important, or even expressible. Problems are sometimes intractable just because the wrong decision's been made.
- atoav 5y agoMy feeling is that abstractions can also be (potentially) more. E.g. good abstractions are themselves composable in expressive and new ways, which gives programmers the ability to reach goals faster, easier and with less risk and maintenance cost. Building abstractions can be ery much like creating a new language.
- macrolocal 5y agoStill, I bet Laplace's demon could get by just fine without them, and maybe even spot clever optimizations that a human never would. After all, there's no such thing as a free lunch.
- atoav 5y ago> After all, there's no such thing as a free lunch. 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).
- macrolocal 5y agoHm, every abstraction comes with costs and benefits. For information theoretic reasons ("no free lunch folklore"), the costs can never be completely eliminated. The usual way to make abstractions useful is to choose a restricted problem space, compressible enough to offset the abstraction's overhead.