It is very puzzling title. Generally speaking, programmers are developers. That's right, for our users, we are developers, so we have endless magic, we can create another world, and they can only act on our land. However, if you think about this problem, we pointed out a bright road for others, and you are dancing in the applause of others.
As a programmer, we often do some framework users. If you want Java programmers to be unfamiliar for servlet, for a long time, I have always used it as an ordinary API. When I need it, what methods can be found. Recently, consider the design of the system structure, a simple lifecycle framework, which has a mechanism for life cycle event monitors. The so-called listening is just an implementation of the OBServer mode, that is, after a specific event, calling the listener informs them what happened. Letter flip the "Java and Mode", "The mode in servlet technology" attracted me at once. Although I have seen this chapter before, I just want to know what to know, and I have never considered these things like this. When I became a developer, I found that it is a world that is a cave. Some concepts in servlet technology have picked their hearts, delicate taste, which is a lot of communication with the framework of the heart: Various listner (servletContextAtRibuteListener, httpsessionListener, httpsessionattributeListener) is the listener I want to design. Mechanism, while Filter is interacting with the Interceptor mechanism of Interceptor mechanism (the flexibility of JBoss is reached by Interceptor), servlet corresponds to the core service in my design. When I think about the frame design, my flexibility is a very important factor, and the confirmation of servlet, let me know this familiar stranger. Good things are around, but I have a hometown. For the framework, its designer is the happiest person in this game. In addition to getting fun in the development process, it is also unimaginable for the fun of the rules of others.
The frame designer is also a rule that they have to comply with the rules of language designers when they get their own happiness. For a simple example, we know that the C language has increased in the C language, the point of the pointer, the pointer, and the reference. The C language has proved that its own omnipotent, value and pointer are enough to complete all the needs, and reference to unlike class, template (Template), the concept, which can provide another abstraction, then it What is the meaning? My answer is that it is just a sense of grammar. During the compiler implementation, the reference will be manifested in the form of a pointer, and when it is present in the code, it is not bad to the ordinary value. As a client, the code is not required to use the previous pointers as previous pointers, so that the code will be clean, and there will be no slight loss in efficiency. It is to look at the clean, Java simply dropped the pointer, and enriched the concept of reference (can be empty, rewrived, etc.). After the designer, after all fun, it is just a design result. In most cases, we can only confuse the fun in most cases, and cannot share the fun. Let's take an example, C has the concept of copy constructor, in fact, in Java, we will also use an object to construct another object, but Java people never mention this concept, why? The reason is the pass by value present in C . Although we will try to use Pass By Reference as much as possible in excellent programming, but pass by value is still inevitably, such as constructing a multiplication multiplication of categories, we can only construct a function in a function of pass by value. The temporary variable of the product is passed to the outside of the function. Pass by value must exist a copy constructor, we can't copy a piece of memory directly to the other side, because if the class definition is in the class (that is, the pointer), the code will have problems. About this problem, "Effective C " has a detailed explanation. Why do you have this problem in Java? Because of the retrieval in Java, it is a reference, and does not involve the process of copying construction. Can you be like Java in C ? Sorry, you can't. The previously said pass by value inevitable is an important reason that you can't pass local variables, because the local variables are destroyed after the function is executed, so we will understand the phenomenon of DANGLING. If is dynamic allocation? In the function, the NEW outgoing object is not a good behavior, so we have to pay some tongues in the document to explain whom this memory is released. Why didn't Java have such problems, because Java's memory is responsible by GC. Now we can see that GC will not be as simple as memory management, and its impact is very far.
The fun of developers and users can experience different. There are many people think that software has developed non-fun, and a very important reason is that they are just the rules of compliance, and the formula is not fatigue. Now many software developed books can tell you "how", but very few "why". For example, many source code analyzes, it will tell you how this code has completed the function. After this book is finished, we can take a simple example with the cat and painting, if you let us do, but often don't know how to start. Because we only see the results, there is no process that has not been displayed, and this process is often the essence. It seems that the rules are a very distant thing. In fact, as a developer of our software, we are not ruled by the developer. Attempting to stand in a rule, understanding some questions, can also learn the rules of rules, can also improve their understanding of rules, so that we can more exclude in this game.