The transparency of csdn especially advocates the eternal path of building and thinks that the eternal path of software is explored from it, I wrote a special article on "design patterns", "exploring the eternal path of software". Many of my views are very enlightening, in the past, I also thought of "Design Patterns" as a simple solution, instead of looking at "design patterns" in the software. Below are some of my own ideas:
Buildings and software can be compared in some places.
In particular, traditional Chinese architecture is a very well-spoken model. These are due to traditional culture. For example, Peking Opera has a conventional style. Chinese painting also has a routine. How should a tree be painted? How many methods are there? Art people generally create their own routines. For example, in the late Ming Dynasty and Early Qing Dynasty, the ink painting method began to mature. At this time, there was no need to outline this pattern for painting trees. Instead, they went on with a few leaves, when the ink painting of the brush is dry, draw the trunk so that a living tree can be drawn.
The above descriptions are actually a model. The person who creates the model is a master, but the person who sticks to the model is always a craftsman.
Back to traditional buildings, traditional buildings in China have paid too much attention to the model, so the architectural style has not developed much. They are basically divided into the north and south schools. Everyone feels that when traveling to the south, you have found that ancient famous buildings are similar. The northern region is somewhat different from the southern region due to the influence of manren and other ethnic minorities, but many details are similar. these are the embodiment of the model.
Because the building is affected by materials, functions, and costs, there are not many types of models used, which is very different from the software.
Because of this difference, there are many differences between the building management mode and the software management mode. If some people do not know this, they will have the idea of using "software blue-collar" in large quantities, he envy the low cost of "Migrant Workers" in the construction.
You need to know that software has a completely opposite responsibility and purpose to the architecture, that is, in modern society, there is no sense of change in the plan, the competition is fierce, and all the changes are unpredictable. We need to deal with all these changes, only software in information technology can help humans cope with various changes. this is exactly the opposite of architecture. architecture cannot help humans cope with changes. (Instead, it must be solid and honestly help people shelter from the wind and rain, it is impossible for humans to open computer programming software in the open air or under the leaves ).
Software must help humans cope with changes. This is the primary responsibility of software. Therefore, the purpose of the model in software is different from that in construction. The model in construction can be produced for many reasons: the idea of building masters, the innovation of materials, and so on. Once these models are created in buildings, another disadvantage is that they sometimes impede the development of the building because many people will not think about creation, the old model is used repeatedly for design, which hinders the development of buildings.
But in software, this is the opposite. The software model is generated because there are too many things to change. To reduce the burden on humans, we need to first solidify some unchanged things in the model, this allows humans to focus more on changing things, so a large number of repeated use patterns in software (I personally think such software is called framework software, such as J2EE ), not only does it not hinder the development of software, but rather promotes the development of software. because other people who use the software can focus more on applications that cannot use the model.
The role of models in buildings and software can be summarized as follows:
In software, pattern is a weapon that helps humans to fight for "change", but in software, it also needs to fight face-to-face with 'change': human thinking, especially creative analytical thinking, etc, these are the true soul of software. This kind of thinking can be said that as long as there is a practical need (if there is a new project) that requires a high frequency of occurrence, human creative or analytical thinking determines the quality and characteristics of software.
In the construction process, the model can constitute all the knowledge of the building. When there is a new requirement (such as a new project), the old model can generally be used, therefore, creation and analytical thinking for humans are not essential to every project, nor are they very important. The need for creative thinking is simply a icing on the cake (unless humans leave the Earth to live 〕.