2. Thinking Abstractly Flashcards
Nature of Abstraction
Abstraction: Process of removing excessive details to get representation that consists of key features
- Representational Abstraction: Involves analysing what is relevant & simplifying a problem based on this information
- Abstraction by Generalisation: Involves grouping together similarities within problem to identify what kind of problem it is
- Allows certain problems to be categorised as being of a particular type, so common solution can be used
- Data Abstraction: Subcategory, details about how data is being stored are hidden
- Programmers can use of abstract data structures (E.g stacks & queues) without knowing how they are implemented
Programmers can also perform functions such as pushing
and popping items to and from a stack without having any knowledge about the code used to implement this functionality. This is called procedural abstraction and is also used in decomposition. It models what a subroutine does without considering how this is done. Once a procedure has been coded, it can be reused as a black-box.
Very large, complex problems make use of multiple levels of abstraction, where each level performs a different role. The highest levels of abstraction are closest to the user and are usually responsible for providing an interface for the user to interact with hardware whereas the lowest levels of abstraction are responsible for actually performing these tasks through the execution of machine code.