1, what is software development?
The process of software development is the process of mapping people's real world to computer world using various computer languages;
The current computer theory of computer is based on the computer's open nasal ancestor, the famous Tuling of Tu Le in 1937. In less than ten years, the electronic computer was born (1945). (Egnac)
We all know that one of its main tasks is the calculation of missile ballistic trajectory. The software development (if it can be called software development) is different from now. In order to calculate a question, some people who have completed various types of operations such as completing and subtraction and eliminating, if they are changed, and if they change the questions, they will decompose these components to rebuild according to new requirements. Low (with now).
The Architecture and the Real Calculation Model of Modern Electronic Computer From Feng. Nogan 's Thoughts. In 1946, he and his colleagues discovered the shortcomings of Egnach, published a report, put forward the procedure to put in memory, sequential implementation, so that when a new question is required to change the computer The program's "soft" method.
The British scientist Wilkes realized von. Noyman's thoughts, leaders developed "Aksak", which is technically better than Ezik.
Therefore, the current computer is often referred to as von. Nogan computer.
The history of software development has also officially begun.
Early programmers use machine language to program operations; with the emergence of compilation technology, people have designed many higher-level languages; these languages get rid of the cumbersome details of machine language, closer to people's natural language, quickly spread Come. According to statistics, there are thousands of high-level languages around the world, but from a computable perspective, their computational power is equivalent to the map. It has been proven that a computer language, as long as it is except for assigning statements, it also includes sequential statements, conditional statements, and loop statements, which are equivalent to the map forever. Here, it is of course to exclude the effects of other technical factors, such as program length, number of variables, data accuracy, etc.
Since the idea of the map is to convert the problem into a step-by-step mechanical solution process, various computer languages are just some form language, so the process of software development is essentially the programmer's domain problem Formal process. The programmers first build a model (formal), and then use the computer language to properly express, and finally enter the computer.
2 from the PO (oriented) to oo (object-oriented)
From the discussion of the previous section, we know:
The process of software development is the process of maping people's real world (problem domain) to the computer world in various computer languages; as shown below:
Real world issues → Establish model (with certain modeling ideas) → Programming implementation (with some kind of programming language) → Computer World Execution Solution
Before talking about OO, let's take a look at the history of the senior language.
The earliest senior language was born in 1945, it was a German Chu translated Plan Calcul designed for his Z-4 computer, which is more than a month earlier than the first electronic computer; the first advanced language implemented on the electronic computer. It is the SHORT code developed in the United States in 1952; it is really popular, and the first high-level language that is still popular is in the US computer scientist Bacos design, and first in IBM in 1956 FORTRAN language implemented on a computer.
Early high-level language is mainly used in science and engineering calculations, representing Fortran and Algol60. After the computer enters the business and administrative management, Cobol and RPG have the language used to facilitate business use. In recent years, such language and database technology, graphical interface technology (visual programming), the concept of object-oriented ideas and RAD (Rapid Application Devolopment) combined, forming a more convenient use of the so-called fourth-generation language (4GL) Such as PowerBuilder, Delphi, VB, etc. The previous types of large languages applied to science and engineering are relatively found, and they are also more flexible, and the scope of application is wider. After Fortran, Basic (learning), since the 1970s, the module features more obvious, easy to use, strong PASCAL heroic protrusions, wide popular worldwide. However, after the 1980s, its status gradually replaced more practical C language. By now, the status of the C language is equivalent to a "advanced assembly language".
In the late 1980s, the object-oriented language has begun to surface, C has established a boss of object-oriented language with a huge programmer team using C language. Thus OO's thoughts are officially ruled throughout the software development world. The popularity of C even makes the US military began to support the ADA language that has been supported by the US military has not been promoted to the dead belly.
After the 1990s, the computer world has changed the change in the sky. The original stand-alone platform allows the Web, "Network is computer", and the new language is not only OO, Visual, and is based on Web. Java language borrows Internet's Dongfeng, arrogant, red all over the world, the change is fast.
These changes, the surface is different programming tools in the city head to change the king flag, but the back of its reflection is a more profound understanding, that is, what kind of views do you use to meet this world? In Po, the programmer analyzes the problem of the problem, which is a model of PO, which is common words are variables, functions, processes, etc .;
PO: Reality World → Flow Diagram (Variable, Function) → PO Language → Perform Solution
In OO, the programmers get an OO model, where common words are classes, objects, methods, messages, etc .;
OO: Reality World → Class Diagram (Object, Method) → OO Language → Perform Solution
We can see that:
Po is closer to the physical implementation of the computer world; OO is more in line with people's understanding habits;
If the root of the software crisis is that there is a huge gap between people's understanding of the process (constant repeated, gradually deepening) and von. Norman computer's implementation process (order execution), then from PO to OO means this divide In gradual reduction;
OO as a thought and programming language, the entire process developed for software - from analysis to Coding - provides a complete solution. OO is the great achievement of the milestone obtained by software development, people are all applauded!
As mentioned in OO, we will associate C , Smalltalk, Simula, Lenovo, USE Case, Rose, Mr Jacboson, and Rational, but few people will mention Wittgenstein. However, it is this philosopher full of legendary colors, not only the first time clearly expresses OO's thoughts, and further refers to the things after OO, and its last limits.
Currently, this unpredictable era is revoking and conscientiously thinking about the thoughts of this first, maybe we will make us more awake, and more clearly in front of the road.
3 Wittgenstein and OO
Witthertan is one of the greatest philosophers in the history of human philosophy. He was published in 1922 in 1922 - "Tractatus Logico-Philosophicus). In the book, he explained a worldview, or a view of the world, this point of view, today, today, finally by depositing a philosophical thinking to the technical level, becoming a computer industry Par, this is "OO", Object-Oriented, object-oriented, or object-oriented (Hong Kong and Taiwan).
Let us go far, (maybe it is really far away), let's talk about this person, talk about the OO thinking in the book "Logic Philosophy".
Friends interested in Western philosophy know that there have been two deep steering in the history of Western philosophy. Once, it is the steering of "this is" to "epistemology"; the other is the steering of "Epistemology" to "Methodology".
The Western philosophy of the ancient Greek Roman era, known as "intrinsicism", then the philosopher is most concerned about the world's origin, that is, what is the meaning of the world? What is the essence of the world? Waiting for these fundamental issues in the world. From Tayles' "all things all the water" to "four elements", "atomism", to the "absolute concept" of the Braetu, all of them put forward their own insights.
Christianity has a strong answer to this issue with the concept of faith (Judai tradition) and secular political autocracy (Rome tradition), and the idea will have a danger of life, and Bruno is therefore burned. Of course, Christian also has a few outstanding philosophers. They inherited Greece's rational tradition, mixed the thoughts of the Bible, and constructed a grand Christian philosophical system. Their represents the characters are Augustine and Thomas. Akna. Akanan has proposed five ways to prove the presence of God (Greek rational tradition).
After the medieval, with the rise of the Renaissance Movement, people began to go out of the shadow of God and found their role, namely human value. Sign from Cartesol's "I think I am" as a sign, and philosophy begins to change from "this is" to "epistemology"; this period is concerned about people's understanding, the specific genre is different from each other. Divided into "理 理" and "experience", the former pays attention to theory interpretation, represented by Cartesol et al; the latter pays attention to feelings and experience, representing the characters are Locke, Bacon, etc.
The science is actually blending with the strengths of "the theory" and "experience". It emphasizes both test and observation, uses the induction method, also pays attention to the use of mathematics and logic from the summary of the results, the theoretical framework, and the new scientific and theorem.
After Kant, especially in the beginning of this century, the core issue of philosophy begins to turn to "Methodology", and the core problem of philosophy is to recognize how to achieve. During this period, philosophers began to realize the particular status of the language for people, and they have developed philosophy from the study language. Among them, some people are extremely considered that all philosophical problems before the previous language is just a language problem. The steering of philosophy is sometimes referred to as "the turn to the language", the new philosophical point of view is crowned with the name of "Language Philosophy" or "Analysis Philosophy".
The development of "Language Philosophy" has experienced two stages, or can be further divided into two schools: "Logic Analysis" and "Daily Language". The attacked perspective of Witt and Stan is that he holds a logic analysis in the previous period, and it holds a daily language in its future.
Summarize the main points discussed above, now we know:
The development of Western philosophy has experienced two changes. Once, it is a topography; once is a language steering; the first steering to make the philosophy of understanding to epistemology, from the study of the existence of super test to research Main body and main passenger relationship; the second steering has become the study of the relationship between the main object into the exchange of communication and conveying problems between the main body. Transferring the research from the subject from the concepts and ideas of the language (statement and its significance); the representatives of these two steering are designer and the Witt and Stay. Here is a small biography of Wittgenstein.
Vitt Tan was born in Vienna in 1889. The education of the youth first made him a aviation professional engineering research, 1908-1911, Manchester. At the age of 23, he went to the famous Cambridge University to learn philosophy and become a student of Russell. It is said that Vit Tittein is confused in the future development direction of his future, engineering or philosophy? One night, he took some manuscripts (something such as heteroatics) to find Russell, to read it, and then judge whether he is a philosophical material. If not, you will prepare the roll to leave away. Russell picked up his manuscript, only looked at the first sentence, and said strongly to him, if you don't learn philosophy, it is a pity. Vitthertan is determined to join the determination of philosophy.
During the First World War (1914-1918), Wittel He attended the Austrian army and later captured. It was in this time that he completed its own famous, "Tractatus Logico-Philosophicus). The book published in English in 1922 is the only copy of his presence published.
In this book, Wittertan expounds his philosophical point of "logical atom" and becoming one of the representatives of the school. Other famous "logical primisists" include Russell, Huaihert, Freg, etc. The book's publishing created a new direction of philosophical research.
After completing this book, Vitthe thought that he had solved all philosophical problems, so he really gave up the philosophy, first made a gardener, and later made a primary teacher. It should be noted that his family is very rich, but he took the initiative to give up the power of huge heritage, voluntarily a simple life.
About 10 years, Witthe is separated from the philosophical circles. But later, he had a deep doubt about the reliability of the philosophy of "Logic Philosophy". So, in 1929 he returned to the Cambridge and became the teacher of the Sany College. In 1939 he got a professor's title. But during the Second World War, he served as an army with a doctor. In 1947, Weethestan retired from Cambridge, settled in Ireland. During this period, he formed a philosophical thinking in his later stage. In 1949, he went to the United States. When he came back, he was unfortunately suffering from cancer, in 1951, in Oxford and the World.
After death, his later thinking was organized, "Philosophical Investigations)," On Certaint ", etc., and created another new direction of language philosophical research.
I am mainly introduced to the status of Wittertan in the history of philosophy, and it is quite legendary. If you are, please forgive me.
Below we enter the theme, talk about "logical philosophy" and the OO thinking.
4. What is it after OO?
First, from the history of software engineering
After the 1969 NATO meeting, the "software crisis" became the focus of people's attention. In order to meet the challenge of the software crisis, people have made unremitting efforts. These efforts are mostly carried out simultaneously along both directions. First, from the perspective of management, I hope to implement the engineering of the software development process. The most famous results in this regard are the "waterfall" life cycle model of everyone who is familiar with. It is the first lifecycle model that appears after the "Software Crisis" in the late 1960s. As follows. Analysis → Design → Code → Test → Maintenance
Later, some people put forward the rapid prototyping method, spiral model, fountain model, etc. to supplement the "waterfall" lifecycle model. Now they are widely adopted in the practice of software development.
The efforts in this regard also enable people to recognize the standards of the documentation and the development of the developer and the user's communication. Standards for some important document formats are determined, including variables, symbol naming rules, and normative format of the original code.
It is worth mentioning that in terms of the communication between developers, developers and users, because the Internet has provided a new communication method, there is also a new new development method based on Internet. That is, OSS (Open Source Software). Its representative as Linux (operating system), Apeche (Web Server), Sendmail (Mail Server), etc. OSS is a very promising development method, with an internet development tide, it will inevitably produce difficult to estimate over software development models. The recent IEEE Software Engineering Special Issue will be a secondary special issue. An international seminar on Linux / OSS will also be held in January 1999. All computer companies have responded to this, and Microsoft also realized the huge threats from OSS. At the end of August, Microsoft put forward an internal confidential document, specializing in their own response strategies, it can be said that the mountain rain is full of wind. Interesteders should keep this attention.
The Second Direction of Software Engineering Development, focusing on the study of analyzing and designing in software development. The first important results in this regard are the structured development methods that are popular in the 1970s, that is, the PO (the process of development or structural methods). Po is the result of pursuing a process, modular, package, and higher abstract when using the computer world to express the real world. When people use a computer to map the real world, the minimum level of the minimum layer is nothing more than the high level and low level signal generated by digital circuit technology. The language of mathematics is represented by a binary string like 010101000010111. Such abstract hierarchies are extremely low, away from natural language, is unacified to ordinary people. People put these binary strings, propose bytes, and a higher abstraction of the ASCII code, so that corresponds to a letter from the natural language. This is based on some form of language, abstract variables, expressions, operations, statements, etc. At this level, generally trained programmers can be more difficult to develop. The next step is PO. In PO, people pay attention to how to use functions and processes to realize simulations of the real world and map them into the computer world. OO is the natural development result of this abstract hierarchy, which uses the concepts of classes and objects, and encapsulates the variables and the variables to the variables together, and use this higher level abstraction to express objective. world. Typically, an object contains some properties and methods, which corresponds to a meaningful noun in the natural language, describes an object (physical entity) or concept (abstract entity) in the real world. This abstraction level is shown below:
Abstract level in the computer world
* XO (x? -Oriented) The highest abstract level * oo (object, class) * PO (process, function, variable) * variable, calculation, expression, statement * byte (4, 8, 16, 32-bit, 64-bit) * Two-Bunch 0101011110001 The lowest abstract level discussed from above and above, we know that the development history of software engineering is to continue to pursue higher abstractions, packages and modular history. O is of course not the end of history. Although what is not an accurate to get OO, we can at least know that OO's XO will inevitably be higher than the OO level. The core concept it relies on will inevitably be higher than the concept of objects. As the object is higher than and inclusive, the function is equipped with the variable.
Second, from Vitgenstein in the "Logic Philosophy" book
As we all we already know that Vitgenstein puts forward the following ideas in the book "Logic Philosophy":
* The world can be broken down into facts (the world Divides INTO FACTS.) * The fact is composed of atomic facts. * An atom fact is a combination of multiple objects (Objects). * Object is simple (basic) The Object is Simple. * Objects form the foundation of the world.
That is: the world - the fact ---- Atom's fact ---- Objects such a chain from the whole to the part, from abstraction to specific awareness. In this level, the object as the most basic module constitutes the cornerstone of the entire acquaintance. The object consists of the entire world by complex associations with each other. This view is also the cornerstone of object-oriented theory. In the last paragraph, through the analysis of the computer world, OO will have to produce abstract concepts than the OO higher level of abstraction. According to Vitgenstein's ideas, it can be naturally concluded: this concept is fact (FACT). That is, it is an object-oriented fact that OO is fo (Fact-Oriented). So what is the fact (FACT)? Let us revisit Titgenstein again.
First, the world is the sum of all facts. The world can be broken down into fact. Any fact or true, or is not true. (Ie The relationship between atomic facts and simple objects is this: an atom fact is a combination of multiple objects (OBJECT). In the atomic fact, the subject is connected in a certain way. The object of the object is connected to each other in the atom facts is the structure of atomic facts. That is, the atom's fact is structured, which is considered to be a real world mode (FORM) by Vitgenstein.
Here, Vitgenstein proposes several important concepts: facts (fact), atomic factments (ATOMIC FACT) and Modes.
If we have the above reasoning process, we will draw a conclusion: object-oriented (OO) is a fact (FO), in fact (FO) analysis, design, and programming, we will focus on facts (Fact) Atomic Fact and Mode (FORM) These basic concepts organize our software development activities. These concepts are abstract than objects (Object) and class (Class) higher.
5. Last limit
After Oo, if we are, then we must ask, what is the fo? Where is it? Is there a last limit? If so, what is the limit? This is a very difficult problem, but let us continue to think about it, see what the result can be, although it may be very stupid and childish.
We know that the essence of the software is that people are mapped in computer programming languages to the computer world to solve problems in the world to solve in the world. Here is the three main categories: objective perceived world -------- Computer programming language ---------- Computer World (1) Computer World
In the computer world, it is conceivable that the number of transistors can be integrated on a single chip in the unit area will always have a maximum, and the Moore Law is going to fail. In addition, the von used by most computers now. Nocman structure needs to be broken. (Such as parallel computing research)
(2) Computer programming language
The current computer programming language is a certain type of form. To solve a problem, we must first construct an algorithm for it. In other words, we are helpless without algorithms. Such problems are becoming "uncapable". They cannot be generated by the map spirit. This is a limit we face.
Then a problem has an algorithm, is it possible to solve it? Unfortunately, the answer is not. For those NP (non-polynomial) issues, especially NP complete problems, despite the existence algorithms, we are still unable to solve in a polynomial time. The famous "Hamilton Line Issues" and "Travel Sales" are all such problems. Their common feature is that when the size of the problem (or complexity) is increased, the time to solve this problem will rise in an index, so that although it is in theory, it is actually impossible. . Because the time to spend may already exceed the life of the universe. This is also a limit we face.
It also needs to be pointed out that the current computer language is one of the form language, and it must also have all the limitations of all of the form language itself. In the history of mathematics, there have been three crises, and the third crisis is a paradox crisis that Russell's "佯佯". In order to solve this crisis, Hilbert put forward a grand form of formulation, attempted to make mathematics one for all the security of uncomfortable security. However, 1931 Austrian 25-year-old genius mathematics logico, Germany, proposed an epoch-era, smashed the formal dream of Hilbert. The Gödel Theorem showed us that the coordinated statement of the axiom system itself will become such a proposition that cannot be decided to "cannot decide" after being encoded into an appropriate arithmetic proposition. Imagine an expression is neither true or false, it's true and false to a form system (computer). So in this regard, Gödel Theorem is another limit we face.
(3) Objective sense of world
Now let us assume that the software engineering has developed an ideal realm. One day we realize the natural language programming, is it good luck? In other words, can the natural language describe well, express objective sense of world? Vitgenstein has pointed out in "Logical Philosophy".
* The meaning of the world must exist in the world; * Obviously, ethics cannot be expressed. Ethics is beyond reality; * There is actually something that is not expressed; this shows its existence; it is mysterious. (See section 6 "Logic Philosophy"
In other words, there are some things we can do in the world that we can't express them in words. He went to say: "For those who can't say, they must be silent." (Whereof One Cannot Speak, Thereof One Must Be Silent)
This sentence is our last limit.
After discussing the three major problems we will face, we finally discuss the impact of people's subjective world on software and software development.
6. Space outside the limit
The world can be divided into subjective imagination world and objective can be sensible, or it is the world and world. Among them, the subjective imagination world is a computer from which the computer has never been involved. This is our personal private space, full of wealthy fantasy and undulating emotions. It has great jump and uncertainties, often in intuition, imagination, and its own activities. They are usually not expressed in language. Although this world is so complicated, confusing, it is difficult to touches, but it is part of our later. We are like this.
It is such a person to work in software development.
How is the software developed? How much is the extent to which the objective world is not broken? Or is this mapping process has been distorted or doped? This subjective imagination of software developers, their joy, depression, fondress, fear, hope, etc., how do you affect the quality of software development?
Is people to use a computer to copy the entire world? Or is it to replicate people itself? Is people playing the role of God? I really don't know how to answer, even if I don't even feel at all.
If you still have enough patience to read here, please think about it, I hope they will not make your headache. :)
Finally, I will quote what I have discovered from the Internet as an end language:
"Self-righteous legislators (human) have committed a big mistake, thinking that they can define the entire software development process. They neither understand their results. The academic tries, and then refuse. The business community has no way. Large software developers have explored huge sums to make code, but they want to play the role of God, but they still put themselves are a public servant of human beings. Everyone is staring at myself in the mirror. The computer is laughing on the side. "