Skip to main content
Engineering LibreTexts

2: Abstraction

  • Page ID
    24092
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    Divide-and-conquer reasoning, the tool introduced in Chapter 1, is powerful, but it is not enough by itself to organize the complexity of the world. Try, for example, to manage the millions of files on a computer—even my laptop says that it has almost 3 million files. Without any organization, with all the files in one monster directory orfolder, you could never find information that you need. However, simply using divide and conquer by dividing the files into groups—the first 100 files by date, the second 100 files by date, and so on—does not disperse the chaos. A better solution is to organize the millions of files into a hierarchy: as a tree of folders and subfolders. The elements in this hierarchy get names—for example, “photos of the children” or “files for typesetting this book”—and these names guide us to the needed information.

    Naming—or, more technically, abstraction—is our othertool for organizing complexity. A name or an abstraction gets its power from its reusability. Without reusable ideas, the world would become unmanageably complicated. We might ask, “Could you, without tipping it over, move the wooden board glued to four thick sticks toward the large white plastic circle?” instead of, “Could you slide the chair toward the table?” The abstractions “chair,” “slide,” and “table” compactly represent complex ideas and physical structures. (And even the complex question itself uses abstractions.)

    Similarly, without good abstractions we could hardly calculate, and modern science and technology would be impossible. As an illustration, imagine the pain of the following calculation:

    \[XXVII \times XXXVI\]

    which is 27× 36 in Roman numerals. The problem is not that the notation is unfamiliar, but rather that it is not based on abstractions useful for calculation. Not least, it does not lend itself to divide-and-conquer reasoning; for example, even though V (5) is a part of XXVII, V×XXXVI has no obvious answer. In contrast, our modern number system, based on the abstractions of place value and zero, makes the whole multiplication simple. Notations are abstractions, and good abstractions amplify our intelligence. In this chapter, we will practice making abstractions, discuss their high-level purpose, and continue to practice.


    This page titled 2: Abstraction is shared under a CC BY-NC-SA license and was authored, remixed, and/or curated by Sanjoy Mahajan (MIT OpenCourseWare) .

    • Was this article helpful?