1, What is software development?
Software development process is the use of various computer languages to the real world people are concerned about the process of mapping to the computer world;
Now the mathematical theory is based on computer by the computer's pedigree, the famous Turing proposed in 1937, Turing machine model. Then less than a decade, computer was born (1945). (Ainiyake)
We all know that it was one of the main tasks for the missile trajectory calculations. At that time software development (software development if you can call it) and now very different. In order to count a problem, there must first complete the personnel and other kinds of operations, Math as building block components take up as if for a title, then these parts should be unbundled, according to the new requirements to re-build, low efficiency (and now more than).
Modern computer architecture and the actual calculation model from von. Neumann thought. In 1946 he and his colleagues found that the Ainiyake defects, issued a report, presented a program into memory, sequential thinking so that when considered only when a Xinti taking to change the computer The program's "soft" approach.
British scientists Wilks von achieved. Neumann's ideas, leading development of the "Yikesake" technically 姣斿焹灏间簹鍏?came a big leap.
Therefore, it is often called the von computer. Neumann computer.
History of software development from the official start.
Early programmers used machine language to program operations; with the compiler technologies, people have designed many higher-level language; the language out of the complicated details of the machine language, closer to people's natural language, growing in popularity years. According to statistics, at least over the world thousands of high-level language, but from the perspective of computability, computing power they are equivalent to Turing machines. Have shown that a computer language, as long as Chuliao assignment also involves the sequential statements, conditional statements and loops, it's computing power that is equivalent to Turing machines. Here of course, exclude other technical factors, such as program length, number of variables and data accuracy.
Because the idea is the Turing machine is transformed into one step by step 鎸?rule execution machinery Qiujie process whereby various Jisuan Ji Ye Buguodushi Mouzhongxingshi language language, so the process of Shizhi Shang Jiu Shi Kai Fa software programmers are the problem Yu of the objective world formal process. Programmers to first create the problem model (formal), and then to the appropriate computer language expression, and finally entered into the computer in the calculation.
2 from PO (process-oriented) to OO (object oriented)
From the discussion of the previous section we know:
Software development process is the use of various computer languages to people concerned about the real world (problem domain) is mapped to the process of the computer world; the following diagram:
鈫?real-world problem domain modeling (using a modeling) 鈫?Programming (using a programming language) 鈫?Computer World Executive Solution
Before talking about OO, let us review the history of high-level language.
Some of the earliest high-level language was born in 1945, is the German translation of his Chu Z-4 Computer Design Plan Calcul, than the first electronic computer was early months; in the first computer to achieve a high-level language is U.S. Younifake company in 1952 successfully developed Short Code; and truly promote the use of which is still popular in the United States first high-level language of computer scientists Backus design, and in 1956 IBM's first computer FORTRAN language implementation.
Early high-level language is mainly used in scientific and engineering computing, FORTRAN and their representative works ALGOL60. Computer after entering the field of business and administration, appeared to facilitate the business community such as COBOL and RPG language. In recent years, such language and database technology, graphical interface technology (Visual Programming), object-oriented thinking and RAD (Rapid Application Devolopment) the concept of combining to form a group of more convenient use of the so-called fourth-generation language (4GL), such as Powerbuilder, Delphi, VB, etc..
The former group used a large-scale scientific and engineering calculations are relatively more basic language, and therefore more flexible and wider range of applications. In FORTRAN, BASIC (learning), the since the 70s, the module features more obvious, easy to use, reliability of the PASCAL meteoric rise, widespread in the world. But 80 years into the future, its status has gradually replaced a more practical C language. Now, C language has the equivalent status of a "high-level assembly language" of the.
Late 80's, began to surface of object-oriented languages, C + + using the C language with a large team of programmers, in one fell swoop established its dominance of object-oriented language. OO thinking to the formal rule of the entire software development industry. C + +, made popular even 80 years from the U.S. military began to vigorously support the Ada language and the promotion will not end in failure.
After 90 years, the computer is turned upside down the world changes, the original single platform for in WEB, "The Network Is The Computer", the new language only if the OO's, Visual, and even if the WEB-based. INTERNET Java language, by the east wind, turned out to night popular in the world, change the speed is breathtaking.
These changes, the surface is a different programming tools to changes in the city of the first King of the flag, but behind it is reflected in a more profound changes in epistemological, that is what your point of view to understand the world? In the PO, the programmers of the problem domain, get a PO model, in which common words are variables, functions, procedures, etc.;
PO: the real world 鈫?Flow (variable, function) 鈫?PO language 鈫?Executive Solution
In OO, the OO programmers to get a first model, in which common words are classes, objects, methods, news, etc.;
OO: the real world 鈫?class diagram (object, method) 鈫?OO language 鈫?Executive Solution
We can see that:
PO closer to the physical realization of the computer world; OO is more consistent in people's understanding of habit;
If the software crisis is rooted in the expression of people understanding the process of (constantly repeated, gradually deepening), and von. Neumann realization of the computer (the order of execution) there is a huge gap between, then from the PO to mean that this gap OO gradually reduced;
OO thinking and as a programming language for software development of the entire process - from analysis and design to coding - provides a complete solution. OO is a software development called milestone achieved great success, people were all applauded!
A reference to OO, we will think of C + +, smalltalk, simula, associate Use Case, ROSE, Mr Jacboson and Rational firms, but few people will Wittgenstein (Wittgenstein). However, it is the legendary philosopher, not only for the first time clearly expressed OO thinking, further referred to what happened afterwards OO, and the final limit lies.
In the current review of this fast-changing times and really thinking about the sage's thought, might enable us to more clearly, more clearly a long road ahead.
3 Wittgenstein (Wittgenstein) and OO
Wittgenstein is the history of philosophy in this century and even the human one of the greatest philosophers. Just before his death in 1922 he published a book - "Tractatus" (Tractatus Logico-Philosophicus). In the book, he described a world view, or a kind of understanding of the world's point of view, this view, 67 years later, and finally precipitated by a philosophy to the technical level up, as the computer industry darling, this is the "OO", Object-Oriented, object-oriented or object-oriented (RTHK term).
Let us touch on something far away, (which may touch on really well the point), to talk about this man, talk about his "Tractatus," a book of OO thinking.
Interested in Western philosophy friends all know the history of philosophy in the West twice a profound shift occurred. The first was from the "ontology" to "epistemology" in turn; The other was from the "epistemological" to the "Methodology" turn.
Ancient Greek and Roman era philosophy, known as the "ontology" of the times, when philosophers are most concerned about is the origin of the world, namely what the world is composed? What is the nature of the world? Explore the world and so these fundamental issues. From Thales's "All Things are water" to the "four elements" that "atomism", to Plato's "absolute idea", are on this issue put forward their own views.
The impact of the Christian faith with power (Jewish tradition) and the secular forces of the political despotism (Roman tradition), the concept of God to make conclusive answer to this question, dissent will have life-threatening, that is so Bruno was burned to death. Of course, Christianity has made a number of outstanding philosophers, who inherited the Greek rational tradition, a mixture of biblical ideas, construct a magnificent Christian philosophy. Their representatives are Augustine and Thomas. Aquinas. Aquinas has proposed five ways to prove the existence of God (the Greek rational tradition).
After the Middle Ages, with the rise of the Renaissance, people began to get out from under the shadow of God, and found its own role, that human value. To Descartes "I think therefore I am" marked the beginning of philosophy by "ontology" to "epistemology" change; this period of philosophy concerned with understanding human problems specific to their focus on the different schools often鍒嗕负鈥滃敮鐞嗚鈥濆拰鈥滅粡楠岃鈥濓紝鍓嶈?娉ㄩ噸鐞嗚婕旂粠锛屼互绗涘崱灏旂瓑浜轰负浠ｈ〃锛涘悗鑰呭垯娉ㄩ噸鎰熻鍜岀粡楠岋紝浠ｈ〃浜虹墿鏄礇鍏嬶紝鍩规牴绛夈?
銆??绉戝鍏跺疄灏辨槸铻嶅悎浜嗏?鍞悊璁衡?鍜屸?缁忛獙璁衡?鐨勯暱澶勮?鍙戝睍澹ぇ鐨勩? 鏃㈠己璋冭瘯楠屽拰瑙傚療锛岃繍鐢ㄥ綊绾虫硶锛屼篃閲嶈鍒╃敤鏁板鍜岄?杈戜粠褰掔撼鐨勭粨鏋滃嚭鍙戯紝鏋勯?鐞嗚妗嗘灦锛屾紨缁庡嚭鏂扮殑绉戝瀹氱悊銆?br />
銆??鍒颁簡搴峰痉浠ュ悗锛屽挨鍏舵槸鏈笘绾垵锛屽摬瀛︾殑鏍稿績闂寮?鐢扁?璁よ瘑璁衡?杞悜鈥滄柟娉曡鈥濓紝鍝插鍏冲績鐨勬牳蹇冮棶棰樻槸璁よ瘑濡備綍瀹炵幇鐨勯棶棰樸?杩欎竴鏃舵湡锛屽摬瀛﹀浠紑濮嬭璇嗗埌璇█瀵逛簬浜虹殑璁よ瘑鐨勭壒娈婂湴浣嶏紝浠栦滑绾风悍浠庣爺绌惰瑷?嚭鍙戞潵鐮旂┒鍝插銆?鍏朵腑鐢氳嚦鏈変簺浜烘瀬绔殑璁や负浠ュ墠鐨勬墍鏈夊摬瀛﹂棶棰樹笉杩囨槸璇█鐨勯棶棰樿?宸层? 銆??鍝插鐨勮繖娆¤浆鍚戞湁鏃朵篃琚О涓烘槸鈥滆瑷?殑杞悜鈥?锛屾柊鐨勫摬瀛﹁鐐硅鍐犱互鈥滆瑷?摬瀛︹?鎴栤?鍒嗘瀽鍝插鈥濈殑鍚嶇О銆?br />
銆??鈥滆瑷?摬瀛︹? 鐨勫彂灞曠粡鍘嗕簡涓や釜闃舵锛屾垨鑰呰鍙互琚繘涓?鍒嗕负涓や釜瀛︽淳锛氣?閫昏緫鍒嗘瀽娲锯?鍜屸?鏃ュ父璇█娲锯?銆傜淮鐗硅窡鏂潶鐨勫紩浜虹灘鐩箣澶勫湪浜庯細浠栧湪鍓嶆湡鎸侀?杈戝垎鏋愮殑瑙傜偣锛屽悗鏈熷垯鎸佹棩甯歌瑷?殑瑙傜偣銆?br />
銆??澶х害10骞寸殑鏃堕棿锛岀淮鐗硅窡鏂潶鑴辩浜嗗摬瀛︾晫銆?浣嗗悗鏉ワ紝浠栧鑷繁鍦ㄣ?閫昏緫鍝插璁恒?涓〃杩扮殑鍝插鐨勫彲闈犳?浜х敓浜嗘繁娣辩殑鎬?枒銆備簬鏄紝鍦?929骞翠粬閲嶆柊杩斿洖鍓戞ˉ锛屾垚涓轰笁涓?闄㈢殑鑰佸笀銆?939 骞翠粬寰楀埌浜嗘暀鎺堢殑鑱岀О銆備絾鍦ㄧ浜屾涓栫晫澶ф垬鏈熼棿锛屼粬鍗翠互涓?悕鍖荤敓鐨勮韩浠戒负鍐涢槦鏈嶅姟銆?947骞寸淮鐗硅窡鏂潶浠庡墤妗ラ?浼戯紝瀹氬眳浜庣埍灏斿叞銆傝繖涓?椂鏈熶粬瀵瑰摬瀛︾殑鎬濊?褰㈡垚浜嗕粬鍚庢湡鐨勫摬瀛︽?鎯炽?1949骞翠粬鍘讳簡瓒熺編鍥斤紝褰撳勾鍥炴潵鏃朵笉骞歌韩鎮ｇ檶鐥囷紝1951骞村湪鐗涙触涓庝笘闀胯緸銆?br />
銆??姝诲悗锛屼粬鍚庢湡鐨勬?鑰冭鏁寸悊鍑虹増锛屻?鍝插鐮旂┒銆?Philosophical Investigations)锛屻?鍏充簬纭畾鎬с?(On Certainty) 绛夌瓑锛屽紑鍒涗簡璇█鍝插鐮旂┒鐨勫彟涓?釜鏂扮殑鏂瑰悜銆?br />
4. OO after that?
First, the history of software engineering perspective
1969 NATO meeting, the "software crisis" has become the focus of attention. To meet the challenges of software crisis, people have made unremitting efforts. These efforts generally along the two directions simultaneously. First, from a management point of view, hope for software engineering development process. The most famous results in this regard is the proposal we are familiar with the "waterfall" life cycle model. It is the end of the 60s "software crisis" after the first life cycle model. As follows.
Analysis 鈫?design 鈫?code 鈫?Test 鈫?Maintenance
Later, it was for the model, we propose a rapid prototyping, spiral model, fountain models of the "waterfall" life cycle model is added. Now, they practice in software development is widely used.
These efforts, but also to create awareness of the standards and the development of the document between the developer and the means of communication between users of the importance. Some important document format standards are finalized, including variables, symbols, naming rules and norms of the original code format.
It is worth mentioning that in the developer between the developer and the means of communication between users in this regard, since the emergence of Internet provides a new means of communication, but also created a new Internet-based development way, that is OSS (Open Source Software). The representative works of Linux (operating system), Apeche (web server), Sendmail (Mail server) and so on. OSS is a very promising way of developing the tide of development by the Internet, it will inevitably produce the entire software development model is difficult to gauge the impact. The recent special issue of IEEE Software Engineering will feature plays out a special issue. January 1999 will be held on the Linux / OSS in the international seminar. Various computer companies have to react, Microsoft is aware of the tremendous threat from the OSS, presented at the end of August an internal confidential document, specifically put forward their own coping strategies, can be called Rain Comes from Wind . All interested parties had an interest.
Software engineering, the second direction of development, focusing on software development and analysis, design research methods. This is the first important result of the rage in the 70 years of structured development methods, that PO (process-oriented method of development or structure of words). PO is the people using computers in the world to express the real world, the pursuit of the process, then, modular, encapsulated, and more abstract results. People use computers to map real world, the lowest level of implementation is simply generated by digital circuit technology high and low signal. Expressed in mathematical language is a binary string such as 010101000010111. This is a very low level of abstraction, from a natural language, most people can not understand. One block of these binary string definition proposed byte, ASCII, so the concept of a higher level of abstraction, so that corresponds to the natural language of a letter. On the basis of re-using some form of language, abstract variables, expressions, operators, statements and so on. At this level, generally trained programmers have been less pain can be compared to the software developed. Next abstract arises PO. In the PO, the people's attention is how to function and process to achieve real-world simulation, will be mapped to the computer's world. OO this is the increasing level of abstraction of the natural process of development results, it uses the concept of classes and objects, the variable and the variable operation functions and procedures package together, with this higher level of abstraction to express the objective the world. Typically, an object contains properties and methods, which corresponds to natural language in a meaningful term to describe the real world an object (physical entity) or concepts (abstract entities). This level of abstraction as shown below:
Level of abstraction in the computer world
* XO (X?-Oriented) the highest level of abstraction
* OO (object, class)
* PO (procedures, functions, variables)
* Variables, operators, expressions, statements
* Bytes (4, 8, 16, 32, 64)
* Binary string 0101011110001 lowest level of abstraction
From the graph, and the above discussion we know that the history of software engineering is that people continue to pursue higher level of abstraction, encapsulation and modularity of history. OO certainly not the end of history. Although not precisely what followed by OO, at least we can infer, OO after the XO, will inevitably be a higher level of abstraction than the OO. It must rely on the core concepts and inclusive than the concept of the object. As the object above and inclusive of the function and variable.
Second, from Wittgenstein, "Tractatus," a book of thought view
Before we know, Wittgenstein "Tractatus," a book put forward the following ideas:
* The world can be divided into facts (The world divides into facts.)
* The fact is that the atomic facts (atomic facts) composition.
* An atomic fact is that more than one object (objects) combination.
* Object is a simple (basic) The Object is simple.
* Objects forming the basis of the world.
Namely: the fact that the world --- ---- ---- atomic fact objects a whole to local, from the abstract to the concrete understanding of the chain. At this level, the object as a basic module, constitute the entire understanding of the cornerstone of the building. Objects through the association between the complex constitute the entire world. This view is also the cornerstone of object-oriented theory. The period of our analysis of the world through computer draw, OO, after development, will produce a higher level of abstraction than the OO concepts for programming. According to Wittgenstein's ideas can be very naturally to the conclusion: this concept is the fact (FACT). Object-oriented after the fact-oriented, OO followed FO (Fact-Oriented). So, what is a fact (fact)? Let us again remind ourselves of Wittgenstein's point of view.
First of all, the world is the sum of all the facts. The world can be broken down as a fact. Any fact or is true or not true. (That fact should return a Boolean variable, or TRUE, or FALSE)
Secondly, the fact that those who really are the atomic facts (atomic facts) composition.
Atomic facts and the relationship between simple objects like this: an atomic fact is that more than one object (object) combinations. In atomic facts, objects connected in some way identified. Atomic facts in a way to interconnect the fact that the structure of atoms. In other words, the fact is the structure of atoms, this structure is Wittgenstein as a real-world model (form).
Here, Wittgenstein put forward several important concepts: the facts (fact), atomic facts (atomic fact) and mode (form).
If the above reasoning is correct, we will come to the conclusion: object-oriented (OO) is for after the fact (FO), fact-oriented (FO) analysis, design and programming, we will mainly focus on facts (fact), atomic facts (atomic fact) and mode (form) of these basic concepts to organize our software development activities. In recognition of the hierarchy of the world, these concepts than the object (object) and class (class) a higher level of abstraction.
5. The final limit
If, after OO FO, then of course we have to ask, FO after what? Later on Which? Is there a final limit? If so, what limits? This is a very difficult question, but let us continue to think and see what results can be, even though it may be very stupid and naive.
We know that software is essentially a computer programming language for the people to bridge the world of objective perception to the world map on the computer to solve the people in the world of objective perception problem to be solved.杩欓噷鐗垫秹涓変釜涓昏鐨勮寖鐣达細 銆??瀹㈣鎰熺煡涓栫晫--------璁＄畻鏈虹紪绋嬭瑷?---------璁＄畻鏈轰笘鐣?br />
(1) Computer World
In the computer world, it is conceivable that the unit area can be integrated on a chip always have a maximum number of transistors, Moore's Law to fail sooner or later. In addition, most computers are now used by Feng. Neumann architecture also needs to be a breakthrough. (Such as parallel computing research)
(2) computer programming language
Now the computer programming language, is some type of formal language. To solve a problem, we must first construct algorithms for it. That is, there is no algorithm for the problem, we are helpless. Such issues are as is "incalculable." Their solution can not by the Turing machine to produce. This is a limit we face.
With the algorithm as a problem, is not what will be resolved? Unfortunately, the answer is no. For NP (non polynomial) problems, especially NP complete problem, despite the algorithm, we are still unable to solve in polynomial time. The famous "Hamiltonian circuit problem" and the "traveling salesman problem" are all these problems.瀹冧滑鐨勫叡鍚岀壒寰佹槸锛屽綋闂鐨勮妯★紙鎴栧鏉傚害锛夌嚎褰㈠鍔犳椂锛岃В鍐宠闂鎵?鍖栫殑鏃堕棿灏嗗憟鎸囨暟涓婂崌锛屼互鑷充簬瀹冧滑灏界鐞嗚涓婃槸鍙眰瑙ｇ殑锛屼絾瀹為檯涓婂嵈鏄笉鍙兘鐨勩?鍥犱负瑕佽姳璐圭殑鏃堕棿鍙兘宸茬粡瓒呰繃浜嗗畤瀹欑殑瀵垮懡銆傝繖涔熸槸鎴戜滑闈复鐨勪竴涓瀬闄愩?
銆??涔熷氨鏄锛屽閮ㄤ笘鐣屼腑瀛樺湪涓?簺鎴戜滑鍙互鎰熺煡鍗存棤娉曠敤璇█鏉ヨ〃杈剧殑涓滆タ銆?銆??浠栨帴鐫?锛?br />銆??鈥滃浜庨偅浜涗笉鍙█璇寸殑锛屽繀椤讳繚鎸佹矇榛樸?鈥濓紙Whereof one cannot speak锛宼hereof one must be silent锛?br />
6. 鏋侀檺涔嬪鐨勭┖闂?br />
Zack Rusin interviewed the beauty and magic of KDE
Wang Donglin Beijing scholar CHAIRMAN
Access Control Report
MPG To DivX
AVI to MKV
IDS weaknesses and Limitations (2)
CGI teaching: CGI environment variables used
Bridge towards 3G - CDMA200-1X
DivX to 3GP
How To Manage Software Development And Progress In
Photoshop Candy Cane Gourmet Series
PS texture Text Series: Python Pattern word