First, what we have to solve
Description, expression, namely functional structure, expression, expression, ie, functional organization business, expression, ultimate goal
Second, our description of the function, expression
At the beginning, people used instructions to encapsulate the circuit to express the function, and people use functions to encapsulate instructions to express the function. After the library encapsulates the function. Then now, what do we use to package the library to express the function? 【Question one】
Third, our description of the structure, expression
3.1, Programming Principles
Start, people use text to describe simple, correct, flexible, efficiently related software structures, such as "modular", "loose coupling and high cohesion", "abstract and hidden", "package change", etc. There is still an unreasonable structure so that people strengthen the programming language to support these PrinciPle and invented various paradigms.
3.2, programming paradigms
Summary in British Bank's book about "Symptom theory": Humans in the process of understanding and understanding the real world, three construction rules are generally used:
Distinguish objects and their properties, for example, distinguish between a tree and the size or spatial position. Distinguish the overall object and its components, for example, distinguishes a tree and branches. The formation and distinction between different object classes, for example, the formation and distinction between all trees and all stones
In terms of expression software, it has used structured programming, object-oriented programming, functional programming, generic programming, and various generated programming and other structured programming cured, the second rule of people's understanding: Objects and their components have complement the first and third rules, strengthen the second law, if the classification is correct, then it seems that the object-oriented expression ability is already enough, why also need functions, generics, What about AOP? We use a systematic way of thinking, then you can find that object-oriented is actually a "meta paradigm", and our daily object-oriented object is actually "object-oriented objects of business space", generic and function type " Object-oriented objects of algorithm, and AOP can be understood as "Object-oriented objects of structural space", now what is the most important object-oriented object we need? [Issue 2]
3.3, Object Oriented Principles, IDioms, And Patterns
Start, people use text to describe Principles in Oo Paradigm, such as "Lisko Replacement Principles", "Open Closed Principles", "Dependent Inverse Principle", etc. However, there is still an unreasonable structure so later, people invented Various IDioms and patients, to support these Principles but again, IDioms and patterns are still description using text, such as Effective XXX, GOF, POSA, PEAA, etc., there is still an unreasonable structure so later, people invented direct language Features to cure various IDioms and patterns, such as Java's "Synchronized" cured "Scoped Lock IDiom", "Monitor Object", etc., but cured is just a few simple idioms and patterns, then now, what do we use? Curing complex IDioms and patterns to eliminate unreasonable structures? [Question three]
Fourth, our description of business, expression
During the field of graphics, do communication areas, doing information management areas, but they are all the same or similar programming languages, and they are all-oriented, what should we use directly to describe business? [Question 4] Five, the time of post mode
Let's first look at [Issue 3], the mainstream thoughts are non-formal pattern language, or mode system, and think that every specific implementation of the model can have a slight change; this may be a pair but the same project, repeat The code segment is considered to be Bad Smell, and use iDIMS and Patterns to eliminate, then, in different project, similar or identical code segments are not Bad Smell in the field of software development? Let's see [Issue 3], various Framework made another answer, including .Net and J2EE, and the most impressive, Loki and Spring, it is based on various model development, and provides a pattern based on model The development platform LOKI uses template to programmatically creates a variety of Pattern's skeletons, based on LOKI programming, only need to write a single component of specific Pattern, and then pass it to the LOKI as parameters, it will get a variety of reasonable structures Spring. Program and configure the JAVA element, implement IOC mode and Interceptor mode (POSA2, AOP is an automated Interceptor mode implementation), based on IOC and AOP, Spring further cured factory mode, proxy mode, responsibilities chain mode, Observer mode, etc. If you decide to use Spring programming, you should try to make the infrastructure based on Spring, rather than just on topical use, but there are still many modes that don't have a popular Framework. It is not discovered. We need to understand the mode, and Based on the library-based solution leads us to get [Question 1], then what technology can make the mode to return to the scene, let us not feel their existence? Or actually everywhere, enter the post-mode era? [Problem five]
Six, solution space
Let's see [Issue 2], we will ultimately solve the problem, so there will be the most needed space called solution space, and it contains "description" and "implementation" two parts, and will have current PARADIGM What is the object-oriented ParaDigm of "Describe Space" so after the "implementation space" is then such aunt? [Question 6]
Seven, the final problem, the post-programming era
[Question 1] What do we use to encapsulate the library to express the function? [Issue 4] What should we use directly to describe the business? [Problem 5], what technology can make the mode to retreat, let us not feel their existence? Or actually everywhere, enter the post-mode era? [Question 6] What is the object-oriented paradigm of "Description Space"? Oh, is it DSL and LOP?