Today I see an articleArticleAnd never get angry with some of these ideas.
Http://coolshell.cn/articles/8088.html
= Reference start = attitude towards technology
My point is --To understand technology, you must understand the history and evolution of computer technology.(From this point of view, do I have a lot of pitfalls in "Programmer leveling strategy" and "c ++?"? .) Because,You need to move toward the trajectory of the ball, not the position of the ball. To know the trajectory of the ball, you need to know how it ran in history..
The development of technology should be rooted in history, not the future. Don't describe how beautiful the future of this technology will be with me (at the infoq archsummit conference, a person from Microsoft put node. JS is like fairy, and then gives a hello World). I admit that you can use some new technologies to implement a lot of fancy things. However, I believe that technology is a prerequisite, and only the prerequisite will be evergreen. Therefore, it is meaningless to say "XX (technology) is about to get angry". When it gets angry, there are more applications, and the scale is large, let's talk about it. Some people say: "It's okay if you don't learn C/C ++." My response is:If you don't even know the technical backbone, what else can you learn? These are the root, context, and ancestor of computer development. How can we not learn such things?
As I said in the "Software Development", the first focus is on business functions. In this focus, programming is required. The second focus is on business performance, in this important field, the basic technology is very useful, such as: File Management of the operating system, process scheduling, memory management, layer-7 network model, TCP/UDP protocol, language usage, compilation, class library implementation, data structure,AlgorithmThe third key is business intelligence. In this field, you will find that many things are academic, such as search algorithms, recommendation algorithms, prediction, and statistics, machine learning, image recognition, distributed architecture and algorithms, etc. You need to read many academic papers from computer science.
I think the real masters all come from knowledge-intensive academic schools. What they are more powerful is that they can apply the basic knowledge of those theories to their current business. But unfortunately,Today's education in China is not very good at linking the theoretical knowledge of those schools with practical business problems.For example, if we talk about the data structure of hash tables or binary trees, if our school can join the actual business problems when talking about this knowledge, the results will be very good, such: design a query system for IP addresses and geographic locations, a distributed nosql database, or a retrieval application for geographic locations. When learning the operating system, if the teacher can take the students to do a mobile phone or embedded operating system, or study the source code of UNIX System V or Linux, it will be more interesting. When learning network knowledge, we can take students to focus on the characteristics of Ethernet and TCP/IP, and optimize them, it would be better if we could be a pub/sub message system on the network or a Web server like nginx. It would be even more interesting to lead students to practice a plotting tool or a game engine while learning graphics.
In short, the gap between our education and reality is too serious, and the teaching and teaching are both technically and practically backward and out of touch, it is a failure to teach students theoretical knowledge through actual business or technical issues.
= End of reference =
First, I fully agree with the statement at the beginning of the article:
You need to move toward the ball's trajectory, not toward the ball's position.
Second, I wonder why the author is confused about not learning "C/C ++"
Third, persuade the author not to deny our education.
It has been more than half a century since the development of computers !!!
Who else want to learn computer from machine code today? You need to know the mythical level of the yearProgramMembers all start from there.
Who else is willing to start learning from compilation today?
As the author said, we mustMove toward the ball's trajectory, not toward the ball's position
And machine code, assembly, C/C ++, they are a ball, we can not avoid the ball, we must know the ball.
But we don't have to move toward the ball.
Must an algorithm master understand C/C ++? The fact is that all the algorithm experts understand C/C ++. But starting from the logic proof, C/C ++ is not an algorithm master.
In the next 20 years, does the author still insist on learning C/C ++?
C/C ++ will become the same as the machine code one day in the morning and will not become the first choice for beginners.
I think this day has come.
If you don't even know the technical backbone, what else can you learn? These are the root, context, and ancestor of computer development. How can we not learn such things?
We recommend that you change "Learning" to "Understanding" and "know" here ".
The Chinese started to learn a lot about programming, just in the era of C ++. Therefore, a large number of experts are trained through C/C ++. C/C ++ was the mainstream universalProgramming Language.
Go to the business system, go to the driver, website CGI, database connection, and everything is done with C/C ++. It's a rare day.
Currently, the mainstream language is Java/. net.
If a newbie is eager to become a master program, he is told to start from C/C ++.
Then, at least half a year will be spent learning the basic process control syntax.
It takes at least one year to study MFC, ALT, and so on.
What level of programmer is there in three years? What kind of positions can I apply?
In addition to being a bottom-layer C/C ++ code engineer, training for over three months is required no matter which language platform the job is on.
In 1995, if a college graduate is dedicated to learning machine code instead of C/C ++, what can he do today? In 100, how many of his people can become Daniel?
The learning of software development should begin with the current mainstream encoding languages, rather than the previous generation mainstream languages.
In this way, you can quickly understand the current software development trend:
1. The difference between the new language and the old one is the improvement and improvement of the new language.
2. The design concept, purpose, and motivation of the new language
3. The development phase of the entire software industry, the difficulties faced, and attempts to solve the difficulties.
A concentrated person who has only learned C/C ++ for three years and has some knowledge about history. However, he only knows about mainstream languages, its C ++ accomplishments are not sufficient for the current C ++ job requirements.
What kind of work can I find for a person who has been focused on Java or C # for only three years and has some knowledge of history?
The computer education in universities is indeed out of reality.
However, why does a professor have rich practical experience? Is he a system architect of a company?
Or a chief programmer?
In fact, the teaching in many schools has already been linked to reality, but there are too many realities. How many rational understandings do students who are not familiar with basic concepts?
In fact, many people are really "Mastering" graphs and trees. They must be at work.
Because, if you have never used a tree in your project after graduation, you will never understand the application of the tree for the rest of your life.
The so-called "grasp" means to understand when to use the tree, when to use it, and how to abstract the application of the tree from the business needs. This is definitely not what most people can understand in the university stage.
It's like everyone has learned Fu Liye's transformation. However, if we only use a few examples at the time, it will never allow full students to easily identify their application scenarios during coding.
If you can not doze off, you have already given the teacher a face.
The three major steps of Software Development mentioned by the author are actually a rule or even an iron law.
Program
Basic Technology
Business Intelligence
Can any step be reversed? It seems that it cannot.
Therefore, for beginners, the first goal is to learn programming.
At this time, learning the most popular language will make you eligible to enter the next level smoothly.