You can refer to the following, the specific situation depends on the individual.
I think it should be based on your work needs or your development direction. Basically there are two major categories: C/C++ and Java. For example, if you want to do enterprise-level applications, you should learn Java and C#; if you want to do embedded work, you should learn C language well; in other cases, you can choose to learn C/C++ before you know what to do. . Learning one of these two categories will make it easier for you to learn other languages, including scripting languages ??and dynamic languages? Haha, I would like to give you a suggestion based on my own learning experience and situation, for reference only.
1. I started by learning C language (actually the course is C++). This is a public course in our school. I took the class seriously (although the teacher taught it very poorly, and After a period of time, I found that my basic grasp was better than hers, but of course my depth of understanding was not as good as hers). Therefore, I think that for people who have no basic knowledge at all, it is easier to get started by listening to others. The textbooks at that time were compiled by the school itself, and they were pretty bad.
Suggestion 1 (taking C/C++ as an example), for people who just want to get into programming (that is, people who have never been exposed to programming), it is best to listen to the lecture (it will probably take a lot of time to watch it yourself) Slow and painful), you can find videos or trainings, etc. Recommended introductory textbook for C language: Tan Haoqiang’s C language. The latest version is the third edition, but the second edition should also be enough (blue). Let me explain: I firmly disagree with reading K&R's "The C programming language" directly. This book is definitely not for beginners to understand. There is not much about grammar in it, and the grammar is all integrated into the program. But this book is very good and a book you must read after getting started.
Of course you can start directly from C++. The father of C++ strongly recommends starting directly from C++. Recommended introductory textbook for C++: Qian Neng's C++ (red, published by Tsinghua University). The first edition of this book is not ISO C++, but it is more classic. The author has now published the second edition, which seems not to be very good. The best introductory textbook abroad is said to be: "Acclerated C++". The authors are Koenig and Moo, who are very powerful. Their books also include "C Traps and Pitfalls" and "C++ Meditations". I have not read the introductory book "Acclerated C++". I think it is better to find a domestic book to read first. It is almost done. If you read the foreign classic books, you will find them very interesting, otherwise you may be very disappointed. blow. You should read the introductory book at least two or three times (to understand it thoroughly):). If it is C++, I recommend that you understand the following classes at least three to five times. To explain, you don’t need to read the C++ template part for now. If you are interested, after you have almost learned C++, I think you can combine templates, STL, and generic programming to learn. This is another huge workload. , and a lot of effort is required. Therefore, C++ is broad and profound.
Suggestion 2: In the learning process, simple algorithms should be combined, such as bubbling and small examples such as C language programs; further, you should do some larger projects, preferably Console program. Or if you have already started learning win32, MFC or Linux, you can also do some small projects based on the platform.
2. The first stage is the most difficult, and then you will know how to study. At this time, it is assumed that you already have a solid foundation in c++. Now you can and should choose the direction of development, whether to do enterprise-level applications, system development, embedded design or game development? I didn’t actually think about it that much at that time, because I didn’t study computers, so I just participated. Some computer-based exams are used as learning objectives. In fact, I already had a pretty good foundation in C++ language, but I had very little computer practice (I didn’t have a computer at that time), so I took the Provincial Computer Level 2, National Computer Level 3, and National Computer Level 4 exams, but failed to pass the computer exam. I was very depressed. In Level 2, I didn’t know how to enter the DOS interface to call up the questions. In Level 3, I compiled it very quickly and passed the test. However, the results came out and I failed. In Level 4, I failed. It was compiled at that time, maybe because my question was more difficult, it seemed that I used two cycles, but the broken machine couldn't bear it. Later, it was ruined by chaos (of course, mainly because there were too few planes). But I didn’t take the make-up exams during those exams. At Level 2 and Level 3, I felt that my level was far beyond the exam requirements. At Level 4, because I had already passed the senior programmer exam, I felt that it was unnecessary to take the computer exam again. (I took the high school and CET-4 exams in 2003).
Suggestion 3: Position your learning direction and learn basic computer knowledge. If you are still unsure about your study direction, or you are still in college as an undergraduate, then I think you should first learn the basic knowledge of computers. I think that basic computer courses must be learned and mastered intensively - firstly data structures, followed by operating systems, software engineering, and databases. These four courses will basically be used no matter which direction you want to pursue in the future.
Of course, if you have time, you should master other basic courses, such as discrete mathematics, composition principles, architecture, networks, compilation principles and even interdisciplinary ones. Direction is very important, because knowledge is actually unlimited, and a small field is enough for you to study for a long time. As an undergraduate, you may not have a sense of direction, but as a graduate student, you must know exactly what you want to do and where you want to develop. Don’t study blindly or blindly, otherwise you may seem to know everything in the end, but in fact you don’t know anything. Won't.
I have also studied Java for a while. Since this article is about introductory learning of programming languages, I will also briefly talk about it. Because I have a solid language foundation in C++, Java is relatively easy to learn. I first found a thin domestic textbook and read it quickly (I almost understood it, but I only read it once). In my free time, I cooperated with the Java video of teacher Zhang Xiaoxiang of Tsinghua University. In the future, I will actually start learning JAVA. I used the sixth Chinese edition of "core java" (I originally wanted to use the second edition of "Thinking in Java" translated by Hou Jie, but found that it was lost by a classmate) , it took me almost 20 days to understand all the knowledge in this book, including of course the simulation of programming style. The most important thing is that I can almost write down the program examples in the three chapters about GUI programming (of course, that Because I understand it, in fact, it becomes my knowledge), and I almost remember the API inside. (Note: GUI programming in Java is of little use. It is recommended that you skip it first. GUI is not Java’s strength. If you need it in the future, check the manual or memorize it.)
In fact, after learning C++, it is easier to learn Java, but it is not recommended to learn both. Their uses are different. You should be familiar with one of them, and more importantly, be familiar with the other. The professional knowledge and even platforms required in application fields, as well as the companies that use them, those with entrepreneurial plans should also consider their application fields, and the most important thing is to think about their potential application fields.
That’s it for the basic learning. The following learning is actually the advanced part. I won’t introduce it now because: 1. I haven’t learned it myself yet. Talking about it here will mislead others. . 2. There is a lot to learn about advanced things, there are many choices, and it requires a lot of tedious knowledge, which may not be explained clearly at once.