The Myth of Human Moon-the current situation of software development
Huang March 5, 2005
The author of the Moon Myth, Frederick P. Brooks Jr, said, "All software activities include fundamental tasks-creating complex conceptual structures that form abstract software entities, secondary tasks-expressing these abstract entities in a programming language, mapping them into machine language within space and time constraints." ”
That's what I understand. Software development consists of two parts: Analysis Modeling (fundamental Task) and programming (secondary Task).
The book has been published for more than more than 20 years, and the authors ' conclusion that there is no silver bullet (ie no good development method) for software assertions is still in existence. Because the innovation of the Software domain development method is still focused on the solution of the secondary task. But there is still no effective way to solve the fundamental task. Why did you say that? The term "concept" is mentioned in the fundamental task.
So what is the concept. For example, a table is a concept. So can you give the table a precise definition? We will find it very difficult at this time. Like a table with legs? If you have legs, then a few legs call the table.
Clearly, the precise definition exists only in mathematics, and the mathematical concepts are basically well-defined, such as squares.
The concepts in our lives are generally called natural concepts. There are three methods to describe the concept: Classical method, probability method and specimen method. It is generally believed that the classical theory is proposed by Aristotle, mainly by defining a series of fully necessary attributes to define the concept. Classical theory is very good at describing mathematical concepts, but it is not suitable for solving natural concepts, such as the table mentioned above. At present, the definition of concept in software development mainly uses this method. Despite the limitations that have just been mentioned. Probability method is to distinguish probability by the probability that a thing satisfies a series of characteristics. The specimen method is to differentiate concepts by specifying multiple specimens. The concept of birds, for example, makes a lot of bird specimens.
Obviously, probabilistic methods and specimen methods are extremely difficult to describe in computer language, and of course there are many companies and individuals around the world doing this research. But progress has been limited. Because we know that the computer is ultimately a logical machine, it is very difficult to deal with vague things. So I think this breakthrough depends on the human brain research, that is, the development of cognitive science.
As you can imagine, the misery of software developers is still endless.