5 ms·
> They seem to regard all abstraction as simply unnecessary... I would be surprised if the video author agreed with this statement. My understanding of his poi
by xelxebar 5y ago
> They seem to regard all abstraction as simply unnecessary...
I would be surprised if the video author agreed with this statement. My understanding of his point is something more general and almost trivially true, i.e. a given set of abstractions can't solve problems the same way as a different set of abstractions. The strong version is a Venn diagram
┌──────────────────────────────┐
│ │
│ Implementations expressable │
│ by abstraction set A │
│ │
│ ┌──────────────────────┼───────┐
│ │ │ │
│ │ Implementations │ │
│ │ expressable by both │ │
│ │ │ │
└───────┼──────────────────────┘ │
│ Implementations expressable │
│ by abstraction set B │
│ │
└──────────────────────────────┘
In particular, if you are still in the "this problem isn't completely, rigorously nailed down" phase, then building abstraction-hierarchy A implicitly means that you cannot explore some of the solutions available to abstraction-hierarchy B.
Said another way, abstractions cut down the space of possible solutions.
Cutting down the space definitely has large upsides. If you're trying to build a nuclear plant, we probably want to weed out the cake-baking solutions. For especially large and complex problems with horrendously large solutions spaces, abstractions function as a way of compartmentalizing some of that solution space into manageable sub-problems. However, maybe there is a better set of sub-problems?
After a year hammering on some software development project, you probably have a much clearer idea of the problem's nuances than when first starting. Wouldn't it be great if we could perform low-cost rewrites? If you can hold the entire source code in your head and cognate about it, that's probably even possible. Could any one human hold all of Firefox in their head?
One point from the video stands out to me: abstractions might just be a necessary evil. They are effective tools for helping humans cognate about complex problems, which involves limiting our ability to cognate about potential solutions.
Anyway, I am reminded of the surprising solutions found by genetic algorithms and their ilk.