Skip to content

Book Review Series - Intellectual Production Skills for Those Who Work in IT

Source

『Intellectual Production Skills for Those Who Work in IT』 Nishio Hirokazu / Kim Wansup (trans.) | Jpub | October 2019

One-line review

A book for those who enjoy learning

What is abstraction?

Abstraction/abtract

Abstraction means extracting only the important parts that need to be paid attention to from a concrete object.

The upper part of abstraction is the Chinese character , which means shape. For example, the upper part of the object is the same character, and it is also used in words such as conception, impression, state, image, landscape, etc. The lower part of abstraction, , means to pull out, to extract. It is the same character as in extraction or recommendation.

Model

The term model is especially interpreted as model in the field of natural science. For example, there is the Standard Model of elementary particles. A toy car model that a child plays with is different from a real car, but it achieves the purpose of running the car and playing with it by extracting only the important elements.

A model is a simplified representation of the structure of the real world. The phenomena that occur in the real world are complex, so it is a process of simplifying them by taking out only the important parts that can be processed within the limited cognitive ability of humans.

Module

Let's think about the module (Module) of the programming language in relation to the term model. Both model and module have Latin modulus as their origin.

When the term module is used to make physical things such as architecture, it means that there are many parts of the same shape.

There is a limit to human understanding. It is impossible to remember the entire source code in your head, so you tend to focus only on the important parts of what you are trying to do and ignore the rest. But if changing the code in a specific location affects other places, you can't ignore the rest.

Limiting interaction

The module concept was created to limit this interaction between codes. In 1975, Niklaus Wirth, the creator of the Pascal programming language, designed the Modula programming language. This language was based on Pascal and introduced the module concept.

In Modula, a module was a group of code with strong relevance. And the components inside the module could not be referenced from outside the module unless they were explicitly exported, and the components outside the module could not be referenced inside the module unless they were explicitly imported. That is, the module of the programming language was a structure that exposed only part of the content and hid the rest.

Hiding unimportant parts = extracting important parts

So far, we have learned that abstraction is extracting important parts from concrete objects. And we learned that a model is extracting only the important part from a complex system in reality. The purpose of the module in programming is this abstraction (modeling).

At the same time as Modula, there was a programming language called CLU, created by Barbara Liskov. In CLU, instead of collecting functions with modules, they collected them with types. And after collecting the data structure and the sequence to process it, they hid the detailed part of the data structure and exposed only the processing sequence, which they called abstract data type.

In Java, which was later distributed, this data and processing sequence were all called classes.

Pattern discovery

Pattern discovery means finding rules, common characteristics, repetitive things, etc. by collecting concrete examples. For example, by drawing the daily access count of a web page as a line graph, you can see that it shows a zigzag shape. It is discovering a periodic pattern by visualizing the facts.

Design pattern

Many people think of design patterns when they hear the word pattern. Design patterns are names given to structures that repeat when designing programs. For example, they named the structure that does not interact directly with each other but processes through a mediator as Mediator pattern. To give an example of a person, when holding an event with multiple participants, it would be chaotic if all the participants tried to coordinate the schedule by talking one-on-one. Therefore, they design to concentrate the information by appointing one mediator.