abstraction layers


choosing abstraction layers is at the heart of programming, science, systems engineering, and design.

Call a concept a box. Take a few related boxes (concepts), put them in a bigger box. Give that box a name. (Grouping two boxes together means you think of them at the same time.) Repeat until you have a few boxes. Now you can put those boxes in bigger boxes, and so on. You can group the boxes however you like. You can fit any number of boxes into a bigger box, as long as you can think of a name for the bigger box.

Some groupings will make it easier to think about some problems, and harder to think about others. Large systems will have hundreds or thousands of small boxes, or more.* Choosing how to group the boxes, and how to name them, is a skill that can be improved.

(In programming terms, it's a system of pointers used to increase efficiency when working with large objects, and also to work around the limited registers in the human brain.)

*My favorite example of a large system with a ridiculous number of basic concepts is U.S. Law. It's also organized pretty poorly, which is why we need to pay bright, highly trained people lots of money just to understand it and report back. They are called lawyers.

No comments:

Post a Comment