Reprint Please specify source: http://blog.csdn.net/j123kaishichufa/article/details/47400175
This period of time, has been watching the "in-depth understanding of computer systems." Gradually found to love, can't stop. There is a kind of brief encounter feeling. This makes you look back to your undergraduate time, why always feel that can not enter the computer door? This book also prompted oneself to think about what the computer major is learning, why to learn these? What's the connection?
I enrolled in the 2007 undergraduate, professional computer, then enrolled in a 211 school. Some people may have been exposed to this book during the undergraduate or postgraduate period, so congratulations, there is a good book to guide you to understand the computer, computer science. It was embarrassing that I was only exposed to the book this year and I was too weak. Looking back at some of the computer courses that the undergraduate time, suddenly feel those years wasted time, 4 years of undergraduate days, has not known why the school arrangements for these courses, undergraduate graduates, but also for the professional did not get started. It would be nice if someone would have been able to recommend some good books, or if a teacher could have a brief introduction to computer science. Perhaps it is my own reason, has always been so-called good students, but do not know how to search for classic valuable books.
This blog is not a technical blog. The purpose of writing is to hope that those who were as confused as me, not into the door of the computer professional undergraduates, can be a layer of their own professional knowledge of a system . (because I feel that I could not enter the door, because of the lack of systematic understanding) only you understand the system, you can realize the school's professional curriculum to the usefulness of some of the abstract difficult to understand the computer knowledge and the actual connection, will really understand, really will be the knowledge of the book into their knowledge. And these basic knowledge, it is to continue to engage in computer professional Foundation. Without foundation, what about you are a computer major?
--------------------------------------------------------------------------------------------------------------- ---------
Take our school for example. Students majoring in computer science (courses probably include these, but there are other) freshman courses are high-number, linear algebra, Physics, English, C language programming and so on. Sophomore course data structure, microcomputer principle, C + + program design, digital circuit, analog circuit. Junior, assembly language, computer composition principle, computer system structure, compiling principle, JAVA. Senior, computer network, operating system, graphics, pattern recognition and so on. These course arrangements have some reason, the reason that the school said that these courses are essential courses, basic courses, there are reasons. Experienced people, or already graduated people can see, from freshman to senior, curriculum learning is regular: from the computer professional point of view, from the level of abstraction to the specific level, from the simple high-level to the complex bottom, from the universal level to the domain level (such as).
This arrangement of computer courses (knowledge) system, is very helpful for undergraduate simple introduction:
STEP1: When you learn C programming, a simple program can draw the results we want, it's amazing. "The first time" contact with the computer, you can program a procedure, for freshman students, incredible. Just simply know that the computer is used to perform some programs. So what's the program?
program = data + algorithm . In the initial stage, the algorithm used is only a mathematical basic operation, the data can be a mathematical meaning of the whole, but in addition, there are abstract data types. How do you organize your data so that our C programs are written more tall, allowing the program to perform more complex tasks? So the data structure course is coming.
STEP2: learning C programming and data structure, we have begun to learn programming. But we still confused, why can the computer gracefully run our program? We just write the program at the level of abstraction, but it's not clear how the physical plane, or actually a computer machine, can do that? So let's think about what a C-language program did before it got the computer running.
for a C source program, it has to be compiled into assembly language and then converted to machine language by the assembler. machine language is composed of 0, 12 binary code, and the computer is an electronic machine, it can only recognize 0 1 code, so the C language needs to be compiled, compiled, converted to machine language, the computer can recognize and execute this. From the C language to the machine language (0 1 code), the process is exactly what, then the assembly language + compiler principle (compiler) will tell you.
To this step, we do not feel that a C program, no longer feel very abstract, very ethereal, as if a little more specific points.
STEP3: Here comes the question again. Computer Recognition 0 1 code, that is, machine language, that computer how to run this line of 0 1 code, how he knew 0 1 the meaning of the code, how to perform the desired operation . This involves the design of the computer's physical hardware, as well as the processor instruction system. Computer physical hardware, the core of the computer has a lot of circuits, these hardware knowledge, digital circuits and analog circuits these two knowledge will tell you. When you know this, you'll know that all the calculations and data transfer are done by hardware real deal. But the computer hardware is very complex, there are really many circuits, and the storage of data things, good fragmentary ah. So don't worry, the computer architecture will combine these bits and pieces and tell you a whole logic that tells you how the computer accesses a 01 machine instruction or data, identifies the function of the instruction, and transmits it to the computer's computing processing unit for calculation, and outputs the result.
STEP4: With this knowledge, we can probably imagine: a C language Program to the final run to get the results we want, which experienced the process and bumpy. For a program of abstraction, we can understand it concretely, don't we?
Now we can write our program in our own right. but our program is to use the hardware directly. If we use the computer hardware resources directly, if we write the wrong program, the machine will not be broken . Don't worry, there are operating systems on. We write the program (user program) is not directly to use the hardware resources of the machine, then he is not safe, it is too troublesome. The operating system is located between the hardware and our programs, and it is complex to directly manage hardware resources. Our program uses the operating system to use hardware resources (such as storage resources, etc.). Of course, there are other functions of the operating system, in general, with the operating system, we write the program more convenient, do not need to specify in the program which storage unit, that is, write programs generally can not worry about my computer hardware long what kind of (of course, in addition to embedded programs, etc.), and the hardware machine is more secure, will not be directly disturbed by our procedures.
STEP5: pretty much. Basic knowledge, that is, universal knowledge. For the database, network, graphics, are borrowing computer to achieve some special, large-scale functions, involving specific areas.
For these, you can probably understand a little bit first. And so specific in that direction, and then careful study on it.
Knowing this, I believe you can get started with the computer. We not only acquired a number of scattered knowledge, but also from the overall grasp of the computer professional framework system. For any of the relevant knowledge, we will not feel so abstract, incomprehensible. In fact, the process of learning knowledge is a way from abstraction to concrete, from high-level to the bottom, from Universal Foundation to domain knowledge.
Come on, hopefully this blog will help those students who are just in touch with the computer.
Copyright NOTICE: This article for Bo Master original article, without Bo Master permission not reproduced.
Talk about my understanding of computer Science: Introduction to Computer science (problem-guided learning approach)