The “module” is a concept in programming languages. Models and modules derives from same Latin “modulus” etymologically.
If you use the word module in physical manufacturing such as architecture, you may imagine with many parts of the same shape. However, it is slightly different in software development. In physical manufacturing, if you want to use a “door” module in many places, you need many doors. However, in software development, if you want to use a function in many places, you need only one implementation of the function. It is enough.
In physical manufacturing, a part that constitutes one function are often physically localized. Physical interactions often occur only when physically close together. For example, gears transmit power by touching each other. So when combining multiple gears to control the movement, the gears are physically localized.
On the other hand, there is no need for physical localization in software development. The description on the line with the source code can influence the far line as well. Software development has a higher degree of freedom than physical manufacturing.
Is it good to have a high degree of freedom? I can not say that. There is a limit to human cognitive ability. It is difficult to keep the whole source code in the brain, so we pay attention only to the important part of the source code for our work and ignore the rest. However, if changes on one line of source code can affect any other line, we can not ignore any line of codes.
--- This page is auto-translated from [/nishio/(1.4.3) Module](https://scrapbox.io/nishio/(1.4.3) Module) using DeepL. If you looks something interesting but the auto-translated English is not good enough to understand it, feel free to let me know at [@nishio_en](https://twitter.com/nishio_en). I'm very happy to spread my thought to non-Japanese readers.