Effective articles: Programming Nature

zhaozj2021-02-08  238

Effective articles: Programming Nature

Raptor [Mental Studio] (Personal Column)

Http://eental.mentsu.com

First, Leezy_2000 brother's masterpiece "Programming Nature", followed by Johnnyxia brother "also talk about programming nature", which triggered a warm discussion on programming nature issues. At that time, I also talked a few words on QQ and Framesniper brother, I wanted to write such an effect article to make a lively, just because I didn't expect the BCBX article for so long, plus a Years, so I have been delayed, I have been overwork for two or three months, and I will retrieve the old words. I am afraid of the suspect of the horse.

The "Effective" dopes come from "Zhuangzi · Tianyun",: Therefore, Xi Shi is in the heart of Xi Shi, and the ugly people in it are beautiful, and they are also happy. The rich people have seen it, and they can't do it hard; the poor people see it, went to the wife. It knows that it is beautiful.

As I said to FS brothers: Although we have touched such a year in the software industry, the essence of software has no difference with the elephants in front of the blind. Everyone see is one of the small aspects, all of all the opinions are one-sided, and I am no exception. However, everyone will say from different angles that have been seen from different angles, maybe we will make us more comprehensive understanding of the nature of the software. This is why I know is one of the reasons why I still want it in "Effective" (another reason is of course because I am also "unwittingly").

Before studying "Programming Essential", of course, we must first study what is "essent", Jinshan phrase is three of the term "essential":

1, the constant form in things often

2, the fundamental properties of things

3, philosophical nouns. The basic characteristics of a certain type of thing is different from other things

First of all, the software should say that there is no specific body, as for philosophy, too deep, not my ever can say, so I want to study: What is "the fundamental nature of programming"?

Then let's take a look at "Programming" what is the concept? As the name suggests, the so-called "programming" is written programs, which is Coding, but this is just a narrow concept. The formal explanation of the word Program is: design, writing, test procedure. It is development, "development".

It is now clear that the so-called "programming nature" is "the fundamental nature of software development."

Leezy_2000 brother thinks programming has four major elements: problems, concepts, logic and techniques, and believes their essence: concept and logic.

Johnnyxia brother believes that the essence of programming is Thinking In Programming Language.

