In the past few years, various new technology blowouts have emerged. In such an era in such an era, there is a feeling of exactly four majors. It is not easy to make a special specialist in a certain aspect, so that what should I do? This object of this article is to explore some essential things in the programming process, which has been helped with everyone's learning.
Personally, from programming this career, it has not changed since the birth of this profession. The description of the abstract logic of the concept is always the core thing in the programming process.
The program exists to solve a problem. The problem can be split into certain concepts and logical relationships. Structured programming and object-oriented programming is just different ways to express concepts and logic. The complexity of logical relationship in the program increases with the size of the program.
The essence of the program is not a variety of techniques. Even if you apply Effective C , more Effective C is applied to your C program, if there is no good organization for logical relationships, your program may not be bad. It may be high coupling low cohesive, which may not be expanded ---.
Above this text mentioned four concepts, they are: problems, concepts, logic and techniques.
Let me give an example to explain what these four concepts are representative.
Now suppose we need a temporary file name according to a known file name. If you enter Prog.dat, MyDir, Hello., OOPS.TMP, End.dat, then the corresponding output is
Prog.dat => prog.tmp
MyDir => mydir.tmp
Hello. => Hello.tmp
OOPS.TMP => OOPS.XXX
End.dat => end.tmp
(Here the example in Chapter 11 of The C Standard Library is used)
The programs do not do are there, and the program always solves some of the problems in the objective world. The problem here is to produce a corresponding temporary file name for a known file name.
There are two consequences involved in solving this problem: strings and extensions. The extension can be represented by a string.
One of the logic to solve this problem can be expressed in the following pseudo code:
IF (enter the file name without extension)
{
Generate a temporary file name with the input file name, '.' Number and "TMP";
}
Else
{
Get the extension of the input file name;
IF (extension is empty)
{
Use the input file name and "TMP" to generate a temporary file name;
}
Else IF (extension "TMP")
{
Replace "TMP" to "XXX";
}
Else
{
Replace the file name '.' The subsequent part of "TMP";
}
}
Of course, you can have other implementations, and this logic can always be independent of the language, operating system.
As for you is using a C standard library, or the corresponding class of the MFC's CString class or .NET or does not rely on a class library to express this logic.
Although it is a small example, I think that any program is completed: from the upper layer until the bottom drive, it will involve these four concepts.
In the four elements that must be programmed above, I personally think that logic and concept are more nature of things in programming, and the reason is that they determine the quality of the program in greater extent. Don't forget to evaluate several indicators of the software quality:
Heat mass, reusability, easy expansion, fault tolerance, etc.
These indicators are not you have to have a language or a frame. And to refine and refine the logic of the problem solved. Don't say that this is the responsibility of system analysis. Every part of the program has a problem to solve, how can each part of the quality of the program is responsible for system analysis.
In addition, when you want to use the function of the original software to do for hardware, this is a set of logical relationships. But the mainstream ideology at the moment does not seem to agree with this, and various recruitment advertisements can be a certification.
Below is an advertisement of a recruitment software engineer:
1. BS degree or above in computer science.2. At least 2 years of driver development experience.3. Experience in C, C , windows SDK / DDK or Linux system development.4. Familiar with computer networking or telecommunication 802.3, 802.11, TCP / IP Protocol Is A Plus.5. Familiar with Embedded System Design.6. Familiar with Bluetooth Is A Plus.
If the programming is cut with the sharpener, then
When a person is familiar with some language, a frame, an IDE, a certain development package, we can think that this person has a sharp firewood. But this is not good at chopping wood, but not good at chopping. If you want to do things, you must first sharpen them. But a lottery is not necessarily good. Therefore, the above advertisements are equivalent to people who want to find a person who will cut wood, but when people look more attention to him there is a sharp knife. (More sadly, we struggled us in the survival edge, even if you don't want to cater to this requirement)
It is not necessary to avoid overkill, it is necessary to emphasize a little, not to say that basic skills are not important, there is no understanding of language, framework, and IDE, which does not have useful procedures. However, when we are more than comparing different languages, frameworks, IDEs, don't forget that they don't forget the robustness, reusability, easy expansion, and fault tolerance, etc. Aspects have decisive roles. The decisive role is your way of definition of the concept and a description of the various complex logical relationships.
What is the language? Language is logical carrier and description tool. Most languages should be satisfied when you try to express logic relationships, or he has been eliminated. What is the framework? The frame is a package for logic and concepts. Framework puts a universal concept and logical encapsulation of a field, causing programmers without having to repeat their work. In fact, these general concepts in this field do not only have such a way of expression, that is, not only one logical expression. When you choose a frame, you will also mean that you choose one from N how to give up. No one frame is perfect, and then naturally inherits this imperfection. So use them, they are important, but it will not be important.
When I realized this, I found that although I have been programmed for a long time, the ability to logic expressions is not inch, because more than 90% of the time is put on the skill. Jeffrey Richter and Matt Pietrek are two skill masters in the Windows programming world. But I will dare to say that even if you put "Windows Core Programming", "Programming Server-Side Application for Micorsoft Windows 2000" also has the Under the hood column of MSDN magazine, you may still write a high quality program. These things are must be, but it is not all.