Learn first C Language
Always think of , For a beginner ,IT The technological trend in the world is not to catch up with . I often see my own DDMM They throw away their textbooks , Go and buy something that is expensive, like C#, VB.Net Such a large part , It really hurts me . And a lot of friends who don't know what the pointer is are talking about C# There's no pointer inside, and so on, which makes me laugh .
C# It's like ASP equally ,“ All of a sudden, spring breeze comes , Thousands of trees and thousands of pear blossom ”, As a result, many school information schools have become “Web college ”. 96, 97 A lot of college students go to do Web 了 . Of course, I don't have any sense of discrimination against an industry . I just think that if they spend more time catching up with these fashionable technologies in basic courses, they can go further .
A few mistakes
Beginners are right C# In fact, the pursuit of fashion is only one of the several misunderstandings in the learning process . I will illustrate these phenomena with some practical examples , You can step by step to see if you belong to one or more of them ：
* Think that computer technology is equal to programming technology ：
Some people even don't have the idea , There is also such an impulse in the subconscious . What makes me wonder is , Many information college students have the same idea . Think computer major is programming major , Nothing to do with programming , Or less relevant courses. He doesn't care about it , Extreme students just don't have to bring them in books “ Programming ” He doesn't read two words .
In fact, programming is just a kind of labor with the lowest complexity in the application of computer technology , That's why IT The bottom of the industry is programmers （CODER）. Computer technology includes multimedia , computer network , Artificial intelligence , pattern recognition , Management information systems and so on . Programming is only the process of expressing algorithms in the process of theoretical research or engineering practice of these specific technologies .
Programmers don't necessarily have a good understanding of computer technology . And an interesting phenomenon is , Many master computer technology researchers don't understand programming . The hype on the Internet and the good working treatment in reality mystify the work of programming . In fact, every programmer knows , I have these things , It's not more difficult to learn than other majors , So naturally, it's not going to be high-end .
* The style of chewing words ：
I've seen a girl's 《 Principles of computer network 》 The teaching material , The girl, like a schoolboy, is full of bars on the book , Full of notes , Printing out must be thicker than the textbook . What I don't understand is , It's necessary to take notes on courses like computer network principles ？
Our examination oriented education does harm to many students , On top 《 principle 》 In this kind of course, many students like to learn 《 The principle of Marxism Leninism 》 Recite the memory word by word . This is the stupidest Act I've ever seen .
So-called 《 principle 》, It's about understanding why it does it , Study why, instead of how（ How to do ）. Extremely serious students recite the maximum length of Ethernet cable , The length of the data frame , The meaning of each field ,IP The format of the headlines and so on , But forget the principle of routing , Forget TCP/IP The purpose of protocol design is . In a word, many people spend a lot of time memorizing books, but they don't learn anything .
When they learn programming, the same is true of these students , They do remember C++ The details of grammar . It's over C++ Take a look after the tutorial 《Thinking in C++》（ It's really a good book ）,《Inside C++》,《C++ reference》,this C++, that C++……, Then there are all kinds of things on the Internet C++ Anecdotes about grammar , And then I find that I have forgotten C++ Some of the syntax , Finally, I went back and continued to mend ….
A younger martial brother told me ：“C++ It's too hard , Learn here and forget there , Learn inheritance and forget template .”
My answer is ：“ It's easy if you don't go to school ”.
I didn't teach him bad , Just tell him , dedicate oneself C++ It's as meaningless as Kong Jiji's showing off that there are several ways to write fennel . You don't need to be right at all C++ Grammar is too concerned , Just start programming , If you don't remember something, you'll find out immediately .
I have a conclusion that , In the actual development process, the understanding of program syntax is the most trivial knowledge . That's why I'm using it for my classmates Basic（ I've never learned it before ） When writing a small program , It took only half an hour to read grammar , And then I finished the program in half an hour , And an hour later, I completely forgot Basic All the keywords of .
* Regardless of the foundation , Blind pursuit of fashionable Technology ：
Finally, the topic is on . Most people want their things to run right away , Into money . This idea is reasonable for a programmer or project manager who has entered the professional field , and IT Technological progress is so fast , No follow-up is unemployment . But for beginners （ Especially the students who have plenty of time ）, The idea is puzzling .
The biggest capital of a beginner who has not entered the industry competition is that he has enough time to study the basic things , Study why instead of how. Fashionable technology is often easy to master , And it's getting easier to master , It's driven by business interests , In order to minimize the cost of software development .
But in IT This is the reality in the field , The easier to master , The more people learn , And the faster it's eliminated . Every time a new technology comes out , There are many beginners following up , Because these beginners lack the necessary foundation, they spend a lot of time in the follow-up process , And when he learned , This technology is dying out .
Basic courses , Like data structures , Operating system principles and so on, although you can't immediately implement a Linux（ That's why many people laugh at the futility of the theory course ）, But they can significantly reduce the slope of your learning curve as you learn new technologies . And for many key technologies （ example Win32 SDK Program design ,DDK Programming for ） Even indispensable .
A living example is me and a classmate of mine ：
In my freshman year, I couldn't find the power button , He's already able to write simple assemblers .
I spent all my sophomore year compiling , Computer architecture , data structure , Operating system principle and so on these courses study , And he began to learn HTML and VB, And catch up with ASP The trend of .
I began to learn when I was a junior Windows Operating system principle , Study SDK Programming , It's a long time , That's when I'm good enough VC Develop a modular application .
At one time, I was annoyed that my classmates' programs were running and I was still learning how to create dialog boxes , But when I graduated, I found out how right my choice was . The company I was negotiating with offered more than twice his salary .
Here's an inappropriate analogy ： Suppose learning VB Programming requires 4 Months , Learn basic courses and VC The programming needs to be 1 year . So if you learn VB, Let's learn the latter , Time will not be reduced , still 1 year , Conversely , If you learn the latter first , Let's learn VB, Maybe you just need to 1 I can learn very well in a month .
Several important basic courses
If you are a student , Or if you have enough time . I suggest you master the following knowledge carefully .
My suggestion is for those who hope that IT A beginner who has achieved technical achievements . I also listed some bibliographies , These books should also be available in bookstores . Frankly speaking , When I read other people's articles, my biggest wish is to ask the author to make a list of books .
Computer architecture and assembly language － Books about architecture are all over the place , And it's the same thing , It's a very good book 《80x86 Assembly language programming course 》（ tsinghua university press , Black cover , Yang Jiwen ）. You need to focus on learning 386 The programming of post protection mode . Otherwise, you will feel that you are reading the book of heaven when you are learning something at the bottom of the modern operating system .
The principle of computer operating system － Our development is always on a specific operating system , If not , There's only one possibility ： You're implementing an operating system of your own . in any case , Operating system principle is a must read . It's like when we make peripherals for a chip , It is necessary to understand the basic working sequence of the chip . There are also many books of this kind , I didn't find any book that was outstanding . I just feel that if I have time after reading these books, I should read them 《Inside Windows 2000》( Microsoft Press , I'm looking at E Text version of , The title of the book in Chinese must be Windows 2000 Technical inside story, etc ). About the need to learn it ,ZDNET It has been discussed in another article on .
Data structures and algorithms － This course can determine a person's programming level , It's a core course . I prefer the Tsinghua version of （ Zhu Zhanli , Liu Tianshi ）. Many people like to buy C++ Version of , But I don't think it's necessary .C++ The syntax of the algorithm makes the implementation of the algorithm much more complicated , And many teachers like to use the module to make the algorithm more complicated . I'm finished learning C I'll have a look at the book later C++ The version of the book is the best .
Software Engineering － This course is more and more important in the future , Although at the beginning, I was as confused as mazhe . My suggestion is to look at 《 Practical software engineering 》（ yellow , tsinghua ）. Don't spend too much time memorizing rules and regulations , Jump over if you can't understand . Every time I finish a software design task （ Whether it's practice or work ） Review later , Every time there is a harvest .
Windows Programming －《 Peking University press ,Petzold Writing 》 I suggest any attempt to design Windows People in the program are learning VC I learned it carefully before . And the one in front of me 《Inside Windows 2000》 It's better to read it at the back of this book . In this book , No, C++, No, GUI, No controls . There are ways to use the original C Language to complete Windows Programming . After learning it , You'll find out VC In fact, it's easy to learn . Never study before you finish reading this book VC, You'd better not touch . Many famous schools I know have even used it as teaching materials . We can see its importance .
in addition , If you have more time , You can also learn college English 、 Practice mathematical logic ！
I think the above courses are very important for me to learn
（ If you want to do Windows Programmer's words ）
There is such a simple way to choose other courses ： If you're a computer science major , Please learn all your basic professional courses well . If not , Please refer to the computer department curriculum .
If you find that you can't read a Book anymore , Please turn to the end of the book , Look at its references , Find them and learn them , Looking back at this book . If a book has a title with “ principle ” Two words , You must not remember the details of it , You should take at least one day 50 The speed of the page, master its essentials . Practice a theory or algorithm on a computer as much as possible .
Three provinces in Japan
I read too many books every day , It's easy to get lost . Be sure to think about what you have learned every night , What else do you need to master , What are you most interested in , Too long or not enough time on a book, etc .
At the same time, we should also think about the most likely applications in the future , This allows you not to catch up with the technology trend, but to lead the technology trend . meanwhile , Try to use the techniques and theories that have been mastered to make something new . Sticking to it can really make you a software “ Developers ” Not just one CODER.
Spend the most time on study
This is the last advice for beginners . Play every week CS perhaps CS To minimize the time of , It's best not to play with them .
meanwhile , If your ASP Technology has been able to bring money , Even if you have a company that asks you to work part-time , This proves that your talent can ensure that you can make better profits after studying hard , You should do something more complicated . Take a long view , This applies to anyone .
If you want to Teach Yourself Programming , Become a good programmer ,【 It's worth entering 】 Programming learning exchange Club ！
involves ：C/C++、windows Programming 、 Network programming 、QT Interface development 、Linux Programming 、 Game programming 、 Network security and so on ......
An active 、 High forcing lattice 、 High level programmer programming learning Hall ; Programming communication is just by-pass , Only the improvement of thinking is valuable ！