Hacker Timesnew | past | comments | ask | show | jobs | submitlogin

The whole point of layers and abstractions is to reduce the number of states you have to worry about. The way that people talk about abstractions like they're a bad thing makes me think they've never really stopped and thought about all the many, many good abstraction layers they use. It makes sense: a great abstraction is basically invisible, so you don't even notice it unless you pay attention. But everyone who says "too many abstractions" has clearly not stopped and paid attention. You don't need fewer abstractions, you need better abstractions.


Are current abstractions good enough?

If I test a software requiring network connection, then I need to consider the possible states of two obvious layers: network and the os.

If both layers only have 3 qualities, with 3 distinct states, then they amount to a 3^6=729 total different unique environment my software can run in.

Then I need to test all my unique software states in all of the above cases, which is already impossible.

So are you making the point that the current abstractions are not good enough, because I cannot consider them “invisible”?


Nonsense. Abstractions.are for fools. I count my electrons by hand, just like my grandfather did.


As long as abstractions can be leaky, they aren't better. And once they start to leak, they go from "just the right amount" to "too many".

I think that's a general rule of thumb for abstractions. (I'm not sure, though; I just made it up.)


An abstraction layer makes itself most visible when it fails. Avoiding failure requires better or less abstraction layers. In many cases I don't trust others to build correct abstraction layers, good UI libraries, reliable GPU drivers that don't corrupt memory when sleeping the system, etc. (Filesystems and virtual memory are largely reliable in the common case, though it's still common to avoid filesystems and allocations and swapping in real-time code, and schedulers cause grief when they cause media payback to stutter when I'm running compiler jobs.) Often I trust myself to work with less abstraction layers, more than I trust others to build better ones.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: