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

abstraction layers

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.

leaky abstractions

  • 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#

  1. 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

  1. 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?

  1. 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

21.5. Experience Report Evidence#

21.6. Questions After Today’s Class#