I always think that for a beginner, it is not a technology craze to catch up with, and there is no ability to catch up. I've often seen my ddmm throw away textbooks and sell expensive things like C # and vb.net, which makes me feel very sad. And many do not clear the pointer is what the BBS station Friends of the discussion in C # can not use pointers and so on I feel funny. C # as the ASP, "Suddenly like the night breeze, thousand tree million pear blossom open", the results of many schools of information school became a "Web college." Many college students are going to do the web. Of course I don't have any sense of discrimination against a certain industry. I just think that if they spend a little more time catching up with these funky technologies, they should be able to go farther on the basics.
Several misunderstandings
The beginner's catching up with the C # craze is only one of several misunderstandings that are often encountered in the course of learning. I will use some practical examples to illustrate these phenomena, you can step by step to see whether you belong to one or several of them:
Think computer technology equals programming technique:
Some people, even without the idea, have such impulses in the subconscious. To my surprise, many of the students at the school of Information also have this idea. Think that computer science is a programming major, unrelated to programming, or not very relevant courses he does not care, extreme students as long as the book does not have "programming" two words he would not look.
In fact, programming is only one of the most complicated labor in computer technology application, which is why the bottom of the IT industry is the programmer (coder). Computer technology includes multimedia, computer network, artificial intelligence, pattern recognition, management information system and so on. Programming is simply the process of expressing algorithms in the course of theoretical research or engineering practice in these specific technologies. Programmers do not necessarily have a high degree of knowledge of computer technology. And an interesting phenomenon is that many of the master computer technology researchers do not understand programming. The hype on the internet and the good working treatment in reality have mystification the labor of programming. In fact, every programmer in the heart understand that these things themselves, learning is not more difficult than other professions, so nature will not be high-end where to go.
The hole of the wording has already been style:
I have seen a girl's "computer Network Principles" textbook, the Girl like a pupil in the book is full of horizontal, notes do full, printed out must be thicker than the textbook. What I don't understand is that courses such as computer network principles need to take notes? Our exam-oriented education did harm a lot of students, in the "principles" of this kind of course, many students like the theory of Marxism-Leninism as verbatim memorization of memory. This is the stupidest Act I have ever seen. The so-called "principle" is the need to master why it does so, learning why, not how. Extremely serious students back Ethernet network cable maximum length, data frame length, the meaning of each field, IP header format and so on, but forget the principle of routing, forget the purpose of TCP/IP protocol design. In short, many people spend a lot of time on the backs of memorized but equal to nothing to learn.
These students also do this when learning to program, and they remember exactly the details of the C + + syntax. After reading the C + + tutorial, see "Thinking in C + +" (indeed a good book), "Inside C + +", "C + + reference", this C + +, that C + + ..., and then there are various online anecdotes about C + + syntax anecdotal, Then I found that I forgot some C + + grammar, and finally went back to the evil .... A younger brother said to me: "C + + is too difficult, learn to forget there, learned to inherit the template. "I replied:" It's easy for you not to learn. I didn't teach him, just to tell him that the syntax of a dead-keyed C + + is just as meaningless as the hole has been showing off anise beans in several ways. You do not need to be too concerned about the C + + syntax, hands-on programming is, there is no memory of the place on MSDN immediately fix. I have a conclusion that the actual development process of the understanding of program syntax is the most insignificant knowledge. This is why I used basic (I have never learned it before) to write a small program, only spent half an hour to read the grammar, and then half an hour to complete the program, and one hours later I completely forgot the basic all the keywords.
ignoring the basics, blindly chasing the fashion technology:
finally point to the topic up. Most people want their things to run up and turn into money right away. This idea is reasonable for a programmer or project manager who has already entered the field of work, and it is progressing so quickly that no follow-up is unemployment. But the idea is puzzling for beginners, especially in time-rich secondary school students. The biggest capital of a beginner who has not entered the competition for the industry is that he has enough time to sink down to learn basic things and learn why rather than how. Trendy technology is often easy to master, and increasingly easy to master, which is driven by business interests, in order to minimize the cost of software development. But the reality in the IT field is this, the easier it is to master things, the more people you learn, and the faster you get rid of them. Every new technology comes out, there are many beginners to follow up, these beginners because of the lack of the necessary foundation to make themselves in the process of the follow-up to spend a lot of time, and so he learned, this technology is quickly eliminated. Basic courses, such as data structures, operating system principles, and so on, while not enabling you to implement a Linux immediately (which is why many people scoff at the usefulness of theoretical lessons), they can significantly reduce the slope of your learning curve as you learn new technology. And for many key technologies (such as the design of the Win32 SDK program, DDK programming) is even indispensable.
A living example is me and a classmate of mine, in the big moment I can not find the boot button, he has already written some simple assembly procedures. I spent all my sophomore time on the lessons of compiling, computer architecture, data structure, operating system principles and so on, while he began to learn HTML and VB, and catch up with the trend of ASP. I began to learn the principles of Windows operating system, Learning SDK programming, time is long, then I can use the VC to develop a model-like application. At one point I was annoyed to learn how to create a dialog because my classmate's program had been able to run, but it was only after graduation that I found out what was right with my choice. The company I negotiated with was twice times more than his salary. Here is an inappropriate analogy: Assume that learning VB programming takes 4 months, learning basic courses and VC programming needs 1 years. So if you learn VB First, then to learn the latter, time will not be reduced, or 1 years, and conversely, if the first learning the latter, then to learn VB, maybe you only need 1 weeks to learn very skilled.
a few important basic courses
If you are a student, or if you have plenty of time. I suggest that you master the following knowledge carefully. My advice is for beginners who want to succeed in it technology. I have also listed some books that should be available in the bookstore. To be honest, my biggest wish in reading other people's articles was to have the author List a book.
College English-don't feel funny. I highly recommend this course because the ability to read without professional documentation is unthinkable. The translation of Chinese is often in the SE years, and now many publishers simply directly to the e-text printing up. The way to learn is to force yourself to look at the original textbook, beginning will not understand, with more natural proficiency. Eating bitter under the cruel is absolutely the quality of any industry needs.
Computer architecture and assembly language-the books on architecture are everywhere, and much the same, but the compilation has a very good book "80x86 Assembly Language Programming Tutorial" (Tsinghua University Press, black cover, Yang Ziwen). You need to focus on the design of protection mode after 386. Otherwise, you will learn some things from the bottom of the modern operating system when you think you are looking at the heavenly book.
Principle of computer operating system-our development is always done on a specific operating system, if not, there is only one possibility: you implement an operating system on your own. Anyway, the operating system principle is required to read. It's like when we're making peripherals for a chip, the basic work sequence of the chip is essential to understand. There are a lot of books in this category, and I don't see which book is very outstanding. Just think after reading these books if you have time to see "Inside Windows 2000" (Microsoft Press, I read the E-version, the Chinese title must be the Windows 2000 technology Insider). On the necessity of learning it, another article on ZDNet has been discussed.
Data structures and algorithms-this course can determine the level of a person's programming, is a core curriculum. My first choice is the Tsinghua version (nicknamed, Liu Tianxi). Many people like to buy the C + + version, but I don't think it is necessary. The syntax of C + + makes the algorithm implementation process more complicated, and many teachers like to use the module this thing to make the algorithm more complex. But after learning the C version of the book later to browse the C + + version of the book is the best.
Software Engineering-The course is more and more important to discover it later on, although it was just as unintelligible as watching Ma Zhe at first. My advice is to see "Practical Software Engineering" (Yellow, Tsinghua). Do not spend too much time to remember the rules, do not understand to jump over. Every time you have a software design task (whether it's a practice or a job), you'll have to review it all at once.
Windows Programming-"Peking University Press, Petzold" I recommend anyone who tries to design a Windows program to learn the VC carefully before learning it. And the previous "Inside Windows 2000" is best to be read in the back of this book. In this book, there is no C + +, no GUI, no controls. Some are how to use the original C language to complete the Windows programming. After learning it, you will find that VC is actually very easy to learn. Do not read this book before you learn VC ahead of time, you'd better not touch. I know that many universities have even used it as a teaching material. Can be seen as important.
The above courses I think are important lessons to be learned (if you want to be a Windows programmer).
For other courses There is such an easy way to choose: If you are a computer department, please learn all of your professional basic courses. If not, refer to the computer department's curriculum. If you find yourself unable to read a book, turn to the end of the book, look at its references, find them and learn them, and look back at the book. If the title of a book comes with a "principle" two words, you must not remember the details of it, you should be at least 50 pages a day at the speed of mastering its essentials. Practice a theory or algorithm on the computer as much as possible.
You can also read a lot of book reviews on Csdn. These reviews can help you decide what kind of book to read.
The three provinces of Japan and their own
Read too many books every day, easy to let people lose their way. Be sure to think about what you've learned every night, and what's relevant to what you need to know, what interests you most, how long it takes to spend too much time on a book, and so on. You should also think about the most likely applications in the future, so that you can not catch up with the technology trend, but lead the technology trend. At the same time, try to use the technology and theory now mastered to create something with a certain novelty. Insisting on doing so allows you to truly become a software "developer" rather than just a coder.
Spend most of your time on your studies
This is the last word of advice for beginners. The time to play CS or CS every week to the minimum, do not play them is the best. At the same time, if your ASP technology has been able to get money, or even a company to ask you a part-time, this proves that your talent can ensure that you work hard to achieve better returns, you should do more complex things. Look at the long-term, which is applicable to everyone.
Believe that you have been able to decide whether to learn C # or when to learn it.
[Turn] in the computer industry, you need to know