In fact, I am a junior year and I have just been in Sany for three months. I am not qualified to work here. Instead, I am talking about a letter to my freshman, it is better to give an overview and summary of my studies over the past two years. By talking about experiences and lessons, we can give new people some reference.
I am studying at an unknown University, a Science and Technology Department, and a third-class primary school. before I went to college, I had never been familiar with programming. When I was a child, I had a wonderful experience having to go online with Windows 98. Then I ran to a friend's house to play games online, with this hot blood and my parents' choice of me to accommodate my attitude, I took the computer road and decided to learn computer well, because it was amazing and attractive to me. (^-^)
Before I went to college, I liked thinking and mathematics. during the two months after the college entrance examination, I had the honor to meet a senior student. I didn't mean much when I stayed at home. I asked him what to learn from the computer (in fact, he was one year older than me ), he told me to learn the C language, which is almost the entry language selected by all schools, so I started to access programming -------> tan haoqiang, C programming language .. I also asked him for a compiler, VC ++ 6.0. I am reading C at home every day. I am very serious and don't think it is too difficult. If I have any problems, I will write the code in the book into VC and compile and run it, it is also often a headache for a few hours because a semicolon is missing .. (after all, I still don't know how to debug this kind of thing at that time ). so I read this book a little bit. in fact, there are several reasons why I can read this book: 1. this writing is very basic, easy to understand, and has no errors. 2. take it seriously if you are interested. the only thing you don't understand is pointer. my understanding at that time was that the pointer was an address, and I didn't know what the address was .. this is the case (a is B and B is C, but I don't know what B is C, but the teacher won't ask, as long as you can tell that A is B .... Σ (° △° |) percentile )︴)
As a result, I came to my university. The professional courses in my freshman year were discrete mathematics and C language. C language sounds relaxed, but it is quite uncomfortable to have a few mathematics courses, I have advanced mathematics, discrete mathematics, and linear algebra. Every time I take these lessons, I feel dizzy. (I will not talk about it here ).. it is a lie to anyone who has just gone to college to learn discrete things. my freshman year has only seen the concept of mathematics inherited from high school mathematics. It seems that I have never thought about why there are so many mathematics. Discrete Mathematics is a core course of computer science, it is not easy to understand and understand. facts have proved that they are neither clear nor clear.
The university time is always busy for the first year's children. They often need to rush to class early and to hold community meetings after class, there will also be some activities coming out of thin air, or you will often receive a shocking text message from a meeting in the office at ** in the afternoon.
However, during my freshman year, I had the honor to join the ACM community. The senior students said that doing a good job in algorithms will become amazing in the future .... will be XXX .. in my mind, the algorithm was suddenly several times as tall as it was, so we had training every week. It was good to have questions and questions done together. however, it is not a long time, And I gradually discovered that it seems that there are not so many study masters engaged in algorithms, and even none of them are there, and there are not so many people who love algorithms, in addition, it seems that the people who bring us are not very good at algorithms. I am also a little disappointed. Gradually, it seems that fewer and fewer people are asking questions and no one will be at the end .. I occasionally come back to check my questions on HDU, which is more than 200. however, ACM is indeed rewarding, as if the C language is a tool, and the algorithm is to let you do what you want through this tool!
In my freshman year, my major courses are data structures and C ++. What is data structures? They are actually data structures, but no one has ever written applications or has never done software, I have never understood this simple nature. not to mention C ++, object-oriented is oop. I am sure that I don't know what OOP is for a teacher who teaches such a course. In her and many students, C ++ only has an object for C, or is it just an object-based language (really not object-oriented design and development)
I learned such things in my freshman year, but I am really uncomfortable. After a year of computer learning, I can only write a computer in the black box and write an input (a + B) prescribed by the teacher ), I often laugh at myself. Although I work very hard, there may be some gains, but they are not always happy. for example, I have read the four books and five classics of C language (C and pointer C defects and traps C expert programming C programming language (the book of the Mechanical Industry Press), and I don't understand it in many places, I often get annoyed and depressed when I cannot understand it. No one can ask. The teacher will leave after class and will not care about you. it seems that most of the professional students are also very watery. (If you don't mention school, just check it out)
Obviously, the joy of learning knowledge is certainly not as simple and convenient as playing the League of legends. Just like drinking, you can always paralyze yourself without thinking about so many rights, rights, and responsibilities. How to learn computer science well. put down your self-ambition and devote yourself to the joy and sleep in the light of the night. the bigger the freshman year is, the more inactive and inactive it will be, and occasionally think about what to do like a conscience, but look at the game and think about how painful it is to learn computer science, I still turned to invest in my own 14.4 inch laptop game. There were so many people in the dormitory, and there was no shortage of people. I like playing wild games. I don't like complicated things. It's simple and happy. so the freshman year has passed.
When the sophomore year came, the freshman year quickly rolled over. what's more, the first semester of the school didn't have a professional course. The only thing that's barely counted is the analog circuit. Oh, my God, this is hardware, it is really painful for me to study a science project. (In fact, it may be used when I study the composition principle of this thing.) However, I don't know how to take the final exam of a university. pai_^
I have asked many people about what to learn, how to learn computer science, teachers, senior students, senior students, Baidu, and csdn, various forums have also been turned around. it seems that there are many answers, which are strange. in my sophomore year, I also tried to read QT. I also read windows program design .. it seems like the cloud is in the fog .. although I have no progress, I know that I cannot be as Decadent as my freshman year. The winter in the south is really cold. I am a child from Northeast China, wearing a down jacket and sitting in a laboratory without air conditioning, it's just like it's freezing .. in this way, accompanied by a small sun, we barely spent the cold winter in the south ., (every time I use the sun, I want to go to bed .. sometimes you can only freeze yourself, but it cannot be used. undergraduates do not provide air conditioners, but the teacher's office is equipped with air conditioners. In the classroom, there are air conditioners in the ceiling of the school. I am speechless, I have to pay for my own electricity and install air conditioners. What is the school doing !)
It seems that I have mentioned too much in a mess, but I just wrote down my experiences one by one, if you only select some key words to write, it will make others think that I am writing legends, and I will read them carefully, I cannot take this sentence seriously.
In fact, I have been trying to learn many things, hitting the wall many times, and I don't know how many questions I don't understand, I also don't know how many questions I found in Baidu. however, it seems that after a Senior tells me to have a deep understanding of the computer system, I have found a direction (and it is quite painful ).. in any case, I would like to thank this senior student. After all, I went to the Chinese Emy of sciences, and it was indeed very powerful ..
It's really not thin to have a deep understanding of the computer system. In this way, I started to chew on a new book. Anyway, I am used to it. The first chapter is an overview of computer system roaming, at first, I was in the fog in the cloud. the second chapter is the binary in the computer. It looks understandable to all the binary representations. I will talk about the binary representation of floating point numbers .. kneel down, let's look at the second chapter so much, so I came to the third chapter, the third chapter is about the compilation, the compilation of such things, look at the head is not a headache? Headache! Difficult? It is not difficult. assembly is a simple and very basic language. 1 is 1 and 0 is 0. but I will also wonder how the compilation in the book is different from the compilation in other places. Why is movsbl written here? mov DWORD is written elsewhere... messy... dizzy. In any case, the compilation format in this book is the same, which makes me very pleased and gives me the courage to continue reading it, (In fact, later I learned that assembly is related to hardware, so there are a variety of compilation, the book uses the ATT format of assembly, I see another kind of thing IBM assembly, different types of compilers are used for different compilation, and the compilation is divided into 16-bit 32 64. Maybe there will be 128 in the future. But from my personal point of view, it will not reach 128 in a short time, after all, the 64-bit supported memory is not small, it is 4G * 4G, Here G is the count unit, not the capacity ).
Let me take a look at it at. Chapter 4 is the instruction flow of the processor. When I wrote this diary, this book was put in the dormitory, so I had to think about it by memory .. (I think it is better to write based on memory and remember what it is ). this chapter describes how the program runs in processing. In fact, the processor is a thing that can execute commands, but it does a variety of processing to improve efficiency, for example, each instruction can be divided into a pointer, decoding ,......... it should be 7 steps. I don't know much about it, but it also involves multi-level flow. I remember I went to the big talk processor and other e-books. I saw it anyway, but I still don't understand it !. In fact, I don't know much about this chapter ..
Next is the fifth chapter: program optimization, from the code level to the deep point of the Assembly level. optimization. that's what I understand. chapter 6 talks about the memory structure. We have to say that humans are really a great inventor. For the Von noriman system, processor + memory is a system like this, for the ability to improve performance, it is really a waste of effort. The memory mountains of all weeks, from top to bottom are registers, cache (1, 2, 3), primary storage, local file system (hard disk ), remote File System. in this order, the storage speed is getting slower and the cost is getting lower and lower, but the processor speed is very fast, and the reading speed of the primary storage cannot keep up with it. It is precisely because of the local principle that, the cache is available. It starts from level 1 cache and has Level 2 again. Level 3 is 8 bits, 16 bits, and 64 bits, respectively.
The book also explains cache hit and miss, and later mentions multithreading. In fact, this kind of high-speed cache pollution is a kind of memory freezing, I think we have been balancing our needs and efficiency. the idea is really great.
Chapter 7 is about the link. At that time, I didn't quite understand it. At that time, I also flipped through the compilation principle and looked at the lexical analysis and grammar analysis, the head is too big to read. however, the goal is to achieve what the link is. Link compiled items to one executable program (that is, exe) (this is the simplest form, and there is actually a dynamic link, do not be as narrow as I understand ).
Chapter 8 describes abnormal control flow and control exceptions. The only difference is that exceptions do not represent errors. Here we also talk about the exception of the Operating System Controlled by semaphores, which is not very understandable, but I still understand theme ideas. At least I didn't even read it... (Don't look down on my Ah Q spirit. At least I can continue watching it ..)
Chapter 9 is virtual memory. This chapter really links all the things I learned earlier. Programming is actually writing some languages that humans can understand, then translate these things into a language that the computer can understand, that is, the machine commands are stored on the hard disk, and then executed, that is, the machine commands are loaded into the memory, however, the operating system makes a clever call, namely virtual memory, which provides an illusion for all processes that each process can use all the memory from 0, in fact, it is only when the process needs to use the memory, and then allocate it to the actual memory. I want to boast more about how great humans are. In the process of learning computers, gradually, I no longer think of a computer as a magical thing. It's so stupid!
I/O. network Programming. server programming. this is almost the case. in fact, because the previous foundation is not strong, and the first fight is not strong, the more difficult it is to look at it later is obvious, so the last few images won't be too detailed. however, recently I have supplemented the following chapters. this book is really useful.
In fact, after reading this book, we can say that we have a general understanding of the computer, but this book is really hard to understand, not twice. I have read some chapters three times. Few people dare to write such a book about computer systems because it is too complicated. I also want to see the Linux kernel source code. you can check it out .. I should think about what I should do, learn knowledge, and absorb and think more. This book is really good. I also read a lot of other materials when reading this book, when I saw the assembly, I went to another compilation. When I saw the processor, I looked at Big Data Processing. Later I also looked at computer networks, TCPIP programming, and the compilation principle, composition principle, and operating system. this book is just like a thread. I have clarified my knowledge. Although I don't know much about these books, I know computers, I know what kind of position everything occupies in the computer system. I also know that I am not a math-loving person. I am too lazy to write a code to complete what I want to do, in this IOE era, I still have full confidence in computers. I also sorted out the books I bought when I was a freshman. The total amount is more than 1000 yuan... distressed ..
Here are some suggestions for new students, as two years older than you (that is, just two years in the first row );
1. Learn Baidu and everything on the Internet. As long as you learn to search, do you know the keywords? If you want to search for Google Hacking, enter an inurl in the Google search box: PhP? Id =, to see what will be found?
2. Learn to think.
3. Be interested and learn to stick to it.
4. objectively view others' opinions, what others say, what others think, and how others say, they must have independent opinions,
Be an independent thinker.
5. Don't focus too much on new technologies. Things that are fashionable also develop from below, and their appearance is only derived from solving the inconvenient problem solved by the lower layer.
6. computer science and computer technology are two different fields. My understanding is a mathematics that requires a lot of Nb, and a mathematics that does not need it, (but it seems that the underlying things should also require mathematics)
7. Broaden your knowledge. It is best to take a look at this book-a deep understanding of computer systems
I want to mislead you.
I think that when I was in my sophomore year, I used this bible to walk between the lab and the library every day. When I couldn't stay in the lab, I went to the library to see it. If the library didn't want to see it, I went back to the lab to see it, lie to yourself and change the environment. the course leader is also a lot better, but the time is used to read books. I often leave the morning for two hours to read books, or go to the library manager at two o'clock P.M. to see it and then go, or you can go back to the lab at. Don't think that there is a lot of time. Sometimes I read several pages in two hours, and I will write them in my book with paper and pen, can not see Dizzy, is also a capability .. hey hey ..
Read more books to ensure that you are not ignorant. If you want to write software, you can go to the design mode, create mathematical modeling, and look at operational research (I have not read this yet, but I have read this book) let's look at the introduction to algorithms (this is too difficult). Let's look at the book written by the building master, and the book named Wu by the white book. anyway, I didn't stick to it, or I was engaged in image processing. (I didn't do it.) I am still interested in the underlying layer. Recently, the bash execution vulnerability was reported .,, I read a lot about OpenSSL a while ago, but I really don't understand it ..
By the way, if you are interested in the Web, look at the scripting languages such as ASP, PHP, JSP, and python. I think it is also good. The browser language JS is also quite good .. the scripting language works fast .. I am confident in learning that the web page is a structure like Dom. ** P is just a script parsing method. Let's look at the computer network, it is also good to know about the computer network architecture. After reading it, I feel very comfortable. You can take the burpsuite to capture an HTTP packet.
At the bottom layer, let's look at the reverse analysis. There were a lot of books on 0-day security. I didn't remember that they all existed in my computer ..
I provided a picture of my various types of data collected at that time, which is messy and can be classified according to my own cognitive direction if you are interested.
Finally, I would like to mention the classic books (Classic books are not necessarily so easy to understand ):
Four Books and five classics of C language: C programming language (published by the Mechanical Industry Press), C and pointer, C defects and traps, C expert Programming
Data Structure: Yan Weimin, the specialized book for postgraduate entrance exams in China, has a good data structure written by the Mechanical Industry Publishing House, and a big data structure, which is easy to understand, (easy-to-understand things are generally written a little lighter, but I have read everything that he can understand. If I have not read it, I will try to recommend it as much as possible)
C ++: C ++ Primer)
I suggest you just find one ..
I still don't recommend it if I think about it. After all, I am a small dish. If I read a book, I will go to various materials, because every piece of information is a viewpoint, when many people tell you something, what you see will be comprehensive.
In fact, I wanted to write at the end of my sophomore year, but sometimes I still want to think about it. I don't want to be sold out. In the face of school education, and there may be a lot of first-year students like me who have shown themselves in the dark and confused ways. I hope you will be able to look in a little direction and be prepared for the future, it's not that easy to walk. everyone is growing up.
(I don't want to talk about school anymore. It really doesn't matter (don't ask which school I belong ))
To say more, knowing why is more important than knowing how to do it.
I wrote it for more than two hours without knowing it. I hope that people who agree with it can support this post and those who want to learn computer science can see it. I really hope that it will help you a lot, A problem that can be solved simply is not a problem, but a thing that can be done easily is not a major event. that's it.
.
By Sunday pig
2014.10.2
(Reprinted please indicate the source: http://blog.csdn.net/airuozhaoyang/article/details/39736111)
A letter to the first computer student