Abstraction is a concept that seems difficult to explain, without reverting to using programming terminology. I’ve thought about it a lot, and I can’t come up with a satisfactory answer. Does anyone have any very general, yet very pertinent explanations?
Metaphors, similes etc are all welcome.
A car.
You interact with the car through abstractions – a gas pedal, the steering wheel, which are used to hide the complexity of the vehicle.
You use the abstraction of the gas pedal to control the engine speed, you do not have to manually inject the gas into the engine and control the pistons.
The steering wheel is another abstraction. You turn the wheel and it turns both front wheels at once, dramatically simplifying your task as a driver. You can replace the basic implementation with another one while preserving the interface (e.g. newer cars have power steering).
Automatic transmissions are another good example.