"Hacker" must have knowledge and growth road
Often someone asked me how to be a real hacker, I think a hacker must have the following knowledge, step by step from Level 1 to Level 5. The difficulty of Level 1 to Level 5 is increased, if it is assumed that the difficulty of Level 1 is 0.1, then the difficulty coefficient of Level 2 is 0.2, Level 3, 4, 5 is 0.4, 0.8 and 1.6, respectively. Level 1: Getting Started Phase C / C : Level 1 "hacker" must be able to use C / C , I hope that the entry will not be scared by it. Mathematics: Math is essential in computers, whether it is programming or underlying development. From the beginning, you can master the thinking of mathematics, which will help it later. Level 2: Basic Phase Computer System: To master compilation, understand the relationship between computer memory, CPU, and instructions, and find some basic structures and principles of computer hardware. Data Structures: Mainly in C / C , various algorithms, such as Linked List, Tree, Queue, Stack, HEAP ..., if you can implement all the above structures, then your C / C is universally. Object Oriented Programming: I understand the object-oriented principle, know that in addition to C , there are also object-oriented languages such as Java, and object-oriented is still very helpful for you to develop large programs later. Level 3: In-depth learning phase Systems programming: Understand how to design and implement system software, focusing on synchronization and distributed systems of threads. Computer System Architecture: Very biased towards hardware, to understand the details of computer performance, instruction work, DataPath, Pipeline, memory Cache, virtual memory, etc. Simple hardware can be designed with a hardware description language (for example: vHDL). Network Communications: Understand the principles of network communication and several common protocols, and can use socket to program these theoretical or protocols. Programming Languages: Analyze the advantages and disadvantages of various types of programming languages, lay the foundation for later writing, which can be divided into function language, logical language, object-oriented language, etc. It is also necessary to understand the implementation of the previous work of the compiler, such as Lexical, Syntax, Semantic Analysis. Level 4: Actual Phase Compilers: Realize the real programming language, you can build the source program into assembly language and generate an executable. Advanced Communications and Network Systems: Master TCP / IP details and study the characteristics of various networks, implementation methods (especially methods of mac layers) and development prospects, such as Wireless, SONET, Ethernet, ATM, etc. Advanced Computer System Architecture: Designed and implemented a simple CPU, including instruction sets, architectures, optimization algorithms, and more. Advanced Operating System: Designed and implemented an operating system that can run on a normal PC, including process management, I / O, memory management, file management, and more. Level 5: Research Innovation Stage Level 5 is a sublimation of Level 4, when you master the necessary knowledge and practice, you have to study new technology.