21. Abstraction and connecting ideas#
21.1. Why do we need to know about this?#
computers are not magic and edge cases help you see that
in case you want to do high performance programming
it’s good practice with abstraction
21.2. Hardware vs Software abstraction#
Abstraction is to remove details and use higher level units
in hardware our abstractions are less leaky becuase it is less forgiving.
software abstractions can suffer from leaks; think git- it’s hard to learn because the abstraction is leaky.
a lot of programming is designing abstractions, to get good at making something, you study examples first- good and bad- to learn what to do, and not to do.
the above is a blog post by one of the co-founders and the 2010-2019 CEO of Stack Overflow Joel Spolsky
21.3. Prepare for Next Class#
21.4. Badges#
Find another example of a leaky abstraction (besides git) in programming or a hobby. You can use anything to find the example, but be sure that you understand the abstraction fully. Explain the abstraction and why it is leaky in
leakyabstraction.md
Evaluate abstraction in some code that you are familiar with and, in abstraction.md answer the following:
what are the details it hides
what concepts does it introduce
how does the abstraction help you understand and use the code?
Find another example of a leaky abstraction (besides git) in programming or a hobby. You can use anything to find the example, but be sure that you understand the abstraction fully. Explain the abstraction and why it is leaky in leakyabstraction.md