5 ms·
Cannot everyone get the sense that how we currently build software is one gigantic leaky abstraction?
by williamcotton 3y ago
Cannot everyone get the sense that how we currently build software is one gigantic leaky abstraction?
- Legend2440 3y agoWorse; it's a stack of abstractions on top of abstractions on top of abstractions. You're at least 10 layers away from the hardware, possibly more.
- williamcotton 3y agoI don’t necessarily see that as the problem. Assembly is a great abstraction over machine code. Languages that compile to these bytecodes are a good abstraction. Garbage collected languages are a good abstraction. Web applications are not a good abstraction. Auth, storage, route handlers, tests, deployment, et al, are all cobbled together like chocolate ice cream and jalapeños on an uncooked bed of salmon and root beer.
- Legend2440 3y agoIt's not necessarily a problem. It would be very hard to program without abstractions. But all abstraction is compression in a sense. You are writing a smaller program that is "decompressed" into a much larger compute graph - for example, a loop unrolls into the same operation many times. This makes it much easier to fit the program into your head, but also limits its complexity. This is why it's hard for programs to deal with the arbitrarily-complex real world.
- williamcotton 3y agoArbitrarily complex domains are one thing. Arbitrarily complex web applications are another.
- deleted 3y ago[deleted]
- Veserv 3y agoEvery abstraction leaks. A good abstraction for your domain is stable in your domain and only leaks outside of your domain. A great abstraction is separable allowing you to only drop down the abstraction level where needed and allowing the rest of the code to continue using the abstraction where the leaks do not matter, and layered allowing you to only drop down as much as needed and making it easy to rebuild parts of the upper layers on a new foundation.