I use the words âmodelingâ and âabstractionâ in the same meaning. The words âpattern discoveryâ is also strongly related to the concept. The abstraction is an important concept. However, the concept is itself abstract. I am worried that you will be confused. In (1.4) What is abstraction?, I explain the concept more in detail.
Modeling or abstraction is a task to stack boxes.
When you start to abstract, you stack new boxes one by one on top of the boxes collected during information gathering. You canât put a box in the air without a supporting foundation. So, by using the boxes gathered as the foundation, by piling up one by one on top, gradually aim for height. In this metaphor, concrete information are at the bottom, whereas abstraction increases by height.
If you try to put a box in the air without a foundation, it will fall. Similarly, abstract ideas need a foundation consisting of concrete knowledge. It corresponds that if you try to learn abstract concepts without concrete information, you just remember the sentence as concrete information. The fallen box does not have support. You can not tell concrete examples for the literal memory.
Fig: Modeling and abstraction Left: You canât place a box in the air. Right: You need a foundation first.
The boxes to be stacked on are not limited to those collected. By looking at the collected information, you often find a pattern. The pattern is a new box. I call the activity âpattern discoveryâ in (0.2.2) Compare and find patterns. I also call it âmodelingâ because it is an activity to make a model. Model is a box to be stacked on. To create a new box to stack is to create more abstract information from concrete information. So I also call it âabstraction.â
For example, consider the concepts written in a book.
Before writing a book, the author has various concrete experiences. However, the author canât write all experiences in the book. So, most of the concrete information is gone in the process of writing a book.
The author makes an effort to provide concrete examples to support abstract concepts. It is an effort to provide foundational boxes. However the author doesnât know what boxes you have, so sometimes the supporting boxes arenât adequate. In which case, you need to create a missing box by yourself.
Fig: Modeling: collect information, think, put on the top
The boxes may collapse while being stacked. Exact knowledge, such as maths provides square blocks. In mathematics, you can stack blocks with precision, and you can make a very high tower. That is, you can reach knowledge with a high level of abstraction. On the other hand, the âboxesâ in other fields are irregular to varying degrees. Trying to accumulate these in the same way as mathematics causes collapse. Therefore, it is necessary to gather a lot of information, support it with many boxes, and stack it like a pyramid.
Fig: In mathematics, you can stack boxes perfectly, but in other areas, you can not.
Letâs look at a concrete example of information gathering.
Example of a list
[1, 2, 3]
Python also has tuples.
Example of a tuple
ïŒ1, 2, 3ïŒ
Now you have two units of new information. You got two boxes by information gathering and you have put them on the floor.
You would have thought that these two were similar. Human creates programming languages for specific purposes. So even though lists and tuples are similar, they are for different purposes.
Suppose you are interested in the difference. Now you have a question, âwhat is the difference?â This question works as a driving force of learning. Driven by this force, you may query the difference between lists and tuples on a search engine. Or you replace a list in the program with tuples, run the program and observe the result (*1). These activities provide you with new information. During collecting information, you will eventually create a new box and placing it on top of those boxes.
Footnote (*1): You may see AttributeError: 'tuple' object has no attribute 'append'
and TypeError: unhashable type: 'list'
. You may want to query those messages on a search engine.