In addition, there are many other views in two articles, some are still very unique, such as ITPUNK brothers: "The essence of programming is the sale of labor for a day three meals." (Stealing labor "is less accurate All work is so, not programmed, replaced with "sell code" will be better), here is not one listed (BTW: I think the article on 9CBS, it is best to read all the comments, because this pair The best supplement).

My point is that they are all right, but this cannot be considered "Software development fundamental".

Let's first look at Leezy_2000 brother: First of all, this four major elements are very subjective, because everyone can have different points from different perspectives. For example, three elements: problem, solving the problem (the saying of Toomore brothers) and implementation - personal more inclined to this view. Or some people can separate five elements. Since it is not constant, talk about "fundamental nature"? In addition, the so-called "feature" "necessary elements" means that any of them is indispensable. If it is hard to say, the so-called "essent", then all parts are equally important. This "nature" must contain all the elements, why?

Leezy_2000 brother emphasizes that concepts and logic are software-based quality properties: robustness, reusability, easy expansion, and fault tolerance (in fact, this is robust). In fact, the quality attribute of software is far more than these, according to "Software Requirements" Chapter 11, can be divided into two categories: the most important attributes for users and the most important properties of developers. These two categories include: effectiveness, efficiency, flexibility, integrity, interoperability, reliability, robustness, availability (above aspects), maintainability, portability, reusability, Testability (above as developers). And for these properties, many also constrain each other, can only be based on the actual situation, as if the Leezy_2000 brother, as long as the "logic refines and refine" can be achieved.

As for the software, it can be replaced by hardware. However, it is just that the software contains logic, and it cannot prove that logic is the essence of software, and it is also just that this: The first philosophical saying is, they can't be a software "different from other The basic characteristics of the transaction. "

It is undeniable that now pays attention to tools and techniques. It is excessive. It is inert to techniques. It is not a good practice. At this point, I very supported Leezy_2000 brothers to Lin Rui's book, just as "Laozi · Fifty-seventh chapter" Said: "People Trojet, Sodi Tour". But I still support the view of cpptrier brother: I can't overkill (although Leezy_2000 brother mention this is not his purpose in writing, but in fact his article gets this effect), a quite part of the beginner is actually very blind, it is easy From one extreme to another extreme. Skills are still an essential elements. And from a certain point of view, even the like model is also a skill.

Johnnyxia brother and Cpptrier brother's point of view are more concluded, and it is very reasonable, Thinking In Programming Language is the essence of Coding (Taking into account the concept of integrity, this programming language should also include Platform, when developing Even if it is also used in C language, it is also some different APIs under Windows and Linux. This Thinking is also somewhat different. All Coding processes have this "fundamental nature", because Coding must be used in a certain platform A determined development language is carried out, "The language has grinded our thinking, and we also determined the scope of our thinking." Master is master.

However, for "software development", this "essent" is still not enough. Take the MDA that is now the old army, MDA proposes the concept of PIM (Platform Independnt Model) and PSM (Platform Specific Model) to divide the design process into two phases. Thinking In Programming Language is just the work of the PSM phase. As for the PIM phase, it is a higher level of abstraction. So TINKINGINGRAMMING LANGUAGE can not be said to be the fundamental nature of software development. " However, I am very agreeable with the idea of ​​Coding, and the MDA's PSM proves that this is the process of designing the PSM. It is actually the improvement of Coding. After the PSM code is automatically generated, the PSM has become the implementation phase of the software. Coding is also an important part of software development, despising the so-called project manager for coding is the most despised.

So what is "the fundamental nature of software development"? Let me talk about my opinion (play music), the fundamental nature of software development is: solve the problem through Coding! (Why is it fainted?)

Nance, this is indeed a nonsense. Because this is what everyone knows.

However, this is also a truth, and the truth is sometimes so simple.

First of all, there is software, there is Code, even MDA is perfectly realized, PSM can generate code directly, and can also think that PSM is a graphical code, as the programming language used in Industrial PLC ---- The ladder is a typical pattern of Code.

Secondly, the purpose of software is to solve problems, and software that cannot solve problems is the waste.

As mentioned earlier, we are all in the blind, but it doesn't mean that it does not exist. For software development issues, in terms of specific views, each person has various people's views, but still there is a general truth. This is the classic argument of Deng Gong. "No matter the black cat white cat, catch the mouse is a good cat." No matter what software theory or technology, as long as it is good for solving problems, it is a good stuff.

So whether it is a concept logic analysis, or Thinking in Programming Language, as long as you help your software development, you should adopt. From the perspective of solving the problem, the method used to solve the problem can be considered as a skill. Whether it is Coding skill or design mode, OO, UML ... For different problems, they will definitely have different focuses. No absolute importance, or should look at these elements with an equal point of view. It is too emphasized that some of these are too misleaded, and it will inevitably lead to the difficulties like Pbzjh brother. As the Toomore brother said: "There is a hoe in his hand, seeing what is nail." This person is still a lot, and some side emphasizes some aspects, and it will inevitably lead to it, pick up, but also another Hate. So I think it should still emphasize that their importance is the same, to be handled according to the actual situation, such as the toomore brother said (BTW: toomore brother is very classic): "I remember the Chinese chess program of the central sports station. Zhang Qiang Master said that the masters came to develop strategies based on the specific situation, and many low-handed chess always like to take chess into a few fixed shapes and regardless of the specific situation. "

Based on solving problems, the recruitment requirements for software companies are well understood because they want people who can solve specific problems for them, rather than some people who will only talk. We are often easy to make sorcere, it is easy to make somewhere (I also think that you don't understand anything, don't understand, because the business company and development software are completely different. As a company, especially these small software companies in China, most importantly develop software for users to solve problems with the fastest speed, no matter how strong your logic analytics, if there is no practical skill, it It is impossible to wait for you to learn slowly. As for the big company, such as Microsoft, it has enough resources to cultivate talents, so it does not pay attention to the skills. A simple approach: an ordinary dart, must have a person who must have a kung fu, as for the time like Duan Yu, even if he has a strong internal strength, the dart will not want Because you can't fight; but for the big martial artsmen, if you want to receive a document, you will generally choose a potential person, but don't care if he can't play. (BTW: Just like which darts can develop into a well-known martial arts martial art, I feel that domestic existing software companies are not too likely to develop into an international well-known software company in a limited time). If you must be in the process of software development Let's find a key point, I think it is "problem". Only after the problem is correctly defined, the following solutions and implementation make sense, if it is a definition of a problem, even if the correct solution and implementation is put forward, it is also a solution to the error problem. This may be why Karl.e.Weigers won the Jolt Award from a thin book "software demand" less than 200 pages.

I have been a arrogant person, so there is no pretending modestly, everyone has a brick, even throw it. ^ _ ^

[Mental Studio] Raptor

2004-2-15

转载请注明原文地址:https://www.9cbs.com/read-2649.html

New Post(0)