Please see the picture below: Machine code -> Advanced language implementation -> Structure Diagram -> Natural Language We have long realized that the advanced language is the abstraction of the machine language, the structure is the abstraction of advanced languages, and The natural language is an abstraction of the structural map. This is very well understood, it is also in line with our thinking habits. But you will look, reverse thinking, there will be more amazing discovery. They are not our "do" a software standard. Process? It can be said that they are all the same thing, but the abstract level is different. The higher the abstraction level, the more basic abstract thinking elements you need (they are usually included in a rich semantic) However, the specific implementation details involved, the less. In a word, our software activities are mostly abstract from high abstraction, this evolution process is an objective law. With the improvement of software engineering, from this shore to the other side directly It has become very unreasonable to leap (existed before, but think about the soft work level at the time). With high to low abstract levels, you need to gradually look down on the stairs. However The process is dangerous and it is worth research. What is the most important thing in this process, I think it is consistent, at least is the consistency of the concept. Why? Live an example: The customer said that I want an information system This is a natural language expression that sounds, because it is too abstract and lets developers don't work. So developers will continue to communicate with customers, is the customer's concept to convey to developers without omissions (if Customers are fortunate to have a clear concept). Unfortunately, this process is not guaranteed. When the customer's conceptual part (or all) has conveyed to the developer, he began to design, the purpose is only one, realize that concept The output of the design will be used as the encoded input. We can still guarantee the consistency of this process. It can be seen that there is no guarantee in the system. If there is any slight inconsistency in the middle, it must be repeated A lot of work, it seems to have been from the 20th floor to the 2nd floor, suddenly found that I have forgotten to wear shoes, I have to go back to the 20th floor as sympathetic. Suppose we have successfully arrived at the 2nd floor (worth celebrating), the rest of the work Will be much easier, advanced language to machine code consistency has been well guaranteed, this achievement makes the productivity of the software has increased much. However, this has no substantive help on our current software development, because: in current Among the entire software development cycle, this process only accounts for only a small amount of energy and time (I think it is close to zero), without a senior language programmer pays attention to the anti-assembly result of his code. Similar to development tools, etc. Factors. So, the problem is still very serious. The crisis inevitably exists, pay attention to them does not mean that I am a pessimist. And all the natural science that cannot be fully controlled by human beings can be fully studied and utilized. Software engineering must Objective law Contradictions always exist because those consistency cannot be 100% satisfaction (people with people's communication cannot be seamless unless they are constantly correcting, using reasonable methodology to make it close to ideals The state is constantly progressing. In this regard, the Chinese have another backward, and the university is teaching the software engineering, the business community is paranoid for new technologies and the neglect of design, management, how can we fundamentally improve our extreme Low software level. And engaged in theoretical research, to treat researchers in the software industry with scientific attitude, where is it